Local LLM router
Choose the route. See why it changed.
RobinBandit receives OpenAI, Responses and Anthropic-style calls, tries the providers you enabled, and keeps the decision visible in a local panel.

Routing modes
Pick how the normal route behaves.
Adaptive routing is the default, but not the only choice. Use tiers when priority matters, a fixed list for predictable tests, or round robin when you want simple rotation.
Adaptive
Learns from quality, health, latency and quota. It keeps exploring instead of locking onto the first provider that worked.
Tier priority
Exhausts tier 1 before tier 2. Learning still decides the order inside each tier.
Fixed list
Uses the exact chain order you set and moves on only after failure or temporary unavailability.
Round robin
Rotates the first available provider after each real attempt. Opening the panel never moves the cursor.
Live routing demo
Watch the queue learn.
Each simulated call updates quality, health and latency. The order changes with the evidence. Click a provider to simulate a rate limit and watch it move down until its cooldown ends.
Reinforced calls
Try preferred accounts first.
Reinforced is a per-call route. Put subscriptions, paid credits or free accounts in the order you want. If all of them fail, RobinBandit returns to the normal route.
Use it from OpenAI, Responses and Anthropic clients with X-RobinBandit-Mode: reinforced.

Panel
Know what is configured and what actually called.
Authentication and connection are separate states. The panel shows who can answer, which tool has sent a request, what was consumed and why a provider moved in the queue.




Usage and cost
Show the numbers that are real.
Usage is stored under ~/.robinbandit. Tokens are counted when providers report them. Cost is stored only when a provider sends it, so unknown price never looks like free usage.
| Signal | Used for routing | Shown in panel | Retention |
|---|---|---|---|
| Input and output tokens | No | 7 days to one year | 365 days |
| Provider-reported cost | No; cost class guides routing | USD with coverage | 365 days |
| Latency and health | Every routing decision | Current queue | Learned locally |
| Quota and cooldown | Avoids the next 429 | Current state | Runtime only |
“Cost not reported” is different from $0.00. The panel keeps that distinction visible.
Adaptive loop
A route that changes when evidence changes.
Adaptive mode separates operational health from answer quality. A provider can be online and still produce weak answers, or be good but temporarily blocked by quota.
Score
Use quality, latency, health, tier, cost class, quota and open calls.
Try
Call providers in order and keep a clear final notice when nobody answers.
Classify
Separate rate limit, credit exhaustion, timeout and other failures.
Update
Record health immediately and quality when your app sends feedback.
Quickstart
One process, three client protocols.
Providers appear in the active chain only when selected and usable. Codex CLI enters through the Responses API; ChatGPT Codex is a separate outbound provider that can answer through its authenticated CLI session.
# install the server and provider adapters pip install "robinbandit[server,yaml,providers]" robinbandit serve # panel http://localhost:8000/painel # OpenAI-compatible endpoint http://localhost:8000/v1/chat/completions # Responses API (Codex CLI) http://localhost:8000/v1/responses # Anthropic-compatible endpoint http://localhost:8000/v1/messages
Provider catalog
A catalog is not your active route.
RobinBandit ships with provider adapters, but a provider only joins your chain when you configure it or add credentials. Anonymous endpoints such as LLM7 still require explicit opt-in.
ROBINBANDIT