Shell-based orchestrator for managing multiple Claude Code sessions across local tmux panes and remote SSH hosts.
orchestra.sh— Main CLI. All commands dispatch through here.config.yaml— Session registry (hosts, paths, tmux names, roles, dependencies).prompts/— Briefing templates (insight.md, dream.md, custom/).shared/CONTEXT.md— Auto-generated global state, updated byorchestra sync.runs/— Timestamped sync outputs.summary/— Latest cross-project summary.briefings/— Logged briefings sent to sessions.
- No daemons or message brokers. Everything is tmux + SSH ControlMaster + shared filesystem.
- Python3 for YAML parsing only. The rest is pure bash.
- SSH ControlMaster sockets live in
~/.ssh/sockets/. User authenticates once interactively, orchestrator rides the socket. Sessions useControlPersist=4h. - Health detection via
tmux capture-pane+ pattern matching on last N lines. claude -p(print mode) is used for non-interactive insight collection during sync.tmux send-keysis used for interactive briefings to running sessions.
- Test config parsing:
./orchestra.sh status(with example sessions uncommented). - All session commands accept a session name or
all. - When adding new commands, follow the
cmd_<name>pattern and register inmain(). - Health check patterns may need tuning for different Claude Code versions.