The GLM host showdown: Baseten vs OpenRouter vs Zhipu vs Fireworks
Same open GLM model family, four different hosts, one BharatRouter key. We benchmarked them head to head — then wired them into a single route so a slow or failing host never reaches your users.

The benchmark
Same model (GLM-5.2), same prompt (a long streamed answer, ~900 tokens with reasoning), all through BharatRouter's /v1/chat/completions — only the host changes. We report end-to-end latency (normalized to a ~700-token answer), effective throughput (output tokens ÷ latency), cost from the real measured tokens, and errors. This is anidentical-weights race — unlike earlier drafts that compared different GLM versions per host — and every row below was measured in one session on 2 July 2026, 20 streaming runs per host, round-robin interleaved so no host gets a time-of-day advantage.
| Host — GLM-5.2 (long-output stream) | Latency | Eff. tok/s | ₹ / task | Errors |
|---|---|---|---|---|
| Baseten first-party | 5.8s | 121 | ₹0.30 | 0 |
| Fireworks new — BYOK | 10.2s | 68 | ₹0.30 | 0 |
| Zhipu the source | 14.0s | 50 | ₹0.30 | 0 |
| OpenRouter | 14.0s | 50 | ₹0.21 | 0 |
Look at the price column before the speed column: Baseten, Fireworks and Zhipu all charge the same list rate for GLM-5.2 — $1.40 in / $4.40 out per Mtok, because hosts anchor to the source's sticker price — yet the same rupee buys 121, 68 or 50 tok/s. For flagship open-weight models the market competes on speed, not price. The one cheaper row is a marketplace, and that discount comes with lottery variance (see below).
- Baseten — now the outright leader. 121 effective tok/s, ~0.7s TTFT, 5.8s for a ~700-token answer — fastest on both sustained throughput and first token (the ~1.4s end-to-end figure from our 1,400-run short coding benchmark still stands).
- Fireworks — the new fourth host. 68 tok/s and 10.2s, zero errors, at the same $1.40/$4.40 per Mtok list price as Zhipu. It's BYOK-discovered: save your Fireworks key and call
fireworks/accounts/fireworks/models/glm-5p2— no catalog entry needed. - OpenRouter — a provider lottery this week. Median 50 tok/s, down from the 173 we measured on 30 June. The spread tells the story: one run in twenty still hit ~168 tok/s (the fast upstream), the rest landed 12–83 — OpenRouter is itself a router, and the underlying provider mix behind
z-ai/glm-5.2shifted. Cheapest per task (₹0.21), zero errors. - Zhipu — the source, steady. 50 tok/s and 14.0s (52 and 13.5s in June) — consistent run to run, but the slowest first token (~3.3s TTFT) and historically the most rate-limited under load (HTTP 429 / code 1302).
In the open: the table is the long-output streaming race — identical GLM-5.2, 20 runs per host, measured 2 July 2026 from a cloud VM colocated with the gateway; medians, with latency normalized to ~700 output tokens (throughput is output-length independent). Receipts, not vibes: every raw run — per-request latency, TTFT, token counts — and the sweep script itself are published:combined results ·Baseten ·OpenRouter ·Zhipu ·Fireworks ·glm_host_sweep.py — set BR_KEY to your own key (one command via our CLI: brcode login) and rerun the same sweep. OpenRouter's fall from 173 to 50 tok/s between our June and July sweeps is exactly the point: any single host — even a meta-router — can change under you. Don't depend on one host.
Addendum — the 30 June sweep, for the record
Same methodology, measured 28–30 June 2026 (Fireworks wasn't in the lineup yet). Kept here so the drift is visible, not memory-holed:
| Host — GLM-5.2 (30 Jun) | Latency | Eff. tok/s | ₹ / task | Errors |
|---|---|---|---|---|
| OpenRouter | 4.1s | 173 | ₹0.30 | 0 |
| Baseten first-party | ~6.0s | 116 | ₹0.30 | 0 |
| Zhipu the source | 13.5s | 52 | ₹0.30 | 0 |
Two sweeps, five days apart: the leader changed, the leader's margin changed 3×, and the cheapest host changed. That churn is the product argument.
Don't pick one — route across them
The point of a gateway is that you don't have to choose. Put the hosts behind onefailover chain and a slow or erroring host transparently rolls to the next — with BharatRouter's circuit-breaker doing the health tracking. China-resident Zhipu sits last:
POST /v1/chat/completions
{
"model": "glm-4.7",
"fallbacks": [
{ "model": "glm-4.7", "provider": "baseten" },
{ "model": "glm-4.7", "provider": "openrouter" },
{ "model": "glm-4.7", "provider": "zhipu" }
]
}Publish that as a collection — “GLM (robust)” — and anyone can fork it, reorder the hosts, or swap in their own BYOK. Reliability becomes a one-line import.
Route for what you care about
Or let BharatRouter pick the host per request with the optimize knob — the benchmark above is exactly what it optimizes against:
{ "model": "glm-4.7", "optimize": "latency" } // -> Baseten (fastest)
{ "model": "glm-4.7", "optimize": "price" } // -> cheapest live host
{ "model": "glm-4.7", "optimize": "throughput" } // -> highest tok/s
{ "model": "glm-4.7", "optimize_weights": { "price": 0.6, "latency": 0.4 } } // blendOne key, one model id — the gateway routes to the host that wins on your axis, and fails over if it's down.
Why this matters
- No lock-in — open MIT-licensed GLM, swap hosts with one field.
- Reliability by routing — failover + circuit-breaker, not hope.
- Residency control — order US hosts first, China last, or pin
india_only. - Governed & metered — budgets and per-turn usage across every host.
New here? Start with Zero to a GLM coding agent in one command. · Recipe + scripts: GitHub →
Now live: can a GLM consensus match a frontier model? — the benchmark, on cost and quality.
Go live in a few clicks. Install a governed GLM coding agent in one command — Codex- or Claude-Code-style, routed & metered through your own key.BharatRouter Code →