Overview
ModelPanel is a BYOK gateway — bring your own keys, route across any provider with one OpenAI- and Anthropic-compatible endpoint, and fuse models into panels that measurably beat any single model.
ModelPanel is a BYOK model gateway: point Claude Code, Codex, or any OpenAI SDK app at one local endpoint, and it routes across every provider you have keys for — with streaming, automatic fallback, and a fusion panel that measurably beats any single model (95.0% vs 90.0% on matched GSM1K).
Three ideas, in order:
- BYOK — your keys, your machine. The gateway binds
127.0.0.1:8787, reads keys from a local vault, and sends each key only to the provider that owns it. Every tier works the same way: permanent free tiers, credit-limited tiers, discounted tiers, or paid. - Select models — task aliases (
free/reasoning,free/code) or direct ids (groq/openai/gpt-oss-120b) resolve through health-aware chains scored by probe data, latency, and rate budget. A registry-driven catalog means new providers are a config entry, not code. - Model fusions —
modelpanel/fusionruns 3 models in parallel and a judge merges the answers: 95.0% vs 90.0% for the best single model on matched GSM1K. Your own recipes via~/.modelpanel/combos.json.
30-second tour
npx modelpanel add-key groq # prompted; stored in ~/.modelpanel/keys.json (0600)
npx modelpanel serve # gateway on 127.0.0.1:8787 (fusion sidecar: spawned)
# Claude Code
export ANTHROPIC_BASE_URL=http://127.0.0.1:8787
export ANTHROPIC_AUTH_TOKEN=local # any non-empty token — the gateway has no auth
export ANTHROPIC_MODEL=modelpanel/fusion
curl -s http://127.0.0.1:8787/v1/models | jq '.data[].id'
What’s inside
Install, add keys, seed the registry, serve, and point Claude Code at it.
Three dialects, tier-aware routing, notices, the fusion sidecar, registry hot-reload.
CLI commands, HTTP endpoints, response headers, virtual models, env vars.
The measured fusion story: 95.0% vs 90.0% vs 82.5% on matched GSM1K.
M1 (core gateway) → M2 (streaming, Anthropic, notices, fusion) → rename.
Why tiers matter (but aren’t the point)
The gateway treats provider keys uniformly, but it knows what kind of key it holds — free-permanent, free-credits, discounted, or paid — and routes accordingly: default candidates come from free and discounted tiers, and paid keys fire only when you opt them in with paid: allow. That’s how fusion stays practical: running a panel costs ~4 calls per prompt, which is latency on cheap tiers — not money on paid ones.
Status
M2 shipped — OpenAI Responses + Chat Completions + Anthropic Messages (all streaming), 7 provider adapters, opportunity notices, tier-aware keys, fusion sidecar with recipes. Roadmap: registry-gen + prober as the shipped M3 (the probe pipeline already runs on the Open Assistants infra every 8 hours).
Source of truth for this page: ModelPanel · open-assistants-lab/ModelPanel