by jayminwest
Multi-agent orchestration for AI coding agents — pluggable runtime adapters for Claude Code, Pi, and more
# Add to your Claude Code skills
git clone https://github.com/jayminwest/overstoryLast scanned: 4/29/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-04-29T06:25:32.668Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}overstory is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by jayminwest. Multi-agent orchestration for AI coding agents — pluggable runtime adapters for Claude Code, Pi, and more. It has 1,332 GitHub stars.
Yes. overstory passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/jayminwest/overstory" and add it to your Claude Code skills directory (see the Installation section above).
overstory is primarily written in TypeScript. It is open-source under jayminwest on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh overstory against similar tools.
No comments yet. Be the first to share your thoughts!
Multi-agent orchestration for AI coding agents.
No longer maintained. Overstory is no longer actively maintained and this repository is archived (read-only) — I am not reviewing issues or merging pull requests here anymore. Thank you to everyone who contributed. The code stays MIT-licensed, so feel free to fork and carry it forward. Active development has moved to Warren, a self-hostable control plane for sandboxed cloud agents and overstory's spiritual successor — start there for anything new.
Overstory turns a single coding session into a multi-agent team by spawning worker agents in isolated git worktrees, coordinating them through a custom SQLite mail system, and merging their work back with tiered conflict resolution. New projects spawn Claude agents headless and surface them through a web UI (ov serve); tmux attach is the opt-in escape hatch for live steering. A pluggable AgentRuntime interface lets you swap between 11 runtimes — Claude Code, Pi, Gemini CLI, Aider, Goose, Amp, or your own adapter.
Warning: Agent swarms are not a universal solution. Do not deploy Overstory without understanding the risks of multi-agent orchestration — compounding error rates, cost amplification, debugging complexity, and merge conflicts are the normal case, not edge cases. Read STEELMAN.md for a full risk analysis and the Agentic Engineering Book (web version) before using this tool in production.
Requires Bun v1.0+ and git. tmux is optional — only needed if you want to spawn workers with --no-headless or attach to a coordinator/worker pane directly. At least one supported agent runtime must be installed:
claude CLI)pi CLI)copilot CLI)codex CLI)gemini CLI)agent CLI)sp CLI)opencode CLI)aider CLI)goose CLI)amp CLI)bun install -g @os-eco/overstory-cli
Or try without installing:
npx @os-eco/overstory-cli --help
git clone https://github.com/jayminwest/overstory.git
cd overstory
bun install
bun link # Makes 'ov' available globally
bun test # Run all tests
bun run lint # Biome check
bun run typecheck # tsc --noEmit
# Initialize overstory in your project
cd your-project
ov init
# Install hooks into .claude/settings.local.json
ov hooks install
# Start a coordinator (persistent orchestrator)
ov coordinator start
# Open the web UI — primary operator surface for the swarm
ov serve # then open http://localhost:7321
ov serve is where you watch the fleet, read the mail bus, and inspect
per-agent timelines. New projects spawn Claude workers headless by default,
so the UI sees them with full structured-event fidelity.
Other common commands:
# Spawn an individual worker agent (coordinator usually does this for you)
ov sling <task-id> --capability builder --name my-builder
# Force a worker into tmux when you want to attach mid-session
ov sling <task-id> --capability builder --name my-builder --no-headless
tmux attach -t ov-my-builder
# Inspect state from the CLI (also visible in the UI)
ov status
ov dashboard # live TUI alternative to the web UI
ov mail check --inject
ov nudge <agent-name> # send a follow-up to a stalled agent
Every command supports --json where noted. Global flags: -q/--quiet, --timing, --project <path>. ANSI colors respect NO_COLOR.
| Command | Description |
|---|---|
ov init |
Initialize .overstory/ and bootstrap os-eco tools (--yes, --name, --tools, --skip-mulch, --skip-seeds, --skip-canopy, --skip-onboard, --json) |
ov sling <task-id> |
Spawn a worker agent (--capability, --name, --spec, --files, --parent, --depth, --skip-scout, --skip-review, --max-agents, --dispatch-max-agents, --skip-task-check, --no-scout-check, --runtime, --base-branch, --profile, --headless, --no-headless, --recover, --json) |
ov stop <agent-name> |
Terminate a running agent (--clean-worktree, --json) |
ov prime |
Load context for orchestrator/agent (--agent, --compact) |
ov spec write <task-id> |
Write a task specification (--body) |
ov discover |
Discover a brownfield codebase via coordinator-driven scout swarm (--skip, --name, --attach, --watchdog, --json) |
ov update |
Refresh .overstory/ managed files from installed package (--agents, --manifest, --hooks, --dry-run, --json) |
| Command | Description |
|---|---|
ov coordinator start |
Start persistent coordinator agent (--attach/--no-attach, --watchdog, --monitor, --profile) |
ov coordinator stop |
Stop coordinator |
ov coordinator status |
Show coordinator state |
ov coordinator send |
Fire-and-forget message to coordinator (--subject) |
ov coordinator ask |
Synchronous request/response to coordinator (--subject, --timeout) |
ov coordinator output |
Show recent coordinator output (--lines) |
ov coordinator check-complete |
Evaluate exit triggers, return completion status |
ov orchestrator start |
Start multi-repo orchestrator agent (--attach/--no-attach, --watchdog, --profile) |
ov orchestrator stop |
Stop orchestrator |
ov orchestrator status |
Show orchestrator state |
ov orchestrator send |
Fire-and-forget message to orchestrator (--subject) |
ov orchestrator ask |
Synchronous request/response to orchestrator (--subject, --timeout) |
ov orchestrator output |
Show recent orchestrator output (--lines) |
ov supervisor start |
[DEPRECATED] Start per-project supervisor agent |
ov supervisor stop |
[DEPRECATED] Stop supervisor |
ov supervisor status |
[DEPRECATED] Show supervisor state |
| Command | Description |
|---|---|
ov mail send |
Send a message (--to, --subject, --body, --type, --priority) |
ov mail check |
Check inbox — unread messages (--agent, --inject, --debounce, --json) |
ov mail list |
List messages with filters (--from, --to, --unread) |
ov mail read <id> |
Mark message as read |
ov mail reply <id> |
Reply in same thread (--body) |
ov nudge <agent> [message] |
Send a text nudge to an agent (--from, --force, --json) |
| Command | Description |
|---|---|
ov group create <name> |
Create a task group for batch tracking |
ov group status <name> |
Show group progress |
ov group add <name> <issue-id> |
Add issue to group |
ov group list |
List all groups |
| Command | Description |
|---|---|
ov merge |
Merge agent branches into canonical (--branch, --all, --into, --dry-run, --json) |
| Command | Description |
|---|---|
ov status |
Show all active agents, worktrees, tracker state (--json, --verbose, --all) |
ov dashboard |
Live TUI dashboard for agent monitoring (--interval, --all) |
ov inspect <agent> |
Deep per-agent inspection (--follow, --interval, --no-tmux, --limit, --json) |
ov trace |
View agent/task timeline (--agent, --run, --since, --until, --limit, --json) |
ov errors |
Aggregated error view across agents (--agent, --run, --since, --until, --limit, --json) |
ov replay |
Interleaved chronological replay (--run, --agent, --since, --until, --limit, --json) |
ov feed |
Unified real-time event stream (--follow, --interval, --agent, --run, --json) |
ov logs |
Query NDJSON logs across agents (--agent, --level, --since, --until, --follow, --json) |
ov costs |
Token/cost analysis and breakdown (--live, --self, --agent, --run, --bead, --by-capability, --last, --json) |
ov metrics |
Show session metrics (--last, --json) |
ov run list |
List orchestration runs (--last, --json) |
ov run show <id> |
Show run details |
ov run complete |
Mark current run as completed |
| Command | Description |
|---|---|
ov hooks install |
Install orchestrator hooks to .claude/settings.local.json (--force) |
ov hooks uninstall |
Remove orchestrator hooks |
ov hooks status |
Check if hooks are installed |
ov worktree list |
List worktrees with status |
ov worktree clean |
Remove completed worktrees (--completed, --all, --force) |
ov watch |
Start watchdog daemon — Tier 0 (--interval, --background) |
ov monitor start |
Start Tier 2 monitor agent |
| `ov monitor st |