Project
Claude Multi-Session Orchestrator
Runs parallel Claude Code sessions in isolated git worktrees, coordinated via a shared SQLite state store.


Running one Claude Code session at a time was the bottleneck — most of the wait was Claude thinking or editing, not me reviewing, so idle sessions sat there while others queued behind them.
The fix is git worktrees: every session gets its own isolated worktree and branch off the same repo, so up to four sessions edit the same project in parallel without ever touching each other's files. A local SQLite store (.claude/session-state.db) tracks status, retries, and worktree paths for every session, so the launcher, the watcher, and the dispatcher all agree on what's actually running.
A background watcher reacts to state changes via fswatch instead of polling on a timer, and sends a notification the moment a session finishes or needs input.
The real surprise was how often sessions got stuck — blocked on a decision, stalled mid-task, or waiting on something that never arrived. That pushed in a stuck-session escalation path: a session blocked three times in a row automatically opens a deduplicated GitHub issue with the details, rather than silently sitting there.
Deliberately no multi-agent framework and no autonomous merging — this tool schedules and detects, but every merge is still reviewed and confirmed by hand. This portfolio site is itself being built by parallel sessions of this same orchestrator, including the one writing this paragraph.