bitrouter
App Listed
elastic inference for your agentic workloads, on your terms
- Downloads
- 145
- Dependents
- Not applicable
- Stars
- 239
- Forks
- 23
- Contributors
- 7
- Commits
- 1,016
- Latest release
- 0.33.0 ·
About
The minimal interpretable model router that learns & adapts to your agent workflows.
Point an OpenAI-compatible agent at your local BitRouter instance and choose
bitrouter/auto after configuring an auto router and policy. See the
routing guide for setup.
- OPENAI_BASE_URL=https://api.openai.com/v1
+ OPENAI_BASE_URL=http://localhost:4356/v1
Then set the request model to:
bitrouter/auto
BitRouter runs locally and exposes an OpenAI-compatible API, so existing agents and tools can switch over with minimal changes.
You can also give your coding agent the /bitrouter skill to install, configure, migrate to, and troubleshoot BitRouter for you:
npx skills add bitrouter/bitrouter
Try BitRouter Cloud →: Use
https://api.bitrouter.ai/v1with a Cloud credential and a catalog model ID. Hosted routing presets use@<name>; the localbitrouter/autoselector requires a local router.
Core features
Minimal core. Lightweight & extensible.
One Rust router sits between your agents and every model provider. Extend it with providers, routing policies, tools, skills, and sub-agents without rebuilding your workflow around a new agent runtime.
Read the full README
Interpretable decisions. Under your control.
Routing policy lives in files you own. Routes are inspectable, changes are diffable, and a live policy changes only when you explicitly publish it.
A customizable router. Adapt it to your workflow.
Start with bitrouter/auto, then shape the models, rules, guardrails, and
evaluation objective around your own loop. BitRouter learns from the outcomes
you admit and proposes a new policy you can review, publish, or revert.
Integrates with your agent stack
Keep the clients and workflows you already use:
- Model APIs — OpenAI Chat Completions and Responses, and Anthropic Messages, with cross-protocol routing. Metered Gemini uses Google’s OpenAI-compatible Chat endpoint.
- Coding agents — built-in Codex and Claude support through native launchers, headless commands, and ACP adapters.
- Tools & skills — manage upstream MCP configuration with
bro mcpand existing local skill directories withbro skills. Install skills withnpx skills; native tasks and supported ACP runs use explicitly selected skills. MCP content retains independent source permission and per-skill consent. See the CLI reference for supported hosts, commands and delivery limits.
Benchmarks
On Terminal-Bench 2.1, BitRouter cut API cost by 40.9% while achieving nearly the same reward as using gpt-5.6-sol alone.
| Configuration | Reward | Cost / trial | Cost savings |
|---|---|---|---|
gpt-5.6-sol only | 81.56% | $0.830 | — |
| BitRouter | 81.25% | $0.490 | 40.9% |
| Random model mix | 76.50% | $0.553 | 33.4% |
BitRouter dynamically routed between GPT-5.6, Kimi K3, and DeepSeek V4 Flash, retaining nearly all of GPT-5.6’s task performance while substantially reducing model cost.
The random baseline used the same model mix, showing that the savings come from routing decisions—not simply using cheaper models.
Results use the strict 80-task common-valid set and frozen API prices. This is a research benchmark, not an official Terminal-Bench submission.
See the full study and limitations and the BitRouterAI/benchmarks dataset for reproducible results.
Install
Official macOS distributions support Apple Silicon (arm64) only.
# macOS (Apple Silicon) / Linux
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bitrouter/bitrouter/releases/download/v1.0.0-alpha.33/bitrouter-installer.sh | sh
# Homebrew
brew install bitrouter/tap/bitrouter
# Windows
powershell -ExecutionPolicy Bypass -Command "irm https://github.com/bitrouter/bitrouter/releases/download/v1.0.0-alpha.33/bitrouter-installer.ps1 | iex"
# npm
npm install -g bitrouter
# From source (Cargo)
cargo install bitrouter
These installers select the full product. Gateway-only release archives keep
the same bro executable and run as an independent model service. See
distribution profiles for archive verification,
configuration and profile-preserving updates.
Quick start
Run bro for line-based first-run setup. It ensures the background daemon is
ready and returns to the shell; subsequent calls reuse that daemon. Native
harness interfaces remain available through bro claude, bro codex and
bro launch <agent>.
bro threads manages native history, FIFO inputs, approvals and explicit
recovery. bro agents lists current connections; its single-operation commands
manage supervised ACP runs, settings, routes and native sessions. The existing
ThreadService, Core and controller retain execution and permission ownership.
bro code, bro tui, bro chat and bro agents attach have been removed.
They return migration guidance and never open an interface or start work.
bro # setup, then background daemon readiness
bro agents # live instances; catalog: agents list
bro run claude "summarize this repo" # one headless ACP turn
bro run codex "inspect tests" --background
bro agents pending <run-id> # inspect exact pending approvals
bro threads list # authorized durable native Threads
bro requests # settled requests and spend
bro route <model> # explain model resolution
The maintained Codex and Claude ACP adapters require Node.js 22+ and npx;
native launchers use each harness's own interface and per-process overrides.
See docs/CLI.md for the complete command reference, session
controls, flags, and config resolution.
Workflow recipes
Ready-made policy specs for common agentic workflows start in templates/auto-router/: a predictive bitrouter/auto / bitrouter/auto:cost ladder using GPT-5.6 as the strong tier, Kimi K3 as balanced, and DeepSeek V4 Pro as economy. Treat it as a starting point and evaluate it against your own loop before publishing a live policy.
Models & providers
BitRouter routes to a model, not a provider. Each model below is served by many providers — its own lab, hyperscalers, gateways, and serverless clouds. BitRouter orders eligible routes by configured provider priority and can fall back on retryable failures. The bars are those routes: the more providers serve a model, the more room the router has to move. Current cost and latency sort options use the same deterministic priority order rather than live price or latency scoring.
Bring your own key to any of them, or use one BitRouter Cloud account with no keys at all. Frontier models from OpenAI, Anthropic, Google, and xAI also route over a subscription sign-in (Claude Pro/Max, GitHub Copilot, ChatGPT Codex) instead of a key.
The chart is generated from dist/registry/ on every catalog
change — it is never hand-maintained, so it cannot drift from what the router
actually resolves. Full catalog in registry/.
Talk to founders
Try BitRouter Cloud → or reach out directly:
Want a first-party provider integration, or building an open-source agent/harness? Email kelsenliu@bitrouter.ai or book a meeting — open-source builders get up to 50% off for you and your community.
Development
- Development guide — documentation policy and engineering guide index
CONTRIBUTING.md— contribution workflow, issue reporting, and provider updatesCLAUDE.md— guidance for AI coding agents working in this repositoryskills/— the/bitrouterAgent Skill (source of truth)
Star History
License
Licensed under the Apache License 2.0.
Compatibility
- Runs on
- GPU support unknown
What shows it
- no dependency or feature matches a backend row
- Native code
- Required
- Binds native code: secp256k1-sys, aws-lc-rs (feature payments-tempo)
- Python bindings
- No Python binding crate found
- License
- Apache-2.0
Compare with similar projects
Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.
| Project | Downloads | Dependents | Stars | Latest release | Runs on (GPU) | Native code | License |
|---|---|---|---|---|---|---|---|
|
elastic inference for your agentic workloads, on your terms |
145 binary downloads per release | Not applicable | 239 | 0.33.0 | GPU support unknown | Binds native code: secp256k1-sys, aws-lc-rs (feature payments-tempo) | Apache-2.0 |
|
async-openai Featured
Rust library for OpenAI |
1,302,033 downloads over 30 days | 275 | 2,031 | 0.43.0 | GPU support unknown | No native code found | MIT |
|
rust-genai Featured
Multi-AI Providers Library for Rust. (OpenAI, Gemini, Anthropic, DeepSeek, Ollama, OMLX, AWS Bedrock, Vertex, Xai, Groq, Kimi, GLM and many more) |
118,643 downloads over 30 days | 81 | 938 | 0.7.3 | GPU support unknown | No native code found | Apache-2.0 OR MIT |
|
ollama-rs Featured
A Rust library for interacting with the Ollama API |
45,579 downloads over 30 days | 68 | 1,061 | 0.3.6 | GPU support unknown | No native code found | MIT |
|
harmony Listed
OpenAI's response format for its open-weight model series gpt-oss Python bindings |
489,508 downloads over 30 days | 9 | 4,539 | 0.0.8 | GPU support unknown | No native code found | Apache-2.0 |
|
Plano is an AI-native proxy server and data plane for agentic apps. Smart LLM routing, observability, agent orchestration, and guardrails so you stay focused on your agents core logic. |
211 binary downloads per release | Not applicable | 7,111 | Not measured | Not measured | Apache-2.0 | |
|
Inference server for LLMs, speech and embeddings: OpenAI-compatible routes with streaming, plus speech synthesis (TTS) and transcription (ASR). Serves Llama, Mistral, Qwen, Mamba2, MLA+MoE and hybrid models from SafeTensors, AWQ, GPTQ and GGUF. |
8 binary downloads per release | Not applicable | 7 | 0.7.1 | CUDA, WebGPU | Binds native code: ring (feature distributed) | Apache-2.0 |
Why ListedNo archive, New or Featured rule places it, so it is Listed.
What it lacks for Featured
- The check holds no value for Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days. A gate that lacks its signal does not pass.
What else the check found
- The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 365 days. Dormancy rule
Not measured: Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days.
Exact rules: Listed, Featured app. The check on applied thresholds version 9.
Every rule outcome, as the check records it
expected-interval: app: E = 365 daysdormancy: last activity 2026-11-08, 1 days ago, E = 365: activefeatured: not featured: unknown homebrew_on_request_365d, repology_families, docker_pull_growth_90dlisted: listed: no archive, new or featured rule applies
Crates27 crates
- bitrouter Primary
- bitrouter-a2a
- bitrouter-accounts
- bitrouter-ai
- bitrouter-anthropic
- bitrouter-api
- bitrouter-attestation
- bitrouter-attestation-plugin
- bitrouter-bedrock
- bitrouter-blob
- bitrouter-cloud-sdk
- bitrouter-config
- bitrouter-core
- bitrouter-google
- bitrouter-guardrails
- bitrouter-mcp
- bitrouter-observe
- bitrouter-openai
- bitrouter-orchestrator
- bitrouter-providers
- bitrouter-registry
- bitrouter-runtime
- bitrouter-sdk
- bitrouter-skills
- bitrouter-substrate
- bitrouter-telemetry
- bitrouter-tui
Measurements and sources
Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.
Sources6 sources
- Description: the GitHub repository description
- crates.io database dump, fetched
- GitHub repository, fetched
- crates.io package, fetched
- GitHub releases, fetched
- GitHub contributors, fetched
Adoption145 binary downloads per release4 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Active dependents | Not measured | Yes | ||
| New dependents (365 days) | Not measured | Yes | ||
| Peak active dependents | Not measured | Yes | ||
| Active dependents as a share of the peak | Not measured | Yes | ||
| Binary downloads per release | 145 | GitHub releases | Yes |
MaintenanceLatest human commit: 1 day ago4 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Latest human commit | 2026-11-08 | GitHub repository | Yes | |
| Latest release | 2026-10-29 | crates.io database dump | Yes | |
| First release | 2026-03-06 | crates.io database dump | Yes | |
| Latest version | 0.33.0 | crates.io database dump | No | |
| Days the oldest outside issue waits for a reply | 115 | GitHub repository | Yes | |
| Maintainer replies over 365 days | 0 | GitHub repository | Yes | |
| Repository archived | false | GitHub repository | Yes | |
| Repository gone | false | GitHub repository | Yes | |
| Release commit or manifest in the repo | true | crates.io package | No | |
| Published docs | Not measured | Yes | ||
| Latest release fails cargo check | Not measured | Yes | ||
| Build check date | Not measured | Yes | ||
| Build check toolchain | Not measured | Yes |
SecurityNot measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Unpatched vulnerabilities past the grace window | Not measured | Yes | ||
| RustSec unmaintained advisory | Not measured | Yes | ||
| Deprecation notice | Not measured | Yes | ||
| Deprecated requirement | Not measured | Yes |
Distribution92 releases, 74 downloads over 30 days6 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Releases | 92 | crates.io database dump | No | |
| Downloads over 30 days | 74 | crates.io database dump | No | |
| Binary downloads over the last 3 releases | 437 | GitHub releases | Yes | |
| Homebrew installs on request over 365 days | Not measured | Yes | ||
| Repology repository families | Not measured | Yes | ||
| Docker pull growth over 90 days | Not measured | Yes | ||
| Docker pulls at the growth baseline | Not measured | Yes | ||
| Every version a prerelease | false | crates.io database dump | Yes | |
| Every version 0.0.x | false | crates.io database dump | Yes | |
| Every version yanked | Not measured | Yes | ||
| Crate deleted from crates.io | Not measured | Yes |
Repository239 stars, 23 forks, 7 contributors, 1,016 commits. Stars alone never qualify a project.
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| GitHub stars | 239 | GitHub repository | Yes — one part of the repository route | |
| GitHub forks | 23 | GitHub repository | Yes — one part of the repository route | |
| Contributors with a GitHub account | 7 | GitHub contributors | Yes — one part of the repository route | |
| Commits on the default branch | 1016 | GitHub repository | No | |
| Repository's main crate left out of the entry | none | crates.io database dump | Yes |
Facts that never count
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| License | Apache-2.0 | crates.io database dump | No | |
| Runs on, from listed crates and their direct dependencies | GPU support unknown | crates.io database dump | No | |
| What shows each backend | no dependency or feature matches a backend row | crates.io database dump | No | |
| Native code, from listed crates and their dependencies | Binds native code: secp256k1-sys, aws-lc-rs (feature payments-tempo) | crates.io database dump | No | |
| Python bindings, from direct dependencies of listed crates | No Python binding crate found | crates.io database dump | No | |
| Crates that depend on a listed crate directly | Not measured | No |
Corrections and review history
No correction applies to this entry.
Judgments
A judgment enters only through an approved issue and a merged pull request.
No judgment applies to this entry.