Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4,672 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

make codex open!

Universal provider proxy for OpenAI Codex, Claude Code, Claude Desktop & Grok Build
Two commands, and every one of them runs any LLM you point it at.

Follow @claudeebum on X npm version license node version

npm install -g @bitkyc08/opencodex
ocx start        # proxy + dashboard on localhost:10100
Claude Code running a routed model through opencodex — the status bar shows gpt-5.6-luna-medium as the active model
Claude Code, running any model.
The picker is stock Claude Code. The brain behind it isn't.
opencodex demo — running a task in the Codex app on a routed non-OpenAI model
Codex, running any model.
Pick a provider and go — same workflow, different brain.
Claude Desktop answering as Claude Opus 4.8, then dispatching a GPT-5.6 Sol subagent through opencodex
Claude Desktop, running any model.
Opus answers, then hands the task to a GPT-5.6 Sol subagent.
Grok Build running GPT-5.6 Sol through opencodex and calling a Kimi K3 subagent
Grok Build, running any model.
Sol drives the session and calls a Kimi K3 subagent.

English · 한국어 · 简体中文 · Русский · 日本語 · 📖 Full documentation →

opencodex is a lightweight local proxy that translates Codex's Responses API into whatever your provider speaks — streaming, tool calls, reasoning tokens, images, in both directions. Use Claude, Gemini, Grok, GLM, DeepSeek, Kimi, Qwen, Ollama, or any other LLM with Codex, Claude Code, Claude Desktop, and Grok Build. It can also manage a ChatGPT account pool for Codex auth: add accounts, refresh their quotas in the dashboard, and let new sessions auto-route to the lowest-usage healthy account while existing threads stay pinned to the account that started them.

Quick start

For humans

npm install -g @bitkyc08/opencodex   # Node 18+; the Bun runtime is bundled automatically
ocx start                            # or `ocx service` to run it in the background

Open http://localhost:10100 and configure everything in the web dashboard — add providers (40+ built-ins, or any OpenAI-compatible endpoint), pick models, manage accounts. ocx gui re-opens the dashboard at any time. It can also manage a ChatGPT account pool for Codex auth. Add multiple ChatGPT / Codex accounts, refresh their 5h / weekly / 30d quota in the dashboard. Under quota routing, new sessions can use the lowest-usage healthy account; round-robin and fill-first use their own policies. Existing Codex threads normally retain affinity to the account that started them, so long SSH, tmux, or mobile-connected sessions do not jump accounts mid-conversation — but quota re-evaluation, failover, account exclusion, affinity expiry, or 401/403 and 429 recovery can rebind them. Give the accounts a selection order when one of them — usually your Codex Desktop login — should only be reached for once the others are drained.

macOS menu bar companion

The native companion shows live agent activity and provider quota windows, then opens the existing dashboard for OAuth, API keys, account management, and logs. It is a UI layer over the running proxy: no Keychain migration, no second provider-login system, and no provider credentials stored in the app.

A released app may be unzipped and placed in Applications. During active source development, keep the one app build in this checkout instead of copying it to Application Support or maintaining a second app copy:

bun install
bun run test:macos
bun run build:macos
open dist/macos/OpenCodex.app

Double-clicking that source build ensures the proxy through the same checkout; if startup fails, the menu app stays open so its diagnostics and Start control remain available. Quit closes only the companion UI. Stop and Restart are separate, confirmation-gated proxy actions.

On its first launch from dist/macos or Applications, the app enables Launch at Login so the menu icon returns after sign-in. The startup row exposes the actual mode: Desktop launches the menu app, Headless leaves only an installed background service at login, and Off starts neither automatically. Rebuilt source apps refresh their login registration in place; they are never copied into Application Support. Full setup, Gatekeeper, release packaging, and troubleshooting details are in the macOS menu bar guide.

OpenCode client

ocx opencode starts OpenCode with a transient, in-memory provider.opencodex block and never rewrites OpenCode config files. For plain OpenCode or the Desktop app, use the dashboard's Integrations page to apply the opt-in, reversible connection that owns only provider.opencodex; see the OpenCode guide.

For agents

npm install -g @bitkyc08/opencodex
ocx start     # or `ocx service`
ocx init      # interactive setup: writes ~/.opencodex/config.json and wires Codex

ocx init never starts the proxy; start it first (or after — either order works, but headless commands like ocx provider add and ocx combo set talk to the live proxy and exit nonzero when it is unreachable). ocx status / ocx doctor / ocx health report the running state.

Supported platforms

OS Status Service manager
macOS (arm64 / x64) Fully supported launchd
Linux (x64 / arm64) Fully supported systemd (user unit)
Windows (x64) Fully supported Task Scheduler (hidden) / opt-in native service (--native, WinSW)

Requires Node 18+. The Bun runtime is bundled on npm install — no separate Bun install needed, no WSL needed on Windows. If npm blocked the bundled runtime's install scripts, see the installation docs.

Highlights

  • Use any LLM with Codex, Claude Code, Claude Desktop, and Grok Build — 40+ providers out of the box, each keeping its own native UI.
  • Pool ChatGPT accounts safely — thread affinity, quota-aware auto-switching, cooldown and fail-closed auth handling.
  • Combos — one virtual model id with failover or weighted round-robin across providers. See the combo guide.
  • Sub-agents on any model — feature routed models in Codex's sub-agent picker, with v1/v2 surface control and fallback chains. See the sub-agent guide.
  • Log in once, skip the API key — OAuth for xAI, Anthropic, and Kimi; or forward codex login, paste a key, or use ${ENV_VAR} references.
  • Web search & vision sidecars — non-OpenAI models get real web search and image understanding through a sidecar over your ChatGPT login.
  • See what's happening — the dashboard shows providers, OAuth status, model selection, and a live request log with cache token counts.
  • Native macOS glance view — see active parent/subagent rows and every available session, weekly, monthly, or credit quota window without duplicating provider setup outside the dashboard.
  • Clean exit, zero residueocx stop restores Codex to its original configuration.

Model routing

Target any configured provider and model with the provider/model syntax:

codex -m "anthropic/claude-opus-5" "Explain this stack trace"
codex -m "google/gemini-3-pro" "Write unit tests for auth.ts"
codex -m "ollama/llama3" "Refactor this function"

Omit the provider/ prefix to use the default provider or auto-match by model name pattern. Provider model ids containing / are exposed with inner slashes aliased to -; the raw full-slash form keeps working too. Details: model routing docs.

Providers & adapters

OpenAI (ChatGPT login or API key), Anthropic, Google Gemini, xAI, Kimi, Azure OpenAI, Ollama (local + Cloud), Cursor (experimental), and every OpenAI-compatible endpoint — plus DeepSeek, Groq, OpenRouter, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax, Qwen Cloud, SiliconFlow, and more. Full list: ocx init or the provider docs.

CLI

ocx init                       # interactive setup (writes config, wires Codex, offers the shim)
ocx start [--port 10100]       # start the proxy in the foreground
ocx stop                       # stop + restore native Codex
ocx service [install|start|stop|status|uninstall|remove]  # background service
ocx codex-shim install         # start the proxy on demand whenever `codex` launches
ocx health [--json]            # check immediate proxy liveness
ocx ready [--json] [--wait [--timeout <seconds>]]  # check post-sync readiness
ocx status                     # is the proxy running?
ocx gui                        # open the web dashboard
ocx provider <...>             # manage providers (list/add/edit/test/remove)
ocx account <...>              # manage ChatGPT accounts & API-key pools
ocx combo <...>                # manage failover / round-robin combos
ocx v2 <...>                   # multi-agent v1/v2 surface controls
ocx update [--tag preview]     # update opencodex

Unpinned starts may pick another free port if the preferred one is busy; an explicit --port never hops. Full reference: CLI docs.

Health and readiness

GET /healthz reports immediate proxy liveness. The unauthenticated GET /readyz endpoint reports post-sync readiness with the sanitized JSON identity {service, version, uptime, pid, port, status}. It returns 200 when status is ready; pending and terminal failed return 503 with Retry-After: 1.

ocx ready [--json] [--wait [--timeout <seconds>]] performs one probe by default. --wait polls for up to 45 seconds by default, but exits immediately when it observes terminal failed; --timeout <seconds> sets a 1–300 second limit, requires --wait, and accepts only positive integers. CLI --json output is {ready, status, pid, port}, where status is ready, pending, failed, or unreachable.

Exit Result
0 Ready
1 Not ready: pending, failed, timeout, or unreachable
64 Invalid arguments

An older proxy without /readyz fails closed as unreachable with exit 1, while ocx health remains compatible.

Autostart: service vs shim

Use the service (ocx service) for an always-on proxy that restarts on crash. Use the shim (ocx codex-shim install) for lightweight, on-demand startup without a background daemon. Remove them with ocx service uninstall / ocx codex-shim uninstall.

Uninstall

ocx uninstall                  # stop, remove service/shim, restore native Codex, clean up state
npm uninstall -g @bitkyc08/opencodex

Remote access

By default opencodex binds to 127.0.0.1 and needs no extra authentication. Binding beyond loopback ("hostname": "0.0.0.0") requires a bearer token — the proxy refuses to start without OPENCODEX_API_AUTH_TOKEN, and every client request must carry it as x-opencodex-api-key. Details: configuration reference.

Documentation

The public docs — install, providers, routing, combos, sub-agents, sidecars, integrations, and the CLI/config/management-API references — are built from docs-site/ and published to opencodex.me.

Maintainer source-of-truth notes live under structure/, contributor setup in CONTRIBUTING.md, and security reporting in SECURITY.md. Report undisclosed vulnerabilities privately through GitHub private vulnerability reporting, not a public issue.

Development

Source development requires the bun CLI on your PATH. This is separate from the published npm package's bundled Bun runtime, which is used only by installed ocx commands.

git clone https://github.com/pavelhov/opencodex.git
cd opencodex
bun install
bun run typecheck
bun run test

This fork is the source checkout for the OpenCodex companion and OpenCode integration documented here. It retains upstream attribution and Git history; the upstream repository is not the clone URL for this work.

See Contributing.

Disclaimer

opencodex is an independent, community-maintained project and is not affiliated with or endorsed by OpenAI, Anthropic, or any other provider.

Some providers — notably Anthropic (Claude) — may suspend or restrict accounts that route API traffic through third-party proxies. Use at your own risk (UAYOR). Before connecting a provider, review its Terms of Service to confirm that proxy-based access is permitted. The opencodex maintainers are not responsible for any account actions taken by upstream providers.

License

MIT

The MIT license permits forks, modification, distribution, and sale subject to its notice condition. It does not grant third-party product names, logos, or trademark rights. A rebrander or commercial redistributor must audit names, logos, and trademarks; preserve the MIT and applicable third-party notices; avoid claims that it pools or resells third-party credentials or subscriptions; and use its own bundle identifier, signing and notarization, update channel, and package metadata. This is a release-operational checklist, not legal advice.

About

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages