First run
Configure providers, then run a routed task with full transcript and cost tracking.
sparrow setup sparrow run "explain this repository and list the risky files"
Sparrow is a single-binary, Rust-native agent cockpit for builders who refuse to be locked in. One CLI. Git-backed checkpoints. Budget-aware routing. Every run is visible. Replayable. Yours.
Every agent framework out there is someone else's product strategy in disguise. Cloud-only. Closed weights. Pricing tiers behind your work. Your repo, their rules.
API keys, rate limits, surprise invoices, model deprecations. Switch provider, lose your memory.
You can see the input and the output. The middle? Pray and diff. Roll back? Hope you have a commit.
And your own streaming setup. And a doctorate in llama.cpp flags.
Restart tomorrow, teach it everything again. No memory. No continuity. No identity.
Your code. Your data. Your tokens. Your time. Sparrow is built around all four.
Every mutating action snapshots a checkpoint. Roll back the workspace with one command. No mystery state. No "what just happened".
SQLite facts. Local knowledge graph. SOUL files. Your context lives in ./.sparrow/.
Cloud is an explicit fallback, never a default.
Each task is classified and routed to the cheapest capable model. Same answer, fractions of the cost. Set a per-run cap. Watch it in real time.
Full transcript. Tool calls. Token counts. The exact model that answered. Replay any past run, tweak the input, diff the output.
Sparrow ships with the surfaces real agents need — terminal, web, gateway — not just a CLI that pretends an LLM is a coworker.
Animated TUI cockpit. sparrow run, sparrow chat, --json for CI,
NDJSON streams for hooks.
Live route / token / cost / context at http://127.0.0.1:9339/. Drawer panels,
slash palette, agent picker.
Linux bwrap wrapper, Docker, SSH, or Git worktree. Pick the blast radius.
Permissions, not promises.
SQLite facts + knowledge graph. .agent.md SOUL files. Guarded skill registry.
Full transcripts retained.
Browser tool baked in. Gated screenshot, click, type. The web is the filesystem, when you need it.
Telegram, Discord, Slack, WebSocket API. Honest errors, not silent failures. Your agent, where you are.
Sparrowdev.com is the public documentation surface: quick answers, CLI examples, tool API references, and short video tutorials in one static page.
Configure providers, then run a routed task with full transcript and cost tracking.
sparrow setup sparrow run "explain this repository and list the risky files"
Every mutating batch creates a checkpoint, so recovery is a command instead of a panic.
sparrow checkpoint list sparrow rewind abc123
Persist entities and relationships locally, then optionally sync them to Neo4j.
sparrow memory graph upsert-node project:sparrow Sparrow --kind project sparrow memory graph search sparrow
Install the Playwright runtime and let gated tools screenshot, click, type, and inspect.
npm install npm run browser:install sparrow run "open the local webview and take a screenshot"
The commands agents and humans call most often.
sparrow run <task> route and execute a tasksparrow plan <task> produce a read-only plansparrow memory graph ... manage graph nodes/edgessparrow console --port 9339 open the WebView cockpitCore tool names and capabilities exposed to the engine.
browser navigate, screenshot, extract, click, type, evaluatecomputer screenshot, click, type, press with Exec gatingknowledge_graph upsert/search/neighbors/export/sync_neo4jexec, fs_read, edit, gitLocal HTTP endpoints used by the cockpit and slash palette.
GET /commands slash commands with descriptions and usagePOST /run submit a task to the active enginePOST /cli run non-interactive Sparrow commandsGET /memory, /tools, /models, /statusInstall, run setup, add providers, and start the WebView cockpit.
Permissions, checkpoints, diffs, and restoring the workspace after a bad batch.
Create graph entities, inspect neighbors, then use Playwright-backed browser actions.
A sparrow doesn't guess. It routes, plans, executes, observes, and emits. You can read the whole loop.
# every run is a file you can grep, diff, and replay [run] id = "spar_01HX9P3K..." task = "ship the launch page" started = "2026-06-04T17:44:51Z" budget_usd = 0.50 checkpoint = "abc123" [routing] classifier = "build/web" chain = ["qwen2.5-coder:7b", "claude-sonnet-4.5"] resolved_on = "qwen2.5-coder:7b" cost_usd = 0.00 latency_ms = 312 [[steps]] i = 1 tool = "fs.write" path = "site/index.html" bytes = 18432 status = "ok" [[steps]] i = 3 tool = "llm.fallback" reason = "headline copy needs a stronger model" resolved_on = "claude-sonnet-4.5" cost_usd = 0.02 [summary] total_usd = 0.02 total_ms = 4102 local_share = 0.94 # 94% of tokens stayed on your machine
→ .sparrow/ is just files. Grep them. Commit them. Back them up.
Sparrow v0.3.6 is shipping today. Here's the path that got us here — and the next 90 days.
Rust binary. Ollama routing. sparrow run. The barest proof that local-first was possible.
Git-backed snapshots. Replayable runs. The first time "sparrow broke my repo" was followed by "sparrow rewind abc123" and laughter.
shippedLive dashboard on :9339. Telegram, Discord, Slack, WebSocket. Browser & computer-use tools.
The cockpit became a real surface.
Multiple sparrows, one task graph. Specialists that hand off context. .agent.md packs you can
install from a URL.
Background processes that survive reboots. Scheduled plans. Cross-project memory that actually makes the second project easier than the first.
soon"Sparrow is what happens when someone who actually maintains a repo at 2am builds an agent. Every feature is a scar from a real failure. That's why it works."// the sparrow team, slightly tired
No account. No API key required. Bring your own models, or use the cloud as a fallback when you choose to. The whole thing is MIT.
Pre-built binaries for Linux / macOS / Windows · Source fallback requires Rust 1.96+ · Optional: Ollama, Docker, Playwright
One star helps a lot. A "ship-it" issue helps more. And if Sparrow saves your repo at 2am — tell someone.