From 9148bb62e47994abc1ab0cb277420b6c4eada24b Mon Sep 17 00:00:00 2001 From: Spikel Date: Fri, 7 Aug 2026 11:11:52 +0800 Subject: [PATCH] Rewrite BitRouter vs OpenRouter, fix stale platform-fee claims MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The page argued on agent-native primitives (KYA, x402, injection checks) and a ~5ms vs ~30ms latency gap — neither is a real differentiator against OpenRouter, which is also low-latency and agent-native. Rewrote it around the three things that actually differ: we're fully open source and self-hostable, we take no cut, and the router learns your workload. The intro now credits OpenRouter for building the category before pivoting, rather than opening with an enumeration the bolded lead-ins already cover. Fee claims were contradictory across the repo: the pricing page, models page and llms-shared.ts all said 0% markup, while three CompareTable rows and the migration guide said "2% stablecoin / 5% card". 0% is correct; fixed all four stale spots. The vs-OpenRouter prose now concedes that OpenRouter passes inference through at 0% too, and names the two fees that genuinely differ (5.5% to load credits, 5% on BYOK). Cut the comparison table from 10 rows to 5 — one per argument. Ten rows was longer than the prose it supported, repeated the "when OpenRouter wins" section, and invited row-counting against a catalog we don't try to match. Co-Authored-By: Claude Opus 5 --- .../landing/compare/compare-programs.tsx | 50 ++++++++----------- .../overview/bitrouter-vs-openrouter.mdx | 22 +++++--- .../docs/guides/migrate-from-openrouter.mdx | 2 +- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/components/landing/compare/compare-programs.tsx b/components/landing/compare/compare-programs.tsx index 36c21d3..eeba789 100644 --- a/components/landing/compare/compare-programs.tsx +++ b/components/landing/compare/compare-programs.tsx @@ -62,7 +62,7 @@ export const COMPARE_REGISTRY: Record = { { feat: "Routing overhead", them: "✗ ~20ms+ (asyncio overhead)", br: "✓ ~5ms p50" }, { feat: "Per-run cost attribution", them: "✗", br: "✓" }, { feat: "BYOK support", them: "✓", br: "✓" }, - { feat: "Platform fee (hosted option)", them: "— self-host only", br: "✓ 2% stablecoin / 5% card" }, + { feat: "Platform fee (hosted option)", them: "— self-host only", br: "✓ none · 0% markup" }, ], tradeoffs: [ "You want a Python-native library embedded directly in your application code with SDK-level call hooks", @@ -86,45 +86,39 @@ export const COMPARE_REGISTRY: Record = { ], }, "02": { - term: "agent_a · bitrouter gateway", + term: "billing · $1,000 of inference", prog: () => [ - ["print", agent_a → POST /v1/chat/completions, 320], - ["print", KYA identity verified agent_a · run_8x2k, 200], - ["print", injection check clean, 200], - ["print", x402 payment authorized $0.003 USDC, 420], - ["print", OpenRouter: ✗ no MCP · no KYA · no payments, 600], + ["print", what the gateway takes on top, 240], + ["print", OpenRouter +$55 5.5% to load credits, 200], + ["print", +5% on BYOK over the free allowance, 260], + ["print", BitRouter +$0 0% markup · BYOK free, 420], + ["print", self-hosted · no platform fee at all, 600], ["loop", 2000], ], }, "03": { - term: "router · latency benchmark", + term: "router · learning your workload", prog: () => [ - ["print", routing overhead · p50, 240], - ["print", OpenRouter ~30ms hosted SaaS, 200], - ["print", BitRouter ~5ms Rust async binary, 320], - ["print", {" ↓ 6× faster overhead"}, 300], - ["print", at 10k calls/day · saves ~4 min of latency, 600], + ["print", run 001 → frontier $0.21 · tests green, 300], + ["print", observed · scored · learned, 200], + ["print", run 240 → open-weight $0.04 · tests green, 320], + ["print", escalates only what needs frontier, 420], + ["print", static auto-routers never get to run 240, 600], ["loop", 2000], ], }, }, rows: [ - { feat: "Open source & self-hostable", them: "✗ closed-source cloud", br: "✓ Apache 2.0 binary" }, - { feat: "Permissionless provider registry", them: "✗ curated, closed", br: "✓ PR-based, open" }, - { feat: "Agent gateway (MCP / ACP / Skills)", them: "✗", br: "✓ built-in" }, - { feat: "Autonomous agent payments (x402)", them: "✗", br: "✓" }, - { feat: "KYA agent identity", them: "✗", br: "✓" }, - { feat: "Prompt injection detection", them: "✗", br: "✓" }, - { feat: "Multi-provider failover mid-run", them: "⚠ limited", br: "✓ automatic" }, - { feat: "Routing overhead", them: "✗ ~30ms", br: "✓ ~5ms p50" }, - { feat: "Per-run cost attribution", them: "✗", br: "✓" }, - { feat: "BYOK support", them: "✓", br: "✓" }, - { feat: "Platform fee", them: "✗ 5.5% card only", br: "✓ 2% stablecoin / 5% card" }, + { feat: "Open source & self-hostable", them: "✗ closed-source cloud", br: "✓ Apache 2.0 binary" }, + { feat: "Fees on top of provider price", them: "✗ 5.5% credits · 5% BYOK", br: "✓ none" }, + { feat: "Routing", them: "⚠ static auto-router", br: "✓ learns from your runs" }, + { feat: "Hosted model catalog", them: "✓ hundreds, incl. long tail", br: "⚠ ~50, SOTA agentic & coding" }, + { feat: "Free-tier models", them: "✓", br: "✗ not yet" }, ], tradeoffs: [ - "You need the widest possible model catalog and don't want to operate any infrastructure", - "You're building a consumer-facing app that doesn't require agent-native features", - "Your team already has OpenRouter integrations and no migration bandwidth right now", + "You need the widest possible model catalog, long tail included", + "You want free-tier models rather than production-grade routing", + "You need enterprise features we haven't built out yet", ], }, @@ -179,7 +173,7 @@ export const COMPARE_REGISTRY: Record = { { feat: "Routing overhead", them: "⚠ ~15ms p50", br: "✓ ~5ms p50" }, { feat: "Per-run cost attribution", them: "✓", br: "✓" }, { feat: "BYOK support", them: "✓", br: "✓" }, - { feat: "Platform fee", them: "— varies by plan", br: "✓ 2% stablecoin / 5% card" }, + { feat: "Platform fee", them: "— varies by plan", br: "✓ none · 0% markup" }, ], tradeoffs: [ "Your team already relies on Portkey's prompt management, versioning, and caching workflows", diff --git a/content/docs/(guide)/overview/bitrouter-vs-openrouter.mdx b/content/docs/(guide)/overview/bitrouter-vs-openrouter.mdx index f9fd2ae..22fb517 100644 --- a/content/docs/(guide)/overview/bitrouter-vs-openrouter.mdx +++ b/content/docs/(guide)/overview/bitrouter-vs-openrouter.mdx @@ -1,23 +1,29 @@ --- title: BitRouter vs OpenRouter -description: OpenRouter is a closed-source cloud gateway with the widest model catalog; BitRouter is an Apache 2.0 binary you run anywhere, with ~6× less routing overhead and agent-native primitives built in. An honest side-by-side. +description: Two takes on the same idea. OpenRouter went wide on the catalog; BitRouter went open source, took no cut, and taught the router to learn your workload. An honest side-by-side. --- -Every LLM gateway makes the same headline promise: one API, many models, automatic failover. The differences that actually decide the choice show up underneath — how you deploy it, what it costs you in latency on every call, and whether it was built for chat apps or for agents. +OpenRouter built this category. One key, hundreds of models, a catalog nobody has matched — if you've ever swapped providers without rewriting a line of code, that's largely their doing. We've learned plenty from them, and for a lot of teams they're still the right answer. -## Deployment and overhead +We're not trying to out-catalog them. BitRouter is a bet that the interesting problem has moved: not *how many models can you reach*, but *which one should this particular call go to* — and who owns the layer making that call. That's harder to build and slower to prove. It's the thing we want to build. -OpenRouter is a closed-source cloud gateway with the widest model catalog on the market. That breadth is real, but it comes with a dependency: there is no self-host option, so your routing layer lives on someone else's infrastructure and adds their network hop to every call — roughly **~30ms of overhead per request**. BitRouter is the inverse trade: an Apache 2.0 binary you own and run inside your own VPC or CI, at **~5ms p50** — about 6× less overhead — with an open, PR-based provider registry instead of a curated one you can't extend. +## Where we're genuinely different -## What each one routes +**You can run the whole thing yourself.** BitRouter is Apache 2.0, top to bottom — `bitrouter serve` and the router lives in your VPC, your CI, your laptop. OpenRouter is a closed-source cloud service: if it's down you're down, and you can't read the code that's choosing your models. Self-hosted, there's no platform fee at all. -The sharper divide is what each one routes. OpenRouter routes model requests. BitRouter routes *agent runs*: identity per agent (KYA), an MCP/ACP tool gateway, injection checks, and autonomous stablecoin payments (x402) — none of which exist in OpenRouter. And where OpenRouter's routing is static, BitRouter wraps your loop in an [act → observe → evaluate → learn](/docs/overview/what-is-bitrouter) cycle that tightens routing every run. +**We don't take a cut.** You pay the upstream provider rate and nothing else — 0% markup on every token. OpenRouter passes inference through too, but bills **5.5% to load credits** and **5% on BYOK traffic** past their free allowance. Bring your own keys to BitRouter and we charge you nothing for it. + +**The router learns your workload.** Every gateway can pick a model. BitRouter runs an [act → observe → evaluate → learn](/docs/overview/what-is-bitrouter) cycle over your actual runs, so routing tightens with every request instead of following a preset someone else tuned. That's the whole product — not a feature bolted onto a catalog. -## OpenRouter is the right call when +## When OpenRouter is the better call + +**You want everything.** We host roughly 50 models, deliberately — the SOTA tier for agentic and coding work. OpenRouter carries hundreds, including the long tail we don't. You can always [bring your own model](/docs/gateway-and-routing/bring-your-own-model), local or cloud, and we don't charge for it — where OpenRouter takes a cut of BYOK traffic. + +**You want free models.** OpenRouter has a free tier on some models; we don't. We're focused on making production agent workflows reliable and cheap, and free tiers come with the rate limits and quantization that production loops can't live with. -You need the widest possible model catalog with zero infrastructure to operate, you're building a consumer-facing app that doesn't need agent-native features, or your team already runs OpenRouter and has no migration bandwidth right now. Switching later is a one-URL, one-key change — the [migration guide](/docs/guides/migrate-from-openrouter) walks it in under five minutes. +**You need deeper enterprise tooling.** OpenRouter has more of it built out today. If there's a requirement we don't meet, [talk to us](/enterprise) — we'd rather hear the gap than guess at it. ## Next steps diff --git a/content/docs/guides/migrate-from-openrouter.mdx b/content/docs/guides/migrate-from-openrouter.mdx index 8049274..e7df29a 100644 --- a/content/docs/guides/migrate-from-openrouter.mdx +++ b/content/docs/guides/migrate-from-openrouter.mdx @@ -14,7 +14,7 @@ BitRouter offers several advantages over OpenRouter for agent workloads: | Feature | OpenRouter | BitRouter | |---------|------------|-----------| | **Deployment** | Cloud-only (closed-source) | Self-host or cloud (Apache 2.0) | -| **Platform Fee** | 5.5% via Stripe | 2% via stablecoins · 5% via Stripe | +| **Platform Fee** | 5.5% to load credits · 5% on BYOK | None — 0% markup, BYOK free | | **Agent Features** | Basic routing | Headless CLI, agentic payment, MCP/ACP gateway | | **Access** | Account registration required | No registration required |