modelmux
Model multiplexer — unified MCP server for cross-platform multi-model AI collaboration.
Route tasks to Codex CLI, Gemini CLI, and Claude Code CLI through a single MCP interface with smart routing and caller auto-detection.
Install
# One-command install for Claude Code
claude mcp add modelmux -s user -- uvx modelmux
# Codex CLI (~/.codex/config.toml)
# [mcp_servers.modelmux]
# command = "uvx"
# args = ["modelmux"]
# Gemini CLI (~/.gemini/settings.json)
# {"mcpServers": {"modelmux": {"command": "uvx", "args": ["modelmux"]}}}
Tools
mux_dispatch— Send a task to a model and get structured resultsprovider:"auto"/"codex"/"gemini"/"claude"/"ollama"task: The prompt to sendworkdir,sandbox,session_id,timeout,model,profile,reasoning_effort,failover
mux_check— Check which CLIs are available, show detected caller and config
Smart Routing
provider="auto" routes tasks by keyword analysis and auto-excludes the calling platform:
From Claude Code → routes to Codex or Gemini (never back to Claude)
From Codex CLI → routes to Claude or Gemini (never back to Codex)
Failover
When a provider fails at execution time, modelmux automatically retries with the next available provider (enabled by default, failover=True). Failover is skipped for session-based requests since sessions are provider-specific.
Audit & Policy
Every dispatch call is logged to ~/.config/modelmux/audit.jsonl for debugging and cost tracking.
Policy enforcement via ~/.config/modelmux/policy.json:
{
"blocked_providers": ["gemini"],
"blocked_sandboxes": ["full"],
"max_timeout": 600,
"max_calls_per_hour": 30,
"max_calls_per_day": 200
}
mux_check() now shows policy summary and audit stats.
User Configuration
Create .modelmux/profiles.toml or ~/.config/modelmux/profiles.toml:
[routing]
default_provider = "codex"
[[routing.rules]]
provider = "gemini"
[routing.rules.match]
keywords = ["frontend", "react", "css"]
[profiles.budget]
[profiles.budget.providers.codex]
model = "gpt-4.1-mini"
Links
License
MIT
Release files for modelmux 0.29.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| modelmux-0.29.0.tar.gz | 198.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| modelmux-0.29.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 314.1 kB
Release files / modelmux-0.29.0.tar.gz
| Download URL | modelmux-0.29.0.tar.gz |
|---|---|
| Size | 198.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e65cd921fd7d2634e3b272d6acdf2f30dc0783ba8f0a0584ab9b18f33dd208c1
|
|
BLAKE2b-256 checksum How to use checksums |
9d8c9cf130501f8c72f60fb0453cd024280a9773e2335f69520be3d0703374e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 7, 2026.
Transparency logRelease files / modelmux-0.29.0-py3-none-any.whl
| Download URL | modelmux-0.29.0-py3-none-any.whl |
|---|---|
| Size | 116.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e3aa45133dba1a3d6f562ea1c09225476f84a762b109b5970b57b8020367fbdb
|
|
BLAKE2b-256 checksum How to use checksums |
cb5035928de5704e71be72c1ff3f2581d9eda93dc4f6762886618de8497f54cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 7, 2026.
Transparency log