New in v0.2: signatures for AI agents

Sprout is a tree command that understands projects. It respects your .gitignore, marks changes and hotspots in place, shows a pull request as a tree, and hands your agent a compact map with real signatures.

Read the docs

Also on Scoop, apt, dnf and apk, curl | sh and go install.

trailhead
$

Real output of sprout on a sample Go and React project, partway through a feature branch.

Context that fits the window

sprout --ai writes a plain-text map for a prompt or an agent. It covers what the project is, its stack, entry points, CI and config, uncommitted work, recent hotspots and the layout. Then come the key files: the code everything else uses most, with real function and type signatures.

It never includes file contents. You set a token budget; folders open breadth-first while the map still fits, and your own code opens before tests and fixtures.

500
3001250, everything fits

Drag the slider. Lines that change light up.

sprout --ai --budget 500

Know where to start reading

sprout --entry gives a new teammate a reading order: what the project is, where execution starts, then the files the rest of the code depends on most.

The ranking comes from real imports and references in Go, TypeScript, JavaScript, Python, Rust, Java and Kotlin. Tests don't vote. It works on repositories you haven't cloned, too.

Try it on any reposprout github.com/owner/repo --entry
How the ranking works
sprout --entryReading order for trailhead
  1. 1README.mdwhat the project is
  2. 2cmd/api/main.goentry point
  3. 3cmd/seed/main.goentry point
  4. 4web/src/main.tsxentry point
  5. 5web/src/lib/types.tsused by 5 files
  6. 6web/src/lib/api.tsused by 4 files
  7. 7internal/trails/model.goused by 3 files
  8. 8internal/trails/store.goused by 3 files
  9. 9internal/conditions/feed.goused by 2 files
  10. 10internal/tiles/cache.goused by 2 files
  11. 11internal/trails/handler.goused by 2 files
  12. 12web/src/components/ConditionBadge.tsxused by 2 files
  13. 13internal/auth/middleware.goused by 1 file
  14. 14internal/auth/session.goused by 1 file
  15. 15internal/tiles/prefetch.goused by 1 file

Give your coding agent the map

Agents burn a large share of their context finding their way around, one ls, grep and file read at a time. Sprout runs as an MCP server, so they get oriented in a single call.

Or add { "command": "sprout", "args": ["mcp"] } to any MCP client.

  • project_mapThe --ai map with key signatures. Agents are told to call it first.
  • reading_orderWhere to start, and why.
  • treeAny folder, optionally with git status or churn.
  • diff_treeWhat a branch changed, as a tree.

Read-only. Paths stay inside the project, symlinks included, and the server never clones.Setup and safety

What your agent receives
agentproject_map(budget: 1250)
# trailhead
Trail maps and conditions for hikers, online and off.

stack: Go (go.mod)
languages: TypeScript 35%, Go 33%, SQL 9%, Markdown 7%, YAML 7%, JSON 5%
size: 90 files, 22 directories
git: on feature/offline-maps, uncommitted: ? TODO.md, D docs/api.md, M internal/tiles/prefetch.go, M web/src/components/DownloadButton.tsx
most changed (90d, commits): web/src/styles/app.css (18), web/src/components/TrailMap.tsx (14), internal/trails/handler.go (10), internal/trails/store.go (7), web/src/lib/api.ts (6)
entry points: cmd/api/main.go, cmd/seed/main.go, web/src/main.tsx
…
agentreading_order()
  1. README.md                              what the project is
  2. cmd/api/main.go                        entry point
  3. cmd/seed/main.go                       entry point
  4. web/src/main.tsx                       entry point
  5. web/src/lib/types.ts                   used by 5 files
…

Fast on big repositories

Sprout reads only what the output needs and parses source files in parallel. A full tree of Kubernetes, all 31,412 files, takes under a quarter of a second.

Apple M4, warm filesystem cache, Sprout at 636d292. Medians from a controlled, interleaved run.

Controlled before/after measurements, and what didn't improve

sprout0.23 s
sprout --json0.33 s
sprout --entry0.57 s
sprout --ai0.72 s

Install in one line

A single binary with no dependencies. git is only needed for git features.

Includes shell completions and man sprout.

  1. 1
    Run it in a projectsprout
  2. 2
    Find your way insprout --entry
  3. 3
    Hand it to your agentclaude mcp add sprout -- sprout mcp