Local agent per repo
Every repo gets a Skep daemon. Own index. Own git state. Own task queue. No central server. No cloud. No API keys.
A persistent, always-warm code index per repo, served to Claude Code over MCP. Task queue, approval gates, and cross-repo delegation included.
curl -fsSL https://skep.sh/install.sh | shSingle binary · ~17 MB · Go · MIT · Linux, macOS, WSL2
The hot index is the point. Claude Code can already work across
repos — point it at a directory and it’ll Read and Grep its way
around. The problem is cold starts. Every session re-scans the same
files, re-discovers the same symbols, and burns input tokens on
context the LLM already had yesterday.
Skep runs a local daemon per repo that keeps a tree-sitter + SQLite
FTS5 index of the code always warm. Claude Code queries the
index through MCP tools (search_symbols, get_file_context,
get_call_graph) instead of reading files from scratch. You feel it
in three ways:
search_symbols before writing a file path, the plan cannot
reference a function that doesn’t exist. (The lightweight
classifier runs without MCP — faster, but un-grounded; we accept
that trade-off deliberately.)Read / Grep /
Glob loops. Real numbers come from
Benchmarking Skep — run it on your own
workload if the cost model matters to your decision.The index stays warm as long as the daemon is running (skep daemon
in each repo, usually spawned in a hidden tmux session by
skep init). On top of the hot index, Skep adds the scaffolding a
fleet of Claude sessions actually needs: a task queue with dedup and
classification, approval gates for large changes, and cross-repo
delegation that lets one session hand structured work to another
over an MCP socket.
Local agent per repo
Every repo gets a Skep daemon. Own index. Own git state. Own task queue. No central server. No cloud. No API keys.
Cross-repo MCP delegation
Explicit create_remote_task + wait_remote_task. The sender
blocks until the peer finishes. One approval per chain, not per pane.
The cockpit
A single tmux session where every repo’s Claude session runs in
its own window. The status line pulls live state from every
daemon — tasks executing, tasks pending, which repo is waiting on
approval. You get ambient awareness of all your agents without
giving up a permanent pane. One skep cockpit setup command
wires up the layout, keybindings, and status bar.
Three commands — no polling, no manual context passing:
$ skep task create "add /auth/login to backend, wire the mobile client"$ skep task approve 1$ skep task run 1# backend daemon classifies, plans, executes.# android daemon blocks on wait_remote_task until backend is done.# android then executes the local changes against the real new routes.Concrete, end-to-end runs. Copy the commands, follow along, ship a real change.
Skep is a deliberately narrow tool. It earns its keep once you’re juggling three or more repos and the coordination between them starts living in your head — cross-service refactors, multi-repo features, shared contracts between a backend and its clients.