Run a Mixed-Engine Office: the Right CLI for Every Desk Munder Difflin runs seven agent CLIs on one floor — Claude Code, Antigravity, Codex, OpenCode, Crush, pi.dev, and GitHub Copilot CLI — chosen per hire from a visual picker. The recommended layout uses Claude Code as the orchestrator, Codex for coding bursts, Copilot for dispatched tasks, and OpenCode/Crush/pi.dev for BYOK keys or local models. Copilot's print mode lacks a hook bridge, so its workers cannot drain hive inbox mail, making it suitable only for self-contained tasks. Run a Mixed-Engine Office: the Right CLI for Every Desk A practical guide to mixing agent engines on one Munder Difflin floor: Claude Code as orchestrator, Codex for coding bursts, Copilot for dispatched tasks, and OpenCode/Crush/pi.dev for BYOK keys and local models. You don't have to pick one agent CLI. Munder Difflin runs seven engines on one floor — Claude Code, Antigravity, Codex, OpenCode, Crush, pi.dev, and GitHub Copilot CLI — chosen per hire from a visual picker. The winning layout: Claude Code as the GOD orchestrator and hive-aware senior workers, Codex for coding bursts , Copilot for dispatched, self-contained tasks , and OpenCode / Crush / pi.dev on BYOK keys or local models for the routine majority. Keys and local endpoints live in Settings → AI Engines ; OSS-model quick-picks fill the right slug for you. Most multi-agent setups are a clone army: five copies of the same CLI on the same model, paying the same rate for wildly different jobs. That’s like staffing an office entirely with regional managers. A real office has a manager, a couple of closers, and a lot of people doing solid routine work at a sensible salary. Munder Difflin is built for that second shape. Every hire — and Michael, the GOD orchestrator /blog/how-the-god-orchestrator-works/ himself — runs on a pluggable engine, picked from a visual provider picker at hire time. Here’s how to lay out the floor. The engine roster, honestly the-engine-roster-honestly Seven engines can sit on one floor today, and they’re not interchangeable — that’s the point: Claude Code — the deepest hive citizen. Native hooks drive lifecycle events, inbox draining, HITL gates, and mid-run steering. The natural orchestrator. Antigravity Gemini — full hive participation via the native agy-hook bridge. OpenAI Codex — receives the hive protocol as its initial prompt and participates through inbox/outbox routing. A strong pure-coding worker. OpenCode, Crush, pi.dev — the BYOK trio shipped in v0.3.1 , wired in via native-plugin, proxy, and hooks bridges respectively. Each works as a worker and as Michael, and each can point at your own keys or a local model. GitHub Copilot CLI — new in v0.3.3 /blog/launching-munder-difflin-v0-3-3/ , the first community-contributed engine PR 101 . Runs in documented print mode copilot -p with a model picker and --resume , authenticated by your existing Copilot login. One honest caveat up front: Copilot’s print mode exits per turn and has no hook bridge, so its workers can’t drain hive inbox mail — routed mail bounces to the orchestrator instead of disappearing. That’s by design, and it tells you exactly where Copilot desks belong. The layout that works the-layout-that-works Michael’s office: Claude Code. The orchestrator reads every request, adjudicates traffic, scribes the blackboard, and escalates only critical items to you. That’s sustained, stateful, judgment-heavy work — give it the engine with native hooks and the tightest harness integration. Michael’s engine is swappable from onboarding or the change-engine flow if you want to experiment; OpenCode, Crush, and pi.dev are all god-eligible, backstopped by a provider-agnostic idle fallback. Senior desks: Claude Code or Antigravity, hive-aware. Work that involves conversation — replying to routed messages, coordinating with other agents, long multi-step missions — needs engines that drain a mailbox. These are your closers. Coding bursts: Codex. Scoped, well-defined implementation work — “build this component, tests included” — plays to Codex’s strengths. It gets the protocol injected as its initial prompt and reports back through outbox routing. Dispatched tasks: Copilot CLI. Self-contained jobs that arrive, execute, and finish — perfect for print mode. Hire a Copilot worker, pick its model Claude Sonnet 4.5 by default, GPT-5.4, or auto , and dispatch. No new keys; your existing GitHub Copilot seat covers it. The routine majority: OpenCode, Crush, or pi.dev on cheap or local models. Formatting passes, doc updates, changelog grooming, triage — most fleet work doesn’t need frontier reasoning, and this is where the money is. This is capability routing /blog/do-more-with-less-model-routing/ made physical: the desk itself is the routing decision. Wiring it: Settings → AI Engines wiring-it-settings-ai-engines All the credentials for the BYOK trio live in one panel. Settings → AI Engines collects per-provider API keys — Anthropic, OpenAI, Google, OpenRouter, Groq — stored write-only in the encrypted secret broker. They’re never read back into the renderer; the main process materializes them into the environment only at spawn. The same panel takes per-engine local base-URLs Ollama, LM Studio, vLLM and default-model fields, which OpenCode, Crush, and pi.dev pick up automatically. Then hire. In Add Agent, choosing a local-capable engine surfaces OSS-model quick-picks : a Local bucket of Mac-runnable Ollama tags gpt-oss 20B/120B, Qwen3, DeepSeek-R1, Mistral Small, Llama 3.3 70B and a third-party OSS provider bucket via Groq or OpenRouter. Click one and it fills the engine-correct slug — local/