Inputs
Everything the router weighs is an identifier, a number or a rule from your own configuration. None of it is the prompt: the router never reads what a call says, only what kind of work it is and how large.
The task class
Section titled “The task class”The kind of work the call does, from a fixed list of eight. A fixed list, because a class named from a prompt would carry content, and a free-text class would make every evidence score incomparable.
| Task class | Default bar | Graded by |
|---|---|---|
extraction |
0.95 | Deterministic checks |
classification |
0.95 | Deterministic checks |
tool_use |
0.95 | Deterministic checks |
retrieval_qa (retrieval question-answering) |
0.90 | Deterministic checks, including citations |
coding |
0.90 | Deterministic checks |
long_context |
0.90 | Deterministic checks |
summarising |
0.85 | A rubric, by a named judge model |
drafting |
0.85 | A rubric, by a named judge model |
The bar is a share: the fraction of tasks a model must pass. The two rubric-graded classes have lower defaults because a judge disagrees with itself a few times in a hundred, and one bar for all would reject every model for that noise. You can set your own bar per class; see Control.
An unknown task class routes nothing: the call keeps its agent’s model, with the reason unknown_task_class.
The evidence scores
Section titled “The evidence scores”For each candidate, its measured quality on this task class, its token counts, and its latency. Two sources:
- Yours, from the Token Value Benchmark run in your account. Yours always win for the same model and class.
- Atlantic’s published figures, produced by the same benchmark on the same suite and shipped with the engine, used where you have none. You can turn this off, so that only your own measurements count.
A score is stale if it is older than 90 days (configurable), or measured on a suite version below the floor you set. A stale or missing score drops the candidate (stale_evidence, no_evidence). It is never guessed at. See How a model earns its scores.
Context length
Section titled “Context length”The call’s input size, in tokens, as the agent’s code passes it. It is used twice:
- The window. A candidate whose context window is smaller than the call needs is dropped (
context_window). - The projection. Tokenisers differ, so the same input is a different number of tokens on each model. The router rescales the call’s input by each model’s measured input tokens on the benchmark, relative to the most capable candidate’s. Output is projected from each model’s own measured output and reasoning tokens, because verbosity differs too.
Cached input the call will read from the cache is passed separately and priced at each model’s cache-read rate.
Latency need
Section titled “Latency need”An optional p95 latency, in milliseconds, per task class (latency_ms in your policy). A candidate whose measured p95 latency on that class is above it is dropped (too_slow).
Data residency
Section titled “Data residency”A residency rule in your deployment’s policy (routing.residency, for example eu). A candidate whose residency is anything else is dropped (residency) before it is priced, and can never be escalated to.
A model’s residency is read from its ID: eu.anthropic.claude-haiku-4-5 is eu; us.anthropic.claude-haiku-4-5 is us. The gateway refuses global inference profiles outright, whatever the rule. See Regions.
The residency rule lives only in your account’s policy. LightHouse cannot change it.
What your cloud offers
Section titled “What your cloud offers”The candidates start from what your deployment’s gateway policy prices and allows for this call’s sovereign tier and data class. The router can only narrow that list, never widen it. A model your policy does not list for this tier and data class is not a candidate (not_allowed); a model your library reports as not available (quota pending, not enabled) is dropped (not_available).
Your own allow list and exclusions
Section titled “Your own allow list and exclusions”- Allow list (
routing.allowin your policy): the models the router may choose from. It can only narrow what the gateway policy already permits. An empty list narrows nothing. - Exclusions: models the router must never choose (
excluded). You can add one from LightHouse; see Control.
Your deployment’s own price card: input, output, cache-read and cache-write rates per million tokens, for each model. Both the chosen model’s projected cost and the top model’s are priced on it, so a provider’s price change is never counted as a saving.
The router ranks on expected cost for this call:
direct = the call's projected tokens on this model, at this model's ratesexpected = direct + (1 − quality) × the direct cost of the next model upso a model at half the price that fails one task in five is not cheaper. See Escalation.
Prices are in US dollars. Pricing a call in the provider’s own currency: Coming