Session Orchestration Tools
Tools that manage multiple AI coding agent sessions — spawning, monitoring, dashboards, lifecycle management.
Parent: Agentic Development Tools
Arbor
| Repo | github.com/penso/arbor |
| Language | Rust (nightly, edition 2024) + TypeScript (web UI) |
| Architecture | 12-crate workspace: gui, httpd daemon, core, terminal-emulator, ssh, mosh, symphony, mcp, cli |
| UI | GPUI native desktop app (Zed’s GPU-accelerated framework) + Vite web UI |
| Agent detection | Claude Code, Codex, Pi, OpenCode — reads session files, shows working/waiting state |
| Terminal | Own PTY daemon via portable-pty, sessions persist across app restarts |
| tmux | None — replaces tmux entirely with its own multiplexing |
| Maturity | 487 commits, pre-1.0 (v0.1.0), excellent README, Homebrew formula, CI/releases |
What it does well
- Full desktop workstation: embedded terminal, side-by-side diffs, PR review, agent chat, 38 themes, command palette
- Daemon persistence: PTY sessions survive app restarts (conceptually like tmux server)
- MCP server (
arbor-mcp): exposes repos, worktrees, terminals, processes, tasks, agent activity - Multi-repo worktree management with issue linking (GitHub/GitLab)
- Symphony orchestration (optional): workflow runtime with Linear integration, Codex runner, rate-limit tracking
- Remote outposts: SSH/Mosh transport for remote worktree management
- Web UI: synced with native app, enables remote access
What it lacks (vs ws)
- No tmux — can’t
tmux attachfrom a bare terminal - Desktop app paradigm — heavier than a TUI for quick checks
- Rust nightly dependency
- Single maintainer (bus factor)
Evaluation for extending
Arbor is the strongest candidate for extending rather than building from scratch. Adding tmux session support to its daemon would bridge the main gap. The 12-crate architecture is clean and modular. The GPUI framework is powerful but niche (Zed-specific). The web UI is more practical for remote monitoring than any TUI.
Key question: is the GPUI dependency acceptable, or would you want to strip the native GUI and use only the daemon + web UI + CLI?
Overstory
| Repo | github.com/jayminwest/overstory |
| Language | TypeScript, Bun runtime |
| Architecture | Commander.js CLI, SQLite persistence, tmux as execution substrate |
| UI | Raw ANSI TUI (no framework — chalk + escape codes, polling every 2s) |
| Agent support | 8 runtimes: Claude Code, Sapling, Pi, Copilot, Cursor, Codex, Gemini, OpenCode |
| Terminal | tmux sessions (deep integration) |
| tmux | Core substrate — all agent sessions are tmux sessions |
| Maturity | 1,237 commits in ~1 month, v0.9.1, single developer, excellent docs |
What it does well
- tmux-native: spawns agents in tmux with proper env injection, PATH setup, nesting guard removal
- Git worktree isolation: each agent gets its own checkout
- Inter-agent coordination: SQLite mail system (8 message types), FIFO merge queue, 4-tier conflict resolution
- Hierarchical agents: orchestrator → coordinator → lead → workers (scout, builder, reviewer, merger, monitor)
- Watchdog health monitoring: 3-tier system (mechanical daemon, AI-assisted triage, monitor agent)
- 36 CLI commands across workflow, coordination, messaging, merge, observability
- Token/cost instrumentation per agent, per run, per capability
What it lacks
- Dashboard is raw ANSI (no scrolling, no interaction beyond Ctrl+C) — worse than Bubbletea
- TypeScript/Bun — not Go or Rust
- Extremely heavyweight for “just manage N sessions + dashboard”
- Single developer, extremely rapid development (1,237 commits in 1 month raises sustainability questions)
- Opinionated workflow (enforces git worktrees, instruction overlays, capability hierarchy)
Evaluation for extending
If you want full multi-agent orchestration (merge queues, agent coordination, task tracking), overstory is remarkably complete. But if you want a focused session manager + dashboard, it’s over-engineered. The raw ANSI dashboard would need a full rewrite (ratatui or similar) to match ws quality.
Comparison
| Capability | ws (custom Go) | Arbor (Rust) | Overstory (TS/Bun) |
|---|---|---|---|
| Language | Go | Rust (nightly) | TypeScript/Bun |
| TUI dashboard | Bubbletea (interactive) | GPUI native + web UI | Raw ANSI (read-only) |
| tmux integration | Core | None (own PTY) | Core |
| Agent detection | Claude Code only | Claude/Codex/Pi/OpenCode | 8 runtimes |
| Worktree isolation | Manual (ws wt create) | Built-in | Built-in |
| Inter-agent messaging | None | None | SQLite mail system |
| Merge coordination | None | None | FIFO queue + conflict resolution |
| MCP server | None | Yes | None |
| Remote access | None | Web UI + SSH outposts | None |
| Complexity | Low (~600 LOC) | High (12 crates) | Very high (36 commands) |
| Maintainability | Full control | Rust nightly, GPUI | Bun dependency, single dev |