Savannah — Development skill for Claude Code
Claude-to-Claude agent mesh for your LAN.
How to install Savannah
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open dbjwhs/savannah and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Savannah does
Claude-to-Claude agent mesh for your LAN. Zero-config mDNS discovery, typed IDL contracts, streaming RPC, and process-supervised headless agents — built on song, faced with MCP so stock Claude Code needs zero forking.
Alternatives in Development
- Analyze Stock — 完整深度分析一只股票(22 维数据 + 66 位大佬量化评委 + 22 种机构分析方法 + 杀猪盘检测 + Bloomberg 风格 HTML 报告) 6.6k ★
- /token Scan — Fast rug pull detection for meme coins and token contracts 1.7k ★
- Android Rpc — Android Debug RPC 1.3k ★
README
savannah
Claude-to-Claude agent mesh for your LAN. Every machine runs `savannahd`, a small C++20 daemon that exposes that machine's headless Claude as a typed, streamed, process-supervised service on the [song](https://github.com/dbjwhs/song) substrate. An MCP shim (planned, Phase 4) gives stock Claude Code an `ask_peer` tool, so one agent can delegate to another mid-task on its own judgment. No forked Claude Code, no broker, no cloud relay.
Claude Code (A) Claude Code (B)
| MCP: ask_peer("linux-box", ...) ^
v | spawns claude -p per ask
peer shim (song client) savannahd (song service)
| ^
+---- mDNS discovery / HMAC / stream ----+
(song wire)
`DESIGN.md` is the source of truth for architecture and rationale. `CLAUDE.md` holds the working conventions and the pinned wire contracts.
What works today
- Solo node (Phase 1):
savannah ask local "..."spawnssavannahdover local pipes, which forks the agent, maps its stream-json output to typed chunks (TEXT, TOOL_EVENT, RESULT), and streams them back. Timeout, cancel, crash synthesis, and cost reporting per ask. - Streaming hardening (Phase 2, core cases): 4 MiB text blocks survive intact (split into 512 KiB chunks around song's 1 MB string cap), UTF-8 split mid-codepoint at both the pipe layer and the chunk layer reassembles byte-identically, garbage JSON lines are skipped, an agent that dies or hangs produces an honest error trailer.
- Concurrent clients over loopback TCP:
savannahd --tcp PORTserves multiple clients (thread per client). Single-flight is enforced: a second ask while one is in flight gets an immediatebusyerror trailer;cancelkills the in-flight agent and frees the node. ask_peerfrom stock Claude Code (Phase 4):shim/peer.pyis an MCP stdio server in pure stdlib Python
Related Skills
Codex Headless
Programmatically drive the real OpenAI Codex CLI in a PTY — structured events, live rollout-stream token strea
Claude Code Headless
Programmatically drive the real Claude Code CLI in a PTY — structured semantic/screen/committed events, live t
Learn Grok Bot
Learn Grok Bot's desktop agent architecture in 16 lessons: Electron process isolation, trusted RPC, turn loop,
Codex Agent SDK Go
Go SDK for the OpenAI Codex CLI app-server transport with JSON-RPC 2.0, typed events, approvals, MCP config, a
CLI Agent MCP
MCP (stdio) server that lets Claude Desktop drive a local headless CLI coding agent (Claude Code or Cursor) as
Generate Idl Client
Generate TypeScript client from Solana program IDL using Codama or Anchor
Related Agents
API Contract Auditor
Internal dynos-work agent. Audits API, event, RPC, and schema contracts for compatibility, error semantics, an
Runtime Debugger
Use this agent PROACTIVELY when debugging runtime adapter issues — session discovery failures, WebSocket RPC e
Blender Validator
Runs deterministic, code-only checks (dimensions, pivot, naming, mesh stats) against a built Blender asset and