Gamechat – Voice-Based Agent Orchestrator Built in Rust Gamechat, a voice-based agent orchestrator built in Rust, allows users to speak commands into a terminal that dispatches tasks to background coding agents like Claude Code or Codex CLI. The tool uses a single low-latency OpenAI Realtime voice loop alongside an async worker pool that manages concurrent agent jobs, with each task slug maintaining its own ordered conversation session. Gamechat is available via a one-line installer that pulls prebuilt binaries for macOS and Linux, requiring only an OpenAI API key and a coding agent on the user's PATH. Voice-driven supervisor for Claude Code https://github.com/anthropics/claude-code and Codex https://github.com/openai/codex . You talk to a low-latency Realtime model in your terminal; whenever you ask for real work, it dispatches a job to a background coding agent and narrates the result when it lands. 🎀 ──▢ OpenAI Realtime gpt-realtime-2 ──▢ πŸ”ˆ β”‚ β”‚ tool: delegate to orchestrator slug, intent, … β”‚ tool: sub agent progress slug β–Ό OrchestratorJobManager β”‚ one worker task per slug, ordered within a slug, β”‚ concurrent across slugs β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β” claude -p codex exec Claude Code Codex CLI There is exactly one realtime voice loop and an async worker pool for background agent jobs. Those are the two halves of the binary. A single tokio::select loop that owns: - a microphone stream cpal , mono, resampled to 24 kHz - a websocket to the OpenAI Realtime API - a playback buffer cpal again, jittered - a channel of job-completion events from the worker pool On startup it sends a session.update that registers two tools β€” delegate to orchestrator and sub agent progress β€” and tells the model to use stable snake case slugs for each background task. Reusing a slug continues the same orchestrator conversation; new slugs spawn parallel work. Run gamechat --print-realtime-config to inspect the exact JSON. OrchestratorJobManager runs in its own task. Behind it: One worker per slug. All sends for refactor docs go through the same OrchestratorSession , in order. Different slugs run concurrently in independent sessions. A Workers stream snippets into a slug-keyed buffer; ProgressStore . sub agent progress queries it with built-in rate limiting ~5 s so the model can't poll itself into a loop. A with two backends: Provider / Session traitβ€” spawns claude claude -p per send. First send uses --name