What Is deecodex?
deecodex is a Rust local proxy built by liguan-89 that translates Codex CLI Responses API requests into DeepSeek Chat Completions calls for developers who want to keep using Codex with DeepSeek. deecodex is one of the best Codex CLI Proxies tools for DeepSeek users, and v1.0.0 spans 13 endpoints, 9 tool types, and 11 streaming events while preserving reasoning, tool calls, and model mapping.
Quick Overview
| Attribute | Details |
|---|---|
| Type | Codex CLI Proxies |
| Best For | DeepSeek users |
| Language/Stack | Rust 1.80+, Axum, OpenAI-compatible HTTP/SSE translation, BM25 search, Playwright/browser-use, MCP stdio JSON-RPC |
| License | N/A |
| GitHub Stars | N/A |
| Pricing | Open-Source |
| Last Release | v1.0.0 — N/A |
Who Should Use deecodex?
- Codex CLI users on DeepSeek who want the existing Codex client to keep working with a different upstream model without hand-editing request payloads.
- Indie hackers building agent workflows that need local
file_search, persistent files, and vector stores without paying for a separate hosted middleware layer. - Automation engineers who need browser actions or MCP tools inside the same local control plane as their coding agent.
- Platform teams that want a deterministic local shim on
127.0.0.1:4446instead of sprinkling provider-specific logic into every workstation.
Not ideal for:
- Teams that already standardized on another OpenAI-compatible gateway and do not need Codex-specific Responses translation.
- Users who want a hosted multi-tenant API product with account management, billing, and SLAs.
- Environments where installing a local binary, editing
.env, and managing PATH entries is not acceptable.
Key Features of deecodex
- Responses API translation — deecodex handles
POST /v1/responses, storage lookups, cancel, compact, token counting, and model listing. It converts Codex-native traffic into DeepSeek chat completions without changing the client-side workflow. - Chunk-level file search — the local
file_searchlayer uses a chunk index with BM25 ranking and filename weighting. That gives you deterministic retrieval over local files instead of opaque remote indexing. - Local Files and Vector Stores APIs — deecodex persists files and vector stores locally, which keeps search scope under control and avoids crossing workspace boundaries by accident. The API shape matches what Codex expects, so downstream tools do not need special cases.
- Computer executor — the browser automation path supports
open_url,screenshot,click,type,keypress, andscrollthrough Playwright or browser-use. That is enough for UI verification, scraping, and task automation when an agent needs to inspect a real page. - MCP executor — deecodex can call stdio JSON-RPC MCP servers and applies read-only protection to reduce blast radius. It also expands MCP namespaces into separate function tools and deduplicates names when multiple servers overlap.
- Streaming recovery — delta merging and
reasoning_contentreconstruction keep partial streams coherent even when upstream chunks arrive out of order. Retry handling for429,502, and503makes transient DeepSeek failures less painful in long sessions. - Config diagnostics and routing — startup validation checks executor configuration, Playwright and Node.js availability, and MCP command existence before traffic is accepted. Vision routing, token anomaly detection, and Chinese thinking injection are all opt-in controls, so the proxy stays small until you need extra behavior.
deecodex vs Alternatives
| Tool | Best For | Key Differentiator | Pricing |
|---|---|---|---|
| deecodex | Codex CLI + DeepSeek users | Responses-to-Chat translation plus local file search, MCP, and computer execution | Open-Source |
| LiteLLM Proxy | Teams routing many model providers | Broad provider abstraction, fallbacks, and policy controls across LLMs | Open-Source |
| OpenRouter | Buying access to multiple models through one endpoint | One OpenAI-compatible API with centralized billing and model access | Paid |
| Raw DeepSeek config | Small setups with no middleware | No proxy layer; direct provider wiring and manual client config | Free |
If your real problem is editor-native agent UX rather than API compatibility, Claude Code Canvas and Claude Context Mode solve a different class of workflow. If you need multi-agent coordination instead of protocol translation, OpenSwarm is the closer fit.
Choose deecodex when you need Codex semantics to survive a DeepSeek upstream swap and you still want local execution hooks. Choose LiteLLM Proxy when provider diversity and routing policy matter more than Codex-specific fidelity, and choose OpenRouter when you prefer a hosted gateway with billing and simple API key management.
How deecodex Works
deecodex sits between Codex CLI and DeepSeek as a local protocol adapter. The service listens on 127.0.0.1:4446, accepts OpenAI-compatible /v1/responses traffic, rewrites it into DeepSeek chat completion requests, and then reconstructs the stream back into the shape Codex expects.
The architecture is intentionally split into a transport layer, a translation layer, and a local capability layer. The transport layer handles HTTP and SSE, the translator maps model names and tool calls, and the capability layer owns files, vector stores, computer actions, MCP execution, cache entries, and response/session state.
cp .env.example .env
echo DEECODEX_API_KEY=your_key >> .env
echo DEECODEX_PORT=4446 >> .env
./deecodex.sh start
./deecodex.sh health
After those commands, the proxy should expose a healthy local endpoint and the web console at http://127.0.0.1:4446/. Once Codex points its base_url at http://127.0.0.1:4446/v1 and uses wire_api = responses, requests begin flowing through the translation path automatically.
The design choice that matters most is keeping the shim local and deterministic. deecodex does not ask you to rewrite your agent stack; it changes the wire format, applies model mapping, and only invokes extra executors when a tool call or routing rule requires it.
Pros and Cons of deecodex
Pros:
- Preserves Codex CLI semantics while swapping the upstream model provider, which avoids brittle prompt-side hacks.
- Supports local retrieval and execution through
file_search, Files, Vector Stores, MCP, and computer actions in one process. - Works as a local control plane on a fixed port, which is easier to audit than scattering provider logic across apps.
- Includes stream repair logic for
reasoning_contentand tool-call deltas, which helps with long-running interactive sessions. - Offers startup diagnostics before traffic is accepted, so broken executor config fails early instead of halfway through a task.
- Keeps vision routing optional, which lets you run the proxy without extra multimodal dependencies.
Cons:
- Requires local setup discipline; you still need to manage
.env, PATH, and binary placement. - Depends on upstream availability; if DeepSeek is slow or returns errors, deecodex can only retry and translate, not fix the model.
- Adds another moving part between your client and the model, which is fine for power users but unnecessary for simple API consumers.
- Browser and MCP features need extra dependencies such as Node.js, Playwright, or a configured MCP server.
- Model mapping is manual; if you rename upstream models, you must keep
DEECODEX_MODEL_MAPin sync.
Getting Started with deecodex
The fastest path is the one-line installer, followed by a local health check and a .env edit for your DeepSeek key. On macOS and Linux, that gets you from zero to a running proxy in a couple of minutes without compiling Rust yourself.
curl -fsSL https://raw.githubusercontent.com/liguan-89/deecodex/main/install.sh | bash
deecodex.sh start
deecodex.sh health
After the first run, set DEECODEX_API_KEY in .env, confirm that DEECODEX_PORT matches the port you use in Codex, and update DEECODEX_MODEL_MAP if your preferred model names differ from the defaults. Windows users can use the PowerShell installer from the repo, or the portable zip if they want a manual install path.
If you are wiring this into Codex, point ~/.codex/config.toml at http://127.0.0.1:4446/v1 and keep wire_api = responses. If you are using another OpenAI-compatible client, the same local endpoint usually works as long as the client can speak Responses-style or tolerant chat-completion semantics.
Verdict
deecodex is the strongest option for running Codex CLI against DeepSeek when you need protocol compatibility plus local tool execution. Its main strength is the translation layer with file_search, MCP, and vision routing in one Rust binary. The caveat is local setup and environment hygiene. Recommended for advanced users who want control, not for casual API consumers.


