claude-tempo
v0.21.0
Published
MCP server for multi-session Claude Code coordination via Temporal
Downloads
4,609
Maintainers
Readme
Multiple Claude Code sessions discover each other, exchange messages in real time, and coordinate work — across machines, not just localhost.
Why claude-tempo?
- Crash-safe durability — Sessions are Temporal workflows. Crashes, restarts, and network blips don't lose messages or drop coordination state. Dead sessions are detected automatically and the conductor is notified.
- Instant signaling — Temporal signals deliver messages with no polling. Players receive cues the moment they're sent, regardless of which machine they're on.
- Built-in scheduling — Set up one-shot or recurring message schedules without any external infrastructure. Fan-out to all players at once for periodic status checks.
- Extensible agent types — Define reusable player roles as
.mdfiles. Ship lineups that assemble entire teams in one command. Mix Claude Code and Copilot CLI sessions in the same ensemble.
Installation
npm install -g claude-tempoPrerequisites: Node.js 18+, Temporal CLI, Claude Code
Quick Start
One command handles everything:
cd your-project
claude-tempo upThis starts the Temporal dev server, registers the MCP server globally, starts the worker daemon, and launches a conductor session in a new terminal.
Then add players:
claude-tempo start # open a player session
claude-tempo status # see who's activeOr ask the conductor to recruit players for you from inside Claude Code.
Manual setup
For more control, run each step individually:
claude-tempo server # start Temporal dev server (keep running)
claude-tempo init # register MCP server globally
claude-tempo preflight # verify environment
claude-tempo conduct # start a conductor
claude-tempo start # add playersBasic MCP usage
Inside any Claude Code session connected to claude-tempo:
- "Show me the ensemble" — discover other sessions
- "Set your name to 'frontend'" — set a human-readable name
- "Cue backend: what are you working on?" — send a message to another player
- "Recruit a soloist in /repos/api" — spawn a new player session
Core Concepts
Each Claude Code session registers as a player in Temporal. Players discover each other with ensemble, exchange messages with cue, and coordinate work across machines. An optional conductor orchestrates the group and connects to external interfaces. All players in the same ensemble can see and message each other; ensembles are isolated from each other.
claude-tempo conduct frontend # conduct the "frontend" ensemble
claude-tempo start backend # join the "backend" ensembleWhat You Can Do
Terminal UI
Run claude-tempo (no arguments) to launch the built-in TUI — a chat-focused shell for managing your ensemble without leaving the terminal.
claude-tempo # launch TUI (multi-ensemble view)
claude-tempo tui --ensemble myteam # connect directly to an ensembleInside the TUI, type /help to see all available slash commands: /cue, /broadcast, /recruit, /stop, /encore, /recall, /search, /players, /schedule, /gates, /stages, /worktree, and more. See docs/dashboard.md for the full TUI reference.
Scheduling
Send messages on a delay, at a fixed time, on a recurring interval, or via cron expression:
# From inside Claude Code (via MCP tools)
schedule: { name: "standup", cron: "0 9 * * 1-5", target: "conductor", message: "Daily standup" }Supports delay, at, every, and cron with optional IANA timezone. See docs/scheduling.md.
Lineups
Define your entire ensemble as a YAML file and bootstrap it in one command:
claude-tempo up --lineup lineups/dev-team.ymlShipped lineups: tempo-big-band (full lifecycle), tempo-dev-team (feature work), tempo-review-squad (parallel review), tempo-jam-session (exploration). See docs/ensembles.md.
Orchestration
Conductors can track parallel work with Quality Gates, Pipeline Stages, and Git Worktrees:
- Quality Gates — named checklists of criteria; auto-aggregate to
passed/failed/open - Pipeline Stages — fan-out/fan-in tracking; conductor is notified when all players report
- Git Worktrees — provision isolated branches for players; clean up when done
Command Discovery
claude-tempo --help # all CLI commands
claude-tempo <command> --help # flags for a specific commandInside the TUI, type /help for slash commands. Inside Claude Code, use the ensemble tool to see who's active and explore from there.
Key commands
Session management
| Command | Description |
|---------|-------------|
| claude-tempo up | Start everything (Temporal + daemon + conductor) |
| claude-tempo start [ensemble] | Open a player session |
| claude-tempo conduct [ensemble] | Start a conductor session |
| claude-tempo status | Show active sessions |
| claude-tempo stop [ensemble] | Stop sessions (recoverable via encore) |
| claude-tempo down | Full teardown — sessions, daemon, and Temporal |
Lineups
| Command | Description |
|---------|-------------|
| claude-tempo up --lineup <file> | Bootstrap from a lineup YAML |
| claude-tempo ensemble save <name> | Save current ensemble as a lineup |
| claude-tempo ensemble list | List saved lineups |
Player types
| Command | Description |
|---------|-------------|
| claude-tempo agent-types list | List available player types |
| claude-tempo agent-types show <name> | Show a player type definition |
| claude-tempo agent-types init <name> | Create a new player type |
Infrastructure
| Command | Description |
|---------|-------------|
| claude-tempo daemon start\|stop\|status\|logs | Manage the worker daemon |
| claude-tempo upgrade [version] | Graceful self-update (stops daemon, installs, restarts) |
| claude-tempo config | Configure env vars interactively |
| claude-tempo preflight | Verify environment |
See docs/cli.md for the full CLI reference including all flags and examples.
Maestro Dashboard
The Maestro dashboard is a web UI that connects to your Temporal server and provides a live view of your ensemble — player status, event log, and command input. See docs/dashboard.md.
Development
git clone https://github.com/vinceblank/claude-tempo.git
cd claude-tempo && npm install
npm run build # compile TypeScript + pre-bundle workflows
npm test # run tests
npm link # link CLI for local testingImportant: Run
npm run buildafter changing workflow code (src/workflows/). The build pre-bundles workflows intoworkflow-bundle.jsso all workers use identical code.
Contributing
See CLAUDE.md for project structure, key concepts, and development setup. Pull requests are welcome — please run npm test before submitting.
License
MIT
