Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 1.5 KB

File metadata and controls

31 lines (24 loc) · 1.5 KB

Multi-Claude Orchestra

Shell-based orchestrator for managing multiple Claude Code sessions across local tmux panes and remote SSH hosts.

Architecture

  • 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 by orchestra sync.
  • runs/ — Timestamped sync outputs.
  • summary/ — Latest cross-project summary.
  • briefings/ — Logged briefings sent to sessions.

Key Design Decisions

  • 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 use ControlPersist=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-keys is used for interactive briefings to running sessions.

Working on This Repo

  • 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 in main().
  • Health check patterns may need tuning for different Claude Code versions.