Skip to content

Repository files navigation

Codex Switchboard

Switch Codex accounts and choose external models from your Mac menu bar. Connect the official Devin/Grok CLIs through the app's bundled private gateway; Codex keeps control of tool execution and approvals.

Experimental, source-built app: Apple Silicon and macOS 26+ only. The helper has isolated validation; final packaged-app activation, a real Desktop workflow, and native two-account handoff remain unverified. Builds are ad-hoc signed, not notarized. See validation and known limits.

Codex Switchboard's real menu and Setup window before enabling Codex integration; no account is saved.

Setup and menu before integration is enabled.

  • Save and switch native Codex accounts.
  • Connect Devin and Grok, then choose compatible models and reasoning levels.
  • Review setup changes and restore the previous integration from Settings.

Build and install

Requirements: an Apple Silicon Mac on macOS 26+, Node.js 24+, Bun 1.4.2, and a Swift 6.2+ toolchain with the macOS 26 SDK (swift and xcrun on PATH).

Build from source:

git clone https://github.com/filip-pilar/codex-switchboard.git
cd codex-switchboard
bun install --frozen-lockfile --ignore-scripts
node bin/build-macos-app.mjs
open "dist/Codex Switchboard.app"

You can move the built app to /Applications before opening it. Node, Bun, and Swift are only needed to build; the app bundles its helper. Opening it does not activate integration—use Setup when ready.

Install Codex Desktop/CLI and open it once before setup. For external models, install and sign in to the corresponding official CLI: Devin or Grok. Only the providers you use need connecting. Switchboard uses your existing accounts and provider access; it does not supply subscriptions or redistribute these CLIs.

Use

  1. Open the app, then Settings → Connections. Import/refresh an existing official CLI session or use Sign In… for browser sign-in. Add/import native accounts in Accounts.
  2. In Models, choose the model switches for compatible discoveries. Astra is enabled initially; other discoveries, including Grok 4.6, need enabling.
  3. In Setup, review any existing integration, choose explicit migration if needed, and Enable in Codex…. Choose Apply, Restart Later while active tasks are still running.
  4. After restarting Codex, choose Switchboard selection in its actual picker to follow the menu. Astra · Devin and the enabled Grok 4.6 entry keep direct routing; native entries remain native.
  5. Use Restore Previous Setup… in Setup to return owned settings. Resolve specific conflicts, then restart Codex.

The gateway uses 127.0.0.1:9477. It never takes over an unknown listener, rotates accounts, changes sandbox/approval policy, or falls back to a different provider. External compaction and unsafe private continuation require a new task. Grok 4.6 supports inline images and selectable reasoning.

Which repo should I use?

I want to… Repo
Switch ChatGPT accounts behind a stable endpoint for Codex CLI codex-account-gateway
Choose Codex accounts and external models from one experimental Mac app codex-switchboard
Expose Devin/Grok CLI access through local OpenAI- and Anthropic-compatible APIs llm-local-gateway
Assign different models to main agents and named subagents in Codex or Claude Code subagent-model-router

These are separate tools. Switchboard bundles its own gateway; it does not require the other apps. Subagent Model Router can use LLM Local Gateway as a destination.

Gateway status

Devin inference uses the official CLI's ACP protocol and a bundled MCP relay. Codex owns file execution, approvals and subagents. Supported families are Astra, Gemini 3.8 Flash, GPT-5.6 Sol/Terra/Luna, SWE-1.7/Lightning, SWE-2, Devin Grok 4.6 and DeepSeek V4.1 Flash. The separate Grok connection supports 4.6. Fusion, fast variants, GLM, Kimi and other excluded families are not routed.

See the compatibility matrix for exact selectors and limits. Astra Low deferred discovery passed 4/5 focused controls; the observed failure is retained. Model availability depends on your provider account and CLI version.

Development checks

After installing dependencies:

node --test test/*.test.mjs
node bin/test-native.mjs

Additional local integration checks (installed Codex for the first; a built app and port 9477 free for the second):

node bin/check-codex-runtime.mjs
node bin/check-packaging.mjs

The UI and account management are Swift; the bundled JavaScript gateway handles provider protocols and streaming. Neither the old gateway/router apps nor their source archives are needed to build or run Switchboard.

check-codex-runtime uses an isolated local fixture, not provider inference. check-discovery and check-provider-start use an existing official Devin session only for non-inference catalog/startup checks. check-control-transaction uses the app’s normalized discovery cache and applies/restores only an isolated Codex home. The checks above do not perform live inference. The explicitly invoked experiments/acp/gateway-acceptance.mjs driver does; run it only with authorization.

For installation and troubleshooting, see setup and recovery. For contributions, see AGENTS.md, development checks, architecture. Bug reports should include the app/CLI versions and Copy Diagnostics, never credential files or raw request logs.

Licensed under MIT. Reused-source and bundled-runtime notices are in THIRD_PARTY_NOTICES.md. This is an independent project, not an official OpenAI, Cognition, or xAI app.

About

Experimental macOS app for switching Codex accounts and connecting Devin and Grok models.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages