Loading...
Loading...
Local proxy that lets OpenAI Codex CLI/desktop talk to MiMo, DeepSeek, and other LLMs via Responses API translation
npx skill4agent add aradotso/codex-skills mimo2codex-proxySkill by ara.so — Codex Skills collection.
wire_api = "responses"mimo-v2.5-prodeepseek-v4-proreasoning_contenthttp://127.0.0.1:8788/admin/npm install -g mimo2codex# macOS/Linux
curl -fsSL https://raw.githubusercontent.com/7as0nch/mimo2codex/main/scripts/install.sh | bash
# Windows PowerShell
irm https://raw.githubusercontent.com/7as0nch/mimo2codex/main/scripts/install.ps1 | iexgit clone https://github.com/7as0nch/mimo2codex
cd mimo2codex
npm install
npm run build
npm link # registers `mimo2codex` globallysk-tp-sk-# Initialize .env file in ~/.mimo2codex/
mimo2codex init
# Edit ~/.mimo2codex/.env and add your keys:
# MIMO_API_KEY=sk-your-mimo-key
# DS_API_KEY=sk-your-deepseek-key
# Start (auto-loads .env)
mimo2codex# MiMo only
export MIMO_API_KEY=sk-your-mimo-key
mimo2codex
# DeepSeek only
export DS_API_KEY=sk-your-deepseek-key
mimo2codex --model ds
# Both providers (per-request routing)
export MIMO_API_KEY=sk-your-mimo-key
export DS_API_KEY=sk-your-deepseek-key
mimo2codex~/.codex/auth.json~/.codex/config.toml%USERPROFILE%\.codex\auth.json%USERPROFILE%\.codex\config.tomlauth.json{
"base_url": "http://127.0.0.1:8788",
"api_key": "fake_api_key"
}config.tomlwire_api = "responses"
model = "mimo-v2.5-pro"codex# Start proxy (MiMo default)
mimo2codex
# Start with DeepSeek as default
mimo2codex --model ds
# Custom port
mimo2codex --port 9000
# Custom data directory
mimo2codex --data-dir /path/to/data
# Disable reasoning display (still round-trips for MiMo)
mimo2codex --no-reasoning
# Disable .env auto-loading
mimo2codex --no-load-env# Initialize .env file
mimo2codex init
# Print cc-switch snippets
mimo2codex print-cc-switch
# Show version
mimo2codex --version
# Show help
mimo2codex --help| Variable | Provider | Required |
|---|---|---|
| MiMo | For MiMo models |
| DeepSeek | For DeepSeek models |
| Qwen | For Qwen models |
| GLM | For GLM models |
| Kimi | For Kimi models |
| OpenAI | For OpenAI models |
| - | Custom Codex config directory |
| Flag | Default | Description |
|---|---|---|
| | Proxy server port |
| | Proxy server host |
| | Default provider ( |
| | Data/logs directory |
| | Hide reasoning from terminal |
| | Disable .env auto-loading |
| | Log level (debug/info/warn/error) |
mimo-v2.5-promimo-v2-flashmimo-v2.5mimo-v2-omnideepseek-v4-prodeepseek-v4-flashdeepseek-chatdeepseek-reasonermimo-v2.5-progpt-4o--modelqwen3-maxQWEN_API_KEY--modelexport MIMO_API_KEY=sk-mimo-key
export DS_API_KEY=sk-deepseek-key
mimo2codex # default fallback: mimo
# In Codex config.toml:
# model = "deepseek-v4-pro" → Routes to DeepSeek
# model = "mimo-v2.5-pro" → Routes to MiMo
# model = "gpt-4o" → Falls back to mimo-v2.5-prohttp://127.0.0.1:8788/admin/--portproviders.jsonauth.jsonconfig.tomlhttp://127.0.0.1:8788/admin/~/.mimo2codex/providers.json{
"providers": [
{
"name": "qwen",
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"apiKeyEnvVar": "QWEN_API_KEY",
"defaultModel": "qwen3-max",
"models": ["qwen3-max", "qwen-turbo"],
"aliases": {
"qwen3": "qwen3-max"
},
"supportsWebSearch": true
}
]
}| Field | Type | Description |
|---|---|---|
| string | Unique provider identifier |
| string | OpenAI-compatible base URL |
| string | Environment variable name |
| string | Model ID for fallback |
| string[] | Supported model IDs |
| object | Model alias mappings |
| boolean | Enable web search tool |
{
"name": "ollama",
"baseUrl": "http://localhost:11434/v1",
"apiKeyEnvVar": "OLLAMA_API_KEY",
"defaultModel": "llama3.2",
"models": ["llama3.2", "qwen2.5-coder"],
"aliases": {
"llama": "llama3.2"
},
"supportsWebSearch": false
}export OLLAMA_API_KEY=ollama # Any non-empty value
mimo2codexconfig.tomlmodel = "llama3.2"namespaceweb_search// Codex sends:
{
"model": "mimo-v2.5-pro",
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {
"location": { "type": "string" }
}
}
}
}
]
}
// mimo2codex translates to MiMo Chat Completions:
{
"model": "mimo-v2.5-pro",
"tools": [
{
"type": "function",
"function": { ... }
}
]
}mimo-v2.5mimo-v2-omnimimo-v2.5-promimo-v2-flashconfig.tomlmodel = "mimo-v2.5"codex
> Describe this image: /path/to/image.jpgtool_callsreasoning_contentreasoning_content// Turn 1: MiMo returns
{
"role": "assistant",
"content": "",
"tool_calls": [...],
"reasoning_content": "I need to search the web"
}
// Turn 2: mimo2codex auto-injects reasoning_content
{
"role": "assistant",
"content": "",
"tool_calls": [...],
"reasoning_content": "I need to search the web" // ← auto-added
}--no-reasoning# .env file (~/.mimo2codex/.env)
MIMO_API_KEY=sk-mimo-key
DS_API_KEY=sk-deepseek-key
QWEN_API_KEY=sk-qwen-key
# Start proxy
mimo2codex
# Codex config.toml - switch models dynamically:
# model = "mimo-v2.5-pro"
# model = "deepseek-v4-pro"
# model = "qwen3-max"http://127.0.0.1:8788/admin/# Start proxy
mimo2codex
# View stats at http://127.0.0.1:8788/admin/
# - Dashboard: Charts with cache hit overlay
# - Green bars: Cache hits
# - Gray ghosts: Prompt token totals
# - Window-wide hit rate summary# Via environment variable
export CODEX_HOME=/custom/path
mimo2codex
# Via admin UI settings
# Navigate to Settings → Codex Pathreasoning_contentnpm update -g mimo2codexecho $MIMO_API_KEY# Debug with log level
mimo2codex --log-level debug# Change port
mimo2codex --port 9000
# Update auth.json:
# "base_url": "http://127.0.0.1:9000"/hatchimage_genmimoskill/# Verify file location
ls ~/.mimo2codex/.env
# Check file syntax (no spaces around =)
cat ~/.mimo2codex/.env
# Disable auto-loading if needed
mimo2codex --no-load-envirm | iexSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedmimo2codex print-cc-switch[mimo-v2.5-pro]
model = "mimo-v2.5-pro"
wire_api = "responses"
base_url = "http://127.0.0.1:8788"
api_key = "fake_api_key"cc mimo-v2.5-pro~/.mimo2codex/data.dbmimo2codex --data-dir /custom/pathimport { startServer } from 'mimo2codex';
const server = await startServer({
port: 8788,
host: '127.0.0.1',
dataDir: '~/.mimo2codex',
logLevel: 'info',
noReasoning: false,
loadEnv: true
});
// Server running at http://127.0.0.1:8788