⚡ New — Kimi K3 is live: bring your own Moonshot key →

← Blog

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.

GLM host showdown — the same GLM-5.2 across four hosts: Baseten leads (5.8s, 121 tok/s), Fireworks new at 10.2s (68 tok/s), Zhipu the source at 14s (50 tok/s) and OpenRouter at 14s (50 tok/s, provider mix shifted), all routed through one BharatRouter key with failover.

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)LatencyEff. tok/s₹ / taskErrors
Baseten first-party5.8s121₹0.300
Fireworks new — BYOK10.2s68₹0.300
Zhipu the source14.0s50₹0.300
OpenRouter14.0s50₹0.210

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).

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)LatencyEff. tok/s₹ / taskErrors
OpenRouter4.1s173₹0.300
Baseten first-party~6.0s116₹0.300
Zhipu the source13.5s52₹0.300

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 } }  // blend

One 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

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 →
Was this helpful?