One runtime, many agents — evolving as you work.
Every layer is swappable at runtime. No lock-in.
Bring any LLM — from Anthropic to Z.ai. Switch with /model.
Exa, Tavily, Brave, or Serper. Switch with /search.
Skills, plugins, MCP servers, and subagents — Claude Code compatible, run unmodified.
Markdown-defined agent identities, scoped per user or project, plus lifecycle hooks.
A single Go binary. 12 MB, ~0.01s startup, no runtime.
Sessions auto-save, resume, and fork, with automatic context compaction.
Every few turns, a background reviewer distills your recent work into durable memory and reusable skills — so the agent levels up as you work, no manual tuning. Level 1 is live today; deeper levels are on the way.
A single ~12 MB binary, zero runtime dependencies — the same file runs unchanged on a laptop, a cloud node, or a 256 MB edge device.
scratch containers
⚙️ CI steps & lifecycle hooks
🔒 Air-gapped & locked-down hosts
No Node.js, no Python, no node_modules. Why small matters & where it runs →
Same model (claude-sonnet-4-6) on Apple Silicon, comparable feature set.
| Metric | San | Claude Code | Advantage |
|---|---|---|---|
| Download size | 12 MB | 63 MB + Node 112 MB | 5× smaller |
| Disk footprint | 38 MB | 175 MB | 4.6× smaller |
| Startup time | ~0.01s | ~0.20s | 20× faster |
| Startup memory | ~32 MB | ~189 MB | 5.8× less |
| Simple task | ~2.4s / 39 MB | ~10.4s / 286 MB | 4.3× faster |
| Tool-use task | ~3.3s / 39 MB | ~26.0s / 285 MB | 7.9× faster |
Go native compilation vs Node.js V8/JIT/GC overhead. Reproduce the numbers →
Open source under Apache 2.0. Star the repo if it's useful — it genuinely helps.
Two ways in — WeChat for the Chinese community, Slack for everyone else.
关注公众号「极客外传」· 回复 san 或 三 入群
Scan or join us on Slack