▍ 01/ git-native sessions
Every turn is a commit. Fork from any of them.
Sessions live as a sidecar bare repo with per-session tree and trace
refs that grow with every turn. The history is a branching graph you can walk, resume, search, and replay —
not a flat chat log. Rewind to any earlier turn into a fresh session; the parent is never modified.
refs/sessions/7a3f9c2/tree · ~/code/myproject
* turns/6 edit CHANGELOG.md a1f2…cc91
* turns/5 bash pnpm test useScroll 9b8e…2701
* turns/4 edit src/hooks/useScroll.ts 3c4d…f80a
│ ╲
│ ╲── fork → session a4e1b0 (--at turns/4)
│ * turns/4' alt: useSyncExternalStore
│
* turns/3 grep "useScroll" — 7 sites 6e21…0042
* turns/2 read useScroll.ts f9aa…b1c4
* turns/1 session start 0000…7a3f
signed · ed25519 / commit
trace ref · every tool call
tree ref · mutating turns
parent never rewritten
▍ 02/ plugins, not internals
Almost nothing is built in. Swap any tool.
Stado core is the runtime, capability sandbox, and signed-distribution lifecycle.
fs.read, shell.bash, web.fetch,
rg.search — even auto-compact — ship as signed WASM plugins.
Don't like one? Rewrite it in any language that targets wasm.
fs.readwasm · goswappable
shell.bashwasm · goswappable
web.fetchwasm · goswappable
rg.searchwasm · goswappable
auto-compactwasm · goswappable
Go
Zig · 800 B
Rust
any wasip1
ed25519 · trust-pinned
▍ 04/ mcp server
Bring stado's tools to your other agent.
stado mcp-server exposes your entire installed registry over stdio MCP.
Mount it in Claude Code, Codex, or anything that speaks MCP — and inherit every plugin you've signed and trusted locally.
shell.bashpersistent PTY + VT100mcp
web.clientstateful · cookie jarmcp
rg · ast-grepcode searchmcp
lsp.finddefinitions · refsmcp
your-pluginwhatever you installmcp