Skip to content
Launch14 Oct 2026By the Inworld inference team13 min read

Introducing Inworld Inference

We rebuilt how open models are served for consumer apps, from the attention kernels to the cache router. Today it is open to every developer.

Key results
up to 7.8×
faster first token than the median provider on OpenRouter
up to 48%
lower input price than the median provider, and the lowest of any that doesn't train on your data
1.8×
more requests served on the same hardware, while median time to first token improves
up to 90%
of each prompt served from cache, at up to 99% off
99.999%
of requests completed without an error

AI's first wave was built for companies. Developers have felt it, and so have finance teams, but most people haven't yet seen AI change their lives. The bigger wave is built for people: a tutor on the commute, a coach mid-run, a language partner who waits for you to finish your sentence, someone to talk to after a hard day. Today only 2% of US households, and 3% of US consumers, spend anything on AI.[7] Consumer AI is where the internet was in 1995.

Building for people is a different engineering problem. In consumer AI, latency is revenue: when a reply is slow, people go back to tapping buttons. Every turn resends the whole history, so prompts run 13 to 36 times longer than replies. One interaction fans out into many model calls, from moderation and memory to ranking and the reply itself. People pay $5 to $20 a month, or nothing, so each of those calls has to cost almost nothing. And when a consumer app goes down for ten minutes, its users leave for another one, while an enterprise workflow just waits.

The big labs and most inference providers have doubled down on enterprise and coding. Consumer AI needs the opposite on every count. So we built Inworld Inference, the first inference service designed for consumer AI, and today it is open to every developer.

Rather than list thousands of models, we go deep on the open models consumer apps choose. Each one, from Gemma 4 to GLM, DeepSeek and MiMo, gets its own serving build: new attention kernels, realtime decoding where a small draft writes ahead and the full model checks it in one pass, lower-precision weights wherever the evals hold, and a router that sends every turn back to the server that already holds its context.

The same research gives lower latency, lower cost and higher reliability. On Gemma 4 26B, first tokens arrive up to 7.8 times faster than from the median provider on OpenRouter, and the same hardware serves 1.8 times the requests it did in September, with a faster median first token. Input prices are the lowest of any provider that doesn't train on your data, on three of the five models we feature. Up to 90% of each prompt is served from cache, and cached input costs up to 99% less. On GLM 5.3 Flash, 99.999% of more than 20 million requests in 30 days completed without an error. Every build ships only if it matches the eval scores of the build it replaces.

Consumer AI is all we do, so being good at this is existential for us. Almost every token we serve comes from an app people use in their own lives, tens of trillions of tokens a month, 25 times what we served in March. Use the hosted models with no rate limits and a service tier per request, route across them with automatic failover, or bring your own model for a dedicated deployment.

Price, first token and reliability, against other providerslower is better on every panel
Lower cost: Gemma 4 26B input list price against the median provider of the same model that doesn't train on your data, 12 Oct 2026. Fastest replies: Gemma 4 26B p95 time to first token against the median provider on OpenRouter. Most reliable: GLM 5.3 Flash, more than 20 million requests in the 30 days to 12 Oct 2026. From our Inference page.

01Consumer vs. enterprise inference

For an enterprise task that replaces expensive manual work, a single result can justify a lot of compute, and the result can wait. A consumer app has to deliver interaction after interaction inside one subscription or one free session, while a person waits for each reply. So the number to optimize is the cost of one completed interaction, at the quality and response time the product needs.

Our goal is to get this down to a few cents per user per day, and that's something that you can only do with true experts and an ML team that really understands the trade-offs and techniques for accomplishing that.

FaiStatus by Wishroll

The table below sets the two workloads side by side, with what we built for each.

Consumer vs. enterprise inferenceside by side, with the engineering for each
THE WORKLOADENTERPRISE AICONSUMER AIWHAT WE BUILTWho waits
a workflow; seconds are fine
a person, inside a 0 to 300 ms turn gap
Prompt shape
long outputs: code, documents
huge prompt, short reply: 13 to 36× more in than out
Load
business hours, steady
everyone at once: evenings, launches, spikes
Failure
retry inside the workflow
an outage sends users to the next app
Models
closed frontier models, one vendor's policy
open models, the app's own fine-tunes and policy
Who pays
per seat, by contract
per free user: 98% of US households pay nothing for AI
Who waitsENTERPRISE AIa workflow; seconds are fineCONSUMER AIa person, inside a 0 to 300 ms turn gapWHAT WE BUILTRealtime decoding: first token 154 → 117msPrompt shapeENTERPRISE AIlong outputs: code, documentsCONSUMER AIhuge prompt, short reply: 13 to 36× more inthan outWHAT WE BUILTKV-aware routing: up to 90% cache hits onrepeated promptsLoadENTERPRISE AIbusiness hours, steadyCONSUMER AIeveryone at once: evenings, launches, spikesWHAT WE BUILTFour tiers per request on the same weightsFailureENTERPRISE AIretry inside the workflowCONSUMER AIan outage sends users to the next appWHAT WE BUILTFive nines on more than 20 millionrequestsModelsENTERPRISE AIclosed frontier models, one vendor's policyCONSUMER AIopen models, the app's own fine-tunes andpolicyWHAT WE BUILTYour weights, dedicated, drafts on yourtrafficWho paysENTERPRISE AIper seat, by contractCONSUMER AIper free user: 98% of US households paynothing for AIWHAT WE BUILT$0.07 per million input tokens (Gemma 426B)
The enterprise column is our characterization. Turn gap: Stivers et al., PNAS 2009. Prompt length and cache: apps we served, September 2026. Households: a16z with PNC data. Each row links to the section that covers it.[7]

The tightest constraint is time. In conversation, people leave 0 to 300 ms between turns.[7] The model's first token is only part of that window, because the network and, in a voice app, speech synthesis use the rest. So the first token has to arrive well inside 300 ms, at production load. On Gemma 4 26B, the median first token now lands in 117 ms, which leaves most of the window for the voice.

TTFT against the 0 to 300 ms human turn gapp50
human turn gap: 0 to 300 ms0 ms100 ms200 ms300 ms400 ms117 ms · Gemma 4 26B, realtime decoding build (replay, p50)161 ms · Gemma 4 26B in production (7-day p50)271 ms · Gemma 4 31B in production (daily p50)
human turn gap: 0 to 300 ms0 ms100 ms200 ms300 ms400 ms117 ms161 ms271 ms117 msGemma 4 26B, realtime decoding build(replay, p50)161 msGemma 4 26B in production (7-day p50)271 msGemma 4 31B in production (daily p50)
Measured: first token, Gemma 4 26B replay of production traffic (October 2026) and 7-day production p50; Gemma 4 31B daily production p50 after the new build. Turn gap: Stivers et al., PNAS 2009.[1][7]

The second difference is the size of each request. A consumer turn sends the whole conversation as the prompt and gets one short reply back. Across the apps we served in the 28 days to 23 September, median prompts were 13 to 36 times the length of replies. Enterprise work leans the other way, toward long outputs such as code and documents.

Prompt vs. output tokens per requestconsumer turn vs. enterprise task
Consumer turnmedian prompt 13 to 36× the replyper app, 28 days to 23 Sepprompt: the whole conversation so farreplyEnterprise tasklong outputs (illustrative)promptgenerated code or document
Consumer turnmedian prompt 13 to 36× the replyper app, 28 days to 23 Sepprompt: the whole conversation so farreplyEnterprise tasklong outputs (illustrative)promptgenerated code or document
Consumer ratio measured: prompt and output tokens per request, apps we served in September 2026. The bars show an example turn of 3,500 tokens in and 200 out; the enterprise row is illustrative.[1]

That workload already runs on Inworld at scale. On the most-used Gemma 4 models, we process up to 1.8 times the daily tokens that OpenRouter publicly reports across every provider on its platform combined.

Daily tokens: Inworld vs. all OpenRouter traffic, every provider combinedevery OpenRouter provider combined
Gemma 4 31Ball OpenRouter providersInworld1.8×Gemma 4 26Ball OpenRouter providersInworld1.5×
all OpenRouter providersInworldGemma 4 31B1.8×Gemma 4 26B1.5×
Measured: our metered Gemma 4 tokens a day against the total across every provider on OpenRouter, from OpenRouter's public model activity data, 4 to 10 Oct 2026; prompt plus completion tokens on both sides.[1]

We also serve those models faster. OpenRouter publishes first-token latency for every provider of a model. Against those measurements:[6]

  • Gemma 4 26B: the lowest median (0.17 s) and p95 (0.31 s) first token of the providers compared. That is 3.6 times faster at the median and 7.8 times faster at p95 than the median provider, at an input price nearly 40% below the median provider's.
  • MiMo 2.6 Pro: the lowest input price of the providers on OpenRouter, with the lowest median (0.39 s) and p95 (0.91 s) first token. That is 2.6 times faster at the median and 4.6 times faster at p95 than the next-fastest provider.
Time to first token by provider: Inworld vs. OpenRouter-listed providersp50 and p95, seconds, Oct 2026
Inworld p50Inworld p95other provider p50other provider p95shorter is faster
Measured: Inworld time to first token at our router over 24 hours; every other provider from OpenRouter's provider measurements for the same model, October 2026. Snapshots of each source, not a matched workload benchmark.[6]

The sections below cover the calls a consumer app makes, then each technique and what it changes for the app.

02Consumer inference tasks, and how we serve each

A consumer app doesn't make one kind of model call. A single turn can check the message for safety, classify what the person wants, read their memory, write the reply, call a tool and update the memory afterwards. Each of those calls has a different size, a different deadline and a different budget, and a provider built around one of them leaves the rest slow or expensive.

TaskWhat it needsHow we serve itWhat you get
Conversation repliescompanions, tutors, assistantsFast first token responses, even as the conversation gets longerRealtime decoding speeds up generation, and KV-aware routing reuses the conversation history already processedup to 7.8× faster first token than the median OpenRouter provider; up to 90% of the prompt from cache
Voice turnsthe reasoning inside speech to speechText fast enough for speech to start, and a fallback when a model is slowThe same serving path inside speech to speech, with a first-token timeout that moves to the next modelfirst audio as fast as 204 ms after the turn ends
Intent, safety and moderation checksrun before every replyFast checks on every message, before the reply startsSpecialized decision models such as Clef on an optimized serving path, along with lightweight Flash models for quicker checks11.5× the throughput of Clef's reference code for high-volume checks
Ranking and next-action decisionswhat to show or say nextStructured output, cheap at high volumeStructured outputs, with Flex for lower-cost background work or Priority for faster decisions while users waitfrom $0.07 per million input tokens
Memory and summariesupdating what the app remembersLong input that can wait a few seconds, at the lowest priceThe Flex tier for background work, with the cached conversation reusedcached input at up to 99% less
Stories and long repliesbedtime stories, interactive fictionA long answer that streams faster than people readDraft-and-verify decoding and fused mixture-of-experts kernelsup to 3× faster first token and 1.6× faster streaming on large MoE models
Model failoveroutages, timeouts, failed requestsKeep the app responsive when the primary model fails, without building separate recovery logicConfigure a primary model and compatible fallback models once. The router automatically tries the next model when a request meets the failure conditions you setautomatic recovery through one API, with each attempt reported in the response
Many model calls per turnrules, state and story in one turnSeveral model calls within one turn's latency and cost budgetOne API for every call, with a service tier per request and routing matched to each taskLatitude: tens of millions of calls in six weeks, about 20 per turn
Your own modela fine-tune for your appBetter quality for your app's agents, at lower cost and lower latencyPost-training with app-specific evals, served on a dedicated deployment with lower-precision weights and a draft trained on your trafficbetter efficiency at your quality targets, with quality measured against your existing model; +35% throughput on one customer's fine-tune

The same work sits underneath every row: kernels and decoding built for each model, a router that keeps each conversation's cache warm, precision checked against the evals, and a service tier per request so each call gets the speed or price it needs.

03The serving challenge: long context in, short reply out

Consumer apps have a distinctive traffic pattern. They send very long context to get a short reply, so processing and reusing the input matters as much as generation speed. And the calls one user action triggers each have their own size and deadline, as the timeline below shows.

One turn, several model callsconceptual
one user turn, left to right in timethe person is waiting: everything before the first tokenMemory readIntent checkModerationReply streamsfirst tokenMemory write
one user turn, left to right in timeMemory readIntent checkModerationReply streamsfirst tokenMemory writethe person is waiting:everything before the first token
Conceptual, not to scale: the calls one user action can trigger and their deadlines. Only the calls before the first token add to the wait; the others run while the reply streams.

A dialogue turn with 3,500 tokens of history and a 200-token reply puts most of the work on the prompt. Long conversations pull the average far above the median: on GLM 5.3 Flash, the average request is 13,433 tokens in for 309 out.

A story with a longer answer shifts the weight to decoding. The two phases hit different limits. Prefill, the work of processing the input, is bound by compute and gains from cache reuse and batching. Decode, the work of generating the output, is bound by memory bandwidth and gets faster when each step is cheaper or produces more than one token.

So we work on both sides of the turn. On the prompt side, we avoid recomputing context the model has already seen, and chunked prefill processes a long prompt in pieces so it never holds up the replies streaming to other users. On the output side, we make every decode step cheaper and let each step produce several tokens. And because a background summary can wait while a reply cannot, every request carries a service tier. The next two sections cover the prompt side first, then the output side.

04KV-aware routing for long conversations at scale

Each turn resends the conversation so far. Prefix caching keeps the attention keys and values (the KV cache) for context the model has already processed, so the engine computes only the new part of the prompt. Every reply is still generated fresh.[2]

Prefix caching: reuse the prefix KV, prefill the restconceptual
the prompt, turn 14 of a conversationshared prefix: system prompt and history the model has seennew inputPromptshared prefix + new inputCache hitreuse the prefix KV tensorsCache misscompute the prefix KV tensorsPrefillonly the unmatched inputDecodea fresh answermatchno match
the prompt, turn 14 of a conversationshared prefix: system prompt andhistory the model has seennew inputPromptshared prefix + new inputmatchno matchCache hitreuse the prefixKV tensorsCache misscompute the prefixKV tensorsPrefillonly the unmatched inputDecodea fresh answer
Conceptual flow. The cache is reused only for an exactly matching prefix, and each request still generates its own output.[2]

At fleet scale, the hard part is placement. A conversation's cache lives on the replica that served its last turn, while another replica may have more free capacity. Our router is KV-aware. It hashes each block of the prompt, tracks which replica holds which blocks, and scores every replica on two things: how much of this request's prefix it already holds, and how busy it is. Sending every turn to the warmest cache would overload it, so the score trades reuse against load, tuned on representative traffic. KV that doesn't fit in accelerator memory spills to host memory instead of being evicted and recomputed.

KV-aware routing: send each turn to the replica holding its KV cacheconceptual
KV-aware routerwhere is B cached?Turn 14 of conversation BReplica 1KV cache in accelerator memoryADReplica 2KV cache in accelerator memoryBEReplica 3KV cache in accelerator memoryCFhit: skip recomputeround-robin:recompute Bhost memory: KV that does not fit spills here, not recomputedHit: the prefix KV is read fromcache, not recomputed, and billsat the cached-input rate.Miss: the replica prefills thewhole prompt again.
Turn 14 of conversation BKV-aware routerwhere is B cached?hit: skip recomputeround-robin: recompute BReplica 1KV cache in accelerator memoryADReplica 2KV cache in accelerator memoryBEReplica 3KV cache in accelerator memoryCFhost memory: KV that does not fit spillshere, not recomputedHit: the prefix KV is read from cache, notrecomputed, and bills at the cached-inputrate.Miss: the replica prefills the whole promptagain.
Conceptual. Our router scores replicas by how much of the request's prefix each one holds and steers toward the best, within load limits.

Built into each engine, model by model

Cache-hit rate is one of the numbers we watch most closely, because it sets both how soon a reply starts and what the turn costs. Getting it high on real traffic takes more than turning prefix caching on. Different models and engines represent cached context differently: draft modes for realtime decoding, hybrid attention layouts, recurrent state and data-parallel ranks each change how prompt tokens become cache blocks, and the router finds a match only when its view agrees with the engine's.

So we integrate the router with every model's serving path and measure the hit rate on production traffic. That work roughly doubled cache hits on GLM 5.3 Flash, from 25% to 47% on a replay of 5,000 production requests, and tripled them on DeepSeek V4.1 Flash. Our stack holds high hit rates on mixed traffic from many apps at once, and on one customer's dedicated deployment, cache hits reach 80% in production.[1]

GLM 5.3 Flash: cache-hit rate, 25% to 47%router integration, replay
Before25%After router integration47%0%25%50%75%100%
0%25%50%75%100%Before25%After router integration47%
Measured: replay of a 5,000-request production trace on GLM 5.3 Flash from a cold start, before and after the router integration.[1]

For your app. MiMo 2.6 Pro lists cached input at $0.0036 per million tokens and uncached input at $0.425, so every cached token costs 99% less. When 90% of a prompt comes from cache, the input cost of that turn falls by about 89%, and only a tenth of the prompt has to be processed before the reply can start.

Input cost of a turn as more of the prompt comes from cacheMiMo 2.6 Pro list prices, $ per 1M prompt tokens
$0.00$0.10$0.20$0.30$0.400%10%20%30%40%50%60%70%80%90%100%share of the prompt read from cachenothing cached $0.42547% cached $0.227 −47%GLM 5.3 Flash replay, after router integration80% cached $0.088 −79%one dedicated deployment, in production90% cached $0.046 −89%repeated prompts
$0.00$0.10$0.20$0.30$0.400%25%50%75%100%share of the prompt read from cachenothing cached $0.42547% cached $0.227 −47%GLM 5.3 Flash replay, after routerintegration80% cached $0.088 −79%one dedicated deployment, in production90% cached $0.046 −89%repeated prompts
Computed from MiMo 2.6 Pro list prices: $0.425 per 1M uncached input tokens and $0.0036 cached. The marked hit rates are measured elsewhere in this post, on the models and traffic named.

Under the hood. Each cached block skips its share of prefill. With more of every prompt coming from cache, each replica can carry more conversations at once, and time to first token grows far more slowly as a conversation gets longer.

05Faster replies through model-specific decoding and precision

People experience latency twice: while waiting for a response to begin, and while waiting for it to finish. Time to first token (TTFT) measures the first wait. Inter-token latency (ITL) sets the pace of the stream. A serving configuration has to handle both at the app's production concurrency.

Draft-and-verify, tuned for each model

Realtime decoding is our draft-and-verify serving approach, based on speculative decoding. A lightweight draft model proposes several tokens, and the target model verifies them together in one forward pass, accepting consecutive tokens until the first rejection. With exact acceptance and correction, generation can advance by multiple tokens per target-model step while preserving the target model's output distribution, with the same quality.[3]

Realtime decoding: the draft proposes, the full model verifies in one passconceptual
1 · the draft proposes five tokensThat'sahugesteptoday2 · the full model checks all five in one forward pass3 · accepted tokens stream; the first miss is replaced by the full model's own tokenThat'sahugemilestoneFour tokens from one step of thefull model instead of four steps.The acceptance rule keeps thefull model’s outputdistribution.continue from the updated sequence
1 · the draft proposes five tokensThat'sahugesteptoday2 · the full model checks all five in oneforward pass3 · accepted tokens stream; the first missis replaced by the full model's own tokenThat'sahugemilestonecontinue from the updated sequenceFour tokens from one step of the full modelinstead of four steps.The acceptance rule keeps the full model’soutput distribution.
Conceptual. The more of the draft's proposals the full model accepts, the more tokens each step yields; a draft trained on an app's own traffic is accepted more often.[3]

We optimize the drafts and the verify step for each model. Gemma 4 uses the draft models Google publishes for it, and GLM and DeepSeek use their own multi-token prediction layers. On a dedicated deployment, with the customer's approval, we train the draft on a sample of that app's traffic. A draft that predicts that app's outputs more accurately gets more tokens accepted per verification step, and we measure the gain at production load, because draft overhead, acceptance rate and concurrency all affect it.

Realtime decoding drafts several tokens ahead and the full model verifies them in one pass.Research · realtime decoding
01Verify step
7.5×
faster verify attention, Gemma 4 26BWhere the 7.5× goes

We rewrote the attention in that verify pass. It has run on our Gemma 4 26B serving since 1 Oct, so the saving reaches every reply.

Attention share of each decoding step−40%before27.5%after16.5%
Inter-token latency p50, this change alonebefore5.95 msafter5.18 ms
02Dedicated
Tuned drafts
Drafts trained on your traffic

A draft trained on your own requests predicts your users' replies better, so more drafted tokens are accepted in each verify pass and replies stream faster.

Generic draftStartwithteneasystretches
Draft tuned on your trafficStartwithfiveminutesoflight
Accepted per verify pass: 2 → 5 (illustration)
03Output
Lossless
The same tokens, faster

The full model verifies every drafted token, so Fast returns exactly the tokens Default would.

Default 0.64 sFast 0.54 s

Start with five minutes of brisk walking to warm up.

Same tokens in both
Realtime decoding on our Inference page. Verify step: Gemma 4 26B, microbenchmark and production replay, 1 Oct 2026. Tuned drafts: illustration of a draft trained on an app's own requests. Output: Default and Fast return the same tokens.[1]

Verify attention on split-KV: up to 7.5× faster

On Gemma 4 26B, a mixture-of-experts model, the verify step turned out to be the bottleneck. Verifying a 7-token draft sends 8 query tokens per sequence through attention, and the stock kernel only uses its faster split-KV path for single-token decoding. Verify fell back to a 2D kernel that split the work into about 60 blocks and left most of the chip's compute units idle.

We changed the kernel so verify batches of up to 16 query tokens take the split-KV path. On the model's global (full-context) attention layers, verify attention ran 3.4 to 7.5 times faster, and attention fell from 27.5% to 16.5% of each decode step. The full build, which also runs the whole verify step as one captured graph and sets the draft length to 7 tokens, took ITL p50 from 6.4 to 5.2 ms and TTFT p50 from 154 to 117 ms on replayed production traffic, with the same math and reasoning scores.[1]

Verify attention: 2D kernel vs. split-KV, up to 7.5× fasterrealtime decoding on a mixture-of-experts model
Before: verify ran the 2D attention kernelone query token per block of work: about 60 blocks, most of the chip idleAfter: verify takes the split-KV paththe cache is split across the chip, every unit busy on the 8-token verify3.4× to 7.5×faster verify attention, by global layerattention's share of each decoding stepbefore27.5%after16.5%GEMMs and the restinter-token p50, from this change alone5.95 → 5.18 ms−13%
Before: verify ran the 2D attention kernelone query token per block of work: about 60blocks, most of the chip idleAfter: verify takes the split-KV paththe cache is split across the chip, every unitbusy on the 8-token verify3.4× to 7.5×faster verify attention, by global layerattention's share of each decoding stepbefore27.5%after16.5%GEMMs and the restinter-token p50, from this change alone5.95 → 5.18 ms−13%
Measured: Gemma 4 26B with 7-token realtime decoding. Per-layer verify attention is a microbenchmark of the attention operation, with output matching the old kernel to within 0.3%; the step shares and inter-token p50 are a profile on a replay of production traffic at production load, 1 Oct 2026. The chip grids are schematic.[1]

For your app. ITL sets how fast a reply streams: at 5.2 ms per token, a 200-token reply finishes in about a second after it starts. Faster decode steps also let each accelerator serve more requests, which is what keeps prices low.

Under the hood. Decode is bound by memory bandwidth: every step reads all of the weights to produce one token per sequence. A draft lets one read of the weights produce several tokens, so the speed of the verify step sets the gain. When attention dropped from 27.5% to 16.5% of the step, every request in the batch got faster.

Same eval scores, fewer bytes per token

A cheaper build ships only if it scores the same. Every build has to match the production build it replaces on our evals, including MATH, MMLU-Pro and GSM8K. Within that gate, each layer runs at the lowest precision its evals allow. On Gemma 4 31B, the MLP, which holds most of the weights, runs in 4-bit floating point (NVFP4), while attention and the KV cache stay at FP8.

The gate catches regressions before they ship. It found a scaling bug in FP8 attention, and the fix brought MATH back from 87.4 to 89.6. It also blocked a build that was 80% cheaper to serve, because that build lost 5 points on MATH.

Precision map: NVFP4 MLP, FP8 attention and KV cacheGemma 4 31B, as served
× every layerAttentionFP8KV cacheFP8MLP: most of the weightsNVFP4 (4-bit floating point)Eval gatea build ships only if it holdsthe model's math and reasoningscores against the reference
× every layerAttentionFP8KV cacheFP8MLP: most of the weightsNVFP4 (4-bit floating point)Eval gatea build ships only if it holdsthe model's math and reasoningscores against the reference
The precision-sensitive parts (attention and the KV cache) stay at 8 bits; the MLP, which holds most of the weights, runs at 4. Smaller weights mean fewer bytes read per token, which is what bounds decode.

For your app. Fewer bytes per weight keeps inference affordable as your app grows, at the same latency and quality. That is part of how Gemma 4 26B lists at $0.07 per million input tokens and $0.34 output.

06Continuous optimization, model by model

Our work doesn't stop when a model goes live. We continually profile production traffic to improve response times, serving efficiency and reliability, from new attention kernels that accelerate generation to resolving memory leaks that require periodic restarts. Each change is evaluated against our quality benchmarks before release. The table below shows a selection of these improvements and their measured results.

Measured serving improvements

ModelWhat changedResultBasis
Gemma 4 26B
Realtime-decoding verify moved onto split-KV attention
up to 7.5× faster verify attention
microbenchmark and replay, Oct
MiMo 2.6 Pro
Fused expert kernels and a custom collective
3× faster first token (1.93 → 0.63 s)
replay, pre-release build
DeepSeek V3.2
Turned on the model's own multi-token prediction
1.6× faster token generation (62.4 → 39.9 ms/token)
replay, Jul
DeepSeek V4 Flash
Block draft-and-verify decoding, fused verify kernels
+20% throughput
replay, Jul
Clef
FP8 serving path for a decision model
11.5× throughput vs the reference implementation
Equal benchmark accuracy, Oct
A customer's 31B fine-tune
Converted to 4-bit weights in-house
+35% throughput
saturation benchmark, Apr
Gemma 4 31B
Fixed the scaling in FP8 attention
MATH 87.4 → 89.6
eval harness, Sep
DeepSeek V3.2
Fixed a deadlock in TensorRT-LLM
10-min stalls → 0
fault injection, 20,500 requests
GLM 5.3 Flash
Graph-captured prefill and a tuned scheduler
8× faster p90 first token (~10 → ~1.2 s)
A/B, production prompts
Gemma 4
min_p was ignored on the draft path; now applied
draft acceptance +5 pts
production, Aug
GLM 5.3 Flash
Router and engine see prompt blocks the same way
~2× cache hits (25% → 47%)
replay, 5,000 requests
DeepSeek V4.1 Flash
Prefix-hash routing across data-parallel ranks
3× cache hits (11% → 33%)
production trace
DeepSeek V4 Flash
One radix tree for a hybrid KV layout
10× faster p99 first token (9.4 → 0.87 s)
replay, 6,275 requests, Jun
Qwen3.8 27B
Recurrent-state checkpoints for prefix caching
20× cache hits (~1% → ~22%)
dev lane
Gemma 4 26B
October build at production load
~1.8× requests per instance
production, Sep → Oct
GLM 5.3 Flash
Cache-restore bug made very long replies loop
looping replies 21.7% → 0
replay and production
Fleet
Memory leaks fixed in three layers of the serving stack
~42 GiB/day → flat
soaks and canary, Jul–Aug

A selection of changes from across the models we host, by kind of work. Each result is before and after on the named model and metric; the basis column says how and when it was measured. Replays use real production traffic.[1]

Tracking the effect in production

The gains hold in production. On Gemma 4 26B, each serving instance now handles about 1.8 times the requests it did in September, while 7-day median TTFT fell from 178 to 161 ms. On Gemma 4 31B, one week of optimization made median TTFT 2.8 times faster on replayed production prompts, from 943 to 336 ms at the same eval scores, and in production the daily median fell from 365 to 271 ms even as traffic rose 26%. In a replay, cache-aware routing on DeepSeek V4 Flash made the slowest 1% of first tokens about 10 times faster, from 9.4 s to 0.87 s.[1]

Gemma 4 26B in production: requests per instance and latencybefore and after the October build
Requests per instance, daily mean2.6 req/s before4.6 req/s after+77%Time to first token, 7-day p50177.6 ms before160.6 ms after−10%Inter-token latency, 7-day p506.2 ms before5.83 ms after−6%
Requests per instance, daily mean+77%2.6 req/s before4.6 req/s afterTime to first token, 7-day p50−10%177.6 ms before160.6 ms afterInter-token latency, 7-day p50−6%6.2 ms before5.83 ms after
Measured: Gemma 4 26B production router histograms: daily mean requests per serving instance, 22 to 30 Sep against 2 to 8 Oct; 7-day p50 time to first token and inter-token latency, 22 to 28 Sep against 4 to 10 Oct 2026.[1]
Inference that keeps getting faster.Every week, a model we serve gets faster or cheaper.
Apr 2026
Gemma 4 31B · Throughput at full load

One patched attention kernel, about four times the tokens a second at full load.

Tokens a second, aggregate~4×
before6.5K
after27K
Sep 2026
GLM 5.3 Flash · Prompt cache hits

One fix in our KV-cache router nearly doubled cache hits on repeated prefixes.

Cache-hit rate1.9×
before25%
after47%
Sep 2026
Gemma 4 26B · Peak traffic

Peaks 35% busier on about a fifth less capacity, with a faster time to first token.

Busiest-hour requests, September = 100+35%
before100
after135
28 Sep 2026
Gemma 4 31B · Time to first token

Median time to first token 2.8× faster at production load (943 to 336 ms), each token after it 2.4× faster.

Time to first token, p502.8×
before943 ms
after336 ms
1 Oct 2026
Gemma 4 26B · Verify attention, realtime decoding

A rewritten verify step, up to 7.5 times faster on the global layers, so Gemma 4 26B replies arrive several tokens at a time.

Attention share of each decoding step−40%
before27.5%
after16.5%
1 Oct 2026
Gemma 4 26B · Realtime decoding build

The full realtime decoding build: median time to first token 154 to 117 ms and each token after it 6.4 to 5.2 ms, at the same eval scores.

Time to first token, p501.3×
before154 ms
after117 ms
8 Oct 2026
Gemma 4 31B · Time to first token in production

The same build in production: median time to first token 1.3× faster, while traffic rose 26%.

Daily median time to first token1.3×
before365 ms
after271 ms
Dated serving changes, before and after on the named model and metric, from our Inference page. Replays use real production traffic.[1]

07Flexible service tiers and strong reliability

A reply someone is waiting for needs a fast response; a background summary can wait and prioritize lower cost. Our four serving tiers let you choose the right balance for each request, using the same model weights. Set service_tier per request, or choose a default for your API key or workspace.

TierServing choiceExample tasks
FlexLowest price; if capacity is busy, the request fails fast and is not billedSummaries, evaluations, backfills
DefaultStandard serving: a published speed range per model and no rate limitsClassification, decisions, routine responses
PriorityPriority scheduling, an uptime commitment and a latency target for your busiest hourLaunch traffic and critical interactions
FastRealtime decoding and our tightest latency targetLatency-sensitive generation

Serving choices for the same model weights. Availability and commitments depend on the model and service.

One model. Four ways to run it.Set the service tier per request, API key or workspace.
Flex"service_tier": "flex"

The lowest price, for work that can wait. A call that cannot start fails fast, unbilled.

PriceSpeedSummaries, scoring, evals, backfills
Default"service_tier": "default"

Our standard serving: a published speed range per model and no rate limits.

PriceSpeedMost chat, classification and decisions
Priority"service_tier": "priority"

Priority scheduling, an uptime commitment and a latency target for your busiest hour.

PriceSpeedLaunches, peaks, live conversations
FastNew"service_tier": "fast"

Realtime decoding and our tightest latency target.

PriceSpeed
The four service tiers on the same weights, set with service_tier per request, API key or workspace.
The same prompt on Default and Fastas our Inference page plays it
Same prompt, two tiers
UserMy knees hurt after running. Can you plan a gentle 20-minute session for tonight?
DefaultTime to first token 147 ms166 tok/s
Of course. Start with five minutes of brisk walking to warm up. Then alternate one minute of easy jogging with two minutes of walking, four times. Keep your stride short and land softly under your hips. Finish with five minutes of slow walking and a calf and quad stretch. If the pain turns sharp, skip the jog and walk the whole way.
FastTime to first token 117 ms192 tok/s
Of course. Start with five minutes of brisk walking to warm up. Then alternate one minute of easy jogging with two minutes of walking, four times. Keep your stride short and land softly under your hips. Finish with five minutes of slow walking and a calf and quad stretch. If the pain turns sharp, skip the jog and walk the whole way.

Words that flash arrived together in one decoding step.

 
The same prompt on the Default and Fast tiers, as our Inference page plays it (illustrative timing). Each block is one decoding step: Fast writes several words per step.

Reliable serving is a priority across every tier. Over 30 days, GLM 5.3 Flash served more than 20 million requests with 98 failures, a 99.9995% success rate, counting server errors, timeouts and capacity rejections. Across all hosted models, more than 99.99% of requests completed without a server error; that fleet-wide metric counts server errors only.[1]

Failed requests per million (log scale)one model, more than 20 million requests, 30 days
99%10,000 per million99.9%1,000 per million99.99%100 per millionObserved, 30 days4.8 per millionfailed requests per million, by availability (log scale)
failed requests per million, by availability(log scale)99%10,000 per million99.9%1,000 per million99.99%100 per millionObserved, 30 days4.8 per million
Measured: GLM 5.3 Flash, more than 20 million requests over the 30 days to 12 Oct 2026, by final status; every server error, timeout and capacity rejection counts as a failure, client errors and cancellations do not. 98 failed: about 4.8 per million.[1]

At about 4.8 failures per million, someone making 100 requests a day would see about one failure every six years, counted by the final status returned to your app. When a serving pool is saturated or unavailable, the router can redirect requests to another pool, helping keep your app responsive without requiring you to manage recovery between serving pools.

Infrastructure built for scale.Four live regions
Tens of trillionsof tokens a month
25 times what it was in March
Billionsof requests a month
Over a thousand a second at peak
Millionsof tokens a second
Around the clock
Up to 90%cache hits
On repeated prompts, Gemma 4 26B
1.8×OpenRouter's daily tokens
On Gemma 4 31B, every provider there combined
Four live regions
TTSLLMSTTSpeech to speechIllustrative trafficUS CentralUS EastEuropeIndiaAsia Pacific
Scale across the models we host, in words, and the four regions we serve from. Map traffic is illustrative.

08Routing: failover, conditions and A/B splits

Configure a primary model and compatible fallbacks once, so your app can recover without building its own model-switching logic. List fallback models in models and set fallback.ttft_timeout to specify how long to wait for the primary model's first token. If it misses that deadline, the router tries the next model on the list. A saved router can also route on the request's metadata or messages with conditions written in CEL (Common Expression Language), split traffic between variants by weight for an A/B test, and keep each user on one variant with user. When the models in a route are ones we host, each model tried keeps the caching and realtime decoding described above.

Every response says what happened. metadata.attempts lists each model tried, its time to first token and whether it succeeded, and metadata.reasoning says why the route went where it did, so you can debug a routing decision from the response alone.

Live request trace: fallback after a 300 ms TTFT timeoutlive call
Requestfallback after 300 msDeepSeek V3.2no token by 300 msGemma 4 26Bfirst token 157 msDone459 ms in alltimed out, next model"attempts": [ { "model": "inworld/deepseek-v3.2", "error": "Timed out waiting for first token", "time_to_first_token_ms": 300, "success": false }, { "model": "inworld/gemma-4-26b-a4b-it", "time_to_first_token_ms": 157, "success": true }],"reasoning": "... deepseek-v3.2 - timed out Trying fallbacks ... gemma-4-26b-a4b-it - success","total_duration_ms": 459the same request in time, msDeepSeek V3.2no token by 300 msGemma 4 26Bfirst token 157 ms0100200300400459 ms in all
Requestfallback after 300 msDeepSeek V3.2no token by 300 mstimed out, next modelGemma 4 26Bfirst token 157 msDone459 ms in all"attempts": [ { "model": "inworld/deepseek-v3.2", "error": "Timed out waiting for first token", "time_to_first_token_ms": 300, "success": false }, { "model": "inworld/gemma-4-26b-a4b-it", "time_to_first_token_ms": 157, "success": true }],"reasoning": "... deepseek-v3.2 - timed out Trying fallbacks ... gemma-4-26b-a4b-it - success","total_duration_ms": 459the same request in time, msDeepSeek V3.2 · no token by 300 msGemma 4 26B · first token 157 ms0100200300459 ms in all
Live: request "model": "deepseek-v3.2" with "models": ["gemma-4-26b-a4b-it"] and a 300 ms first-token timeout; the response metadata as returned (trimmed). Times are the ones the response reports.

Because the router treats a slow first token as a failure, a stalled model costs the turn the timeout plus the fallback's first token (300 + 157 ms in the trace above) instead of however long the first model would have taken, and your app needs no retry logic.

09Your model, optimized for your app

Start with hosted open models and choose a serving tier for each task. When your app needs its own model, the goal is a better agent for your users at lower cost and lower latency, and we build it with you on a dedicated deployment.

Bring your own weights, or work with our engineers on post-training with an approved dataset and app-specific evaluations. We measure quality against the model you run today, then tune for efficiency until the new model meets your quality targets for less. Post-training changes what the model does; a draft trained on your traffic changes only how fast we serve it, so we evaluate the two separately.

The deployment can also include custom kernels, cache routing tuned to your traffic and capacity matched to it. On Gemma 4 31B, our own attention kernel serves about 4 times the tokens a second of the stock kernel at full load, and one customer's 31B fine-tune gained 35% throughput when we converted it to 4-bit weights. After launch, we keep profiling the deployment on your traffic, and a change ships only when it holds its gains at production load.

What a dedicated deployment can includeillustrative
Dedicated capacity

Reserved capacity and your own model ID, with no queueing behind other customers.

modelacme/companion-v4capacitydedicatedregionus-centraltierpriority
Bring your own model

Upload weights or point us at a repo. Same engine, same API.

{ "model": "you/companion-v4", "service_tier": "priority" }✓ weights loaded · fp8 · 31B
Post-training on your data

Fine-tune open models on approved conversations, scored against your current model.

eval vs. your current modelquality≥ targetcostlowerlatencylower
Drafts tuned on your traffic

A draft trained on your requests gets more tokens accepted per verify pass.

aheadthe knees need a warm…check✓ ✓ ✓ ✓ ✗accept 4 tokens in 1 pass
Custom kernels and engines

When a stock engine is the limit, we write the kernel, cache router or backend.

tokens a second at full load · Gemma 4 31B
stock6.5K
ours27K
Regions and data

US, Europe, India or Asia Pacific, with zero data retention on the models we host.

regionsus-central · eu-west · asia-south · asia-eastzero data retentionon
What a dedicated deployment can include. Panels are illustrative; the kernel figure is Gemma 4 31B at full load, before and after our attention kernel.

10Customers: Status and Latitude

Customer resultsfrom their case studies
Status by WishrollStatus by Wishroll>95%lower AI costs, with content quality kept or improved19 daysto a million usersTeam of fivebuilt on Inworld
LatitudeLatitudeTens of millionsof inference calls in six weeks, about 20 per turn1 dayto the first production task1 weekto half of engine traffic~1 monthto all story-model traffic
Status by Wishroll and Latitude, from their case studies.[4][5]

For Status by Wishroll, we worked with the team on targeted prompts, app-specific evaluators and production load testing, and the new setup cut their AI costs by more than 95% while keeping or improving content quality. The saving came from that work as well as from a lower token price.[4]

The real upside with Inworld is that it's a continued relationship that allows us to keep optimizing performance and also keep lowering the costs because now we have this team of ML experts working with us.

FaiStatus by Wishroll

Latitude's Voyage makes many calls per turn. Roughly 20 AI tasks run each turn alongside story generation, which added up to tens of millions of inference calls in Latitude's first six weeks on Inworld. We serve the World Engine tasks, the calls that apply the story's rules each turn, and the story models, including Latitude's own fine-tunes. The team moved its first production inference task in a day, half of its engine traffic within a week, and all of its story-model traffic in about a month. A user waits on the combined workflow, so every supporting call has to finish inside the turn.[5]

11Get started with the OpenAI-compatible API

For Chat Completions, set the Inworld base URL, your API key and a model ID. Streaming works the same way it does with OpenAI.

python · openai sdk · streaming
import os
from openai import OpenAI

api_key = os.environ["INWORLD_API_KEY"]

client = OpenAI(
    base_url="https://api.inworld.ai/v1",
    api_key=api_key,
    default_headers={"Authorization": f"Basic {api_key}"},
)

stream = client.chat.completions.create(
    model="inworld/models/gemma-4-26b-a4b-it",
    messages=[
        {
            "role": "system",
            "content": "You reply to users of a running app. "
                       "Keep replies short and encouraging.",
        },
        {
            "role": "user",
            "content": "I finally finished my first 10k run today.",
        },
    ],
    max_tokens=128,
    stream=True,
)

with stream:
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
print()

Gemma 4 26B lists at $0.07 per million input tokens, $0.035 cached and $0.34 output, nearly 40% below the median provider that doesn't train on your data. These are Default rates; lower rates are available as you scale. Every hosted model, with its price and cached-input rate, is on the models page. You can try any model in the browser first, with no API key, in the playground.

First token, output speed and price by modelagainst other providers of the same model
ModelTime to first tokenOutput speedIn / out / cached per 1M tokens
GLM 5.3 Flash310 ms608 ms$0.078 / $0.50 / $0.03Lowest input price of 24 providers that don't train on your data
Gemma 4 31B224 ms751 ms172 tok/s56 tok/s$0.13 / $0.38 / $0.065
Gemma 4 26B214 ms426 ms237 tok/s120 tok/s$0.07 / $0.34 / $0.035
MiMo 2.6 Pro284 ms370 ms273 tok/s47 tok/s$0.425 / $0.87 / $0.0036Lowest input price of 5 providers that don't train on your data
DeepSeek V4.1 Flash—$0.16 / $1.20 / $0.006Lowest input price of 22 providers that don't train on your data
Inworldfastest other provider of the same modelmedian other provider
Time to first token and output speed: Inworld (solid) against the fastest other provider of the same model (grey) and the median other provider (hatched). Other providers from Artificial Analysis on its 1,000-token prompt, 6 to 13 Oct 2026; Inworld measured the same way over the public internet, 12 Oct 2026. Prices per 1M tokens: input / output / cached.

Browse models · Get an API key · Talk to our engineers about a deployment for your app.

Inference built for people runs on Inworld. Who are you building for?

FAQ

What is Inworld Inference?

Inworld Inference is an LLM inference API for consumer apps. We optimize the open models consumer apps run, from the kernels to the decoding and the cache, on real traffic, and offer serving tiers and dedicated deployments for custom models.

How does Inworld Inference compare with other providers?

On OpenRouter's provider measurements, Inworld has the lowest median and p95 time to first token for Gemma 4 26B and MiMo 2.6 Pro. On Gemma 4 26B, p95 first token is 7.8 times faster than the median provider. Input prices are the lowest of any provider that doesn't train on your data, on three of the five models we feature.

Is Inworld Inference compatible with the OpenAI API?

Yes. Set the OpenAI SDK's base URL to https://api.inworld.ai/v1, use your Inworld API key, and keep the rest of your code.

How does Inworld make inference faster?

Model-specific work: realtime decoding, where a draft proposes tokens and the full model checks them in one pass, a KV-aware router that sends each turn to the replica holding its cache, and precision optimizations wherever the evals hold.

Why does the cache-hit rate matter?

In a conversation, most of each prompt is history the model has already read. When a turn reaches the replica that holds it, that history is read from cache instead of recomputed, so the reply starts sooner and cached input bills at up to 99% less.

Can Inworld serve my own model?

Yes. Bring your weights for a dedicated deployment, and with your approval we post-train on your data against app-specific evals and train a decoding draft on your traffic.

Notes
  1. Inworld production measurements and replays of production traffic, September to October 2026; the method, window and date are in each figure's caption.
  2. vLLM documentation, Automatic Prefix Caching.
  3. Leviathan, Kalman and Matias, Fast Inference from Transformers via Speculative Decoding. ICML 2023.
  4. Inworld customer story, Wishroll / Status.
  5. Inworld customer story, Latitude.
  6. OpenRouter provider comparisons for Gemma 4 26B, Gemma 4 31B and MiMo 2.6 Pro, October 2026; Inworld time to first token measured at our router over the same period. Snapshots of each source, not a matched workload benchmark. Prices: input list prices of the OpenRouter providers of each model whose data policy says no training, temporary promotions excluded, 12 Oct 2026. openrouter.ai/google/gemma-4-26b-a4b-it · openrouter.ai/google/gemma-4-31b-it · openrouter.ai/xiaomi/mimo-v2.6-pro
  7. Stivers et al., Universals and cultural variation in turn-taking in conversation. PNAS, 2009. Households and consumers paying for AI: a16z, with PNC card data, 2026.