GitHubBook a demoStart routing
Browse docs

FAQ

Common questions about TokenTriage — whether it changes your responses, where data is stored, what providers work, how cost is computed, and whether routing savings can be proven.

On this page

Hit a specific symptom — 401 storms, UNPRICED rows, a route that won’t fire? See the symptom-first Troubleshooting page.

Will TokenTriage change my responses?

Not in ledger mode — it observes and costs every request and mutates nothing; the proxied bytes are bytes.Equal to going direct, streaming included. Any internal error fails open to a verbatim passthrough. Routing only rewrites requests once you deliberately climb to route mode. See Core concepts.

Do I have to turn on routing?

No. Routing (and caching, and governance) is opt-in and off by default. Many teams run in ledger mode indefinitely, just to see where the bill goes. See the trust ladder.

Are my prompts stored?

Not by default. Each request writes one JSONL row with a prompt_sha256 and counted features — the prompt text itself is not stored unless you set ledger.redact.prompt: none or enable content capture (dashboard.capture.*, off by default).

Does it phone home?

No. The default posture dials nothing external — the pricing table and dashboard are compiled into the binary. Every phone-out (an external embedder, Redis/Postgres, OTLP export) is refused unless its config carries external: "allow". See Security.

What providers are supported?

Seven wire dialects ship in code (OpenAI, Anthropic, Bedrock, Gemini, Claude-on-Vertex, ElevenLabs TTS, Deepgram STT), and 80+ providers ride them as data — adding an OpenAI-compatible upstream is a config-only change. See the Providers support matrix.

How is cost computed, and what if a model isn’t priced?

From an embedded pricing snapshot stamped source@date#sha7, hand-checkable against the token counts. A model with no price is UNPRICED — a null cost counted and excluded, never $0.00. See The honesty model.

Can it actually prove routing saves money?

It tries, and refuses when it can’t. eval compares the router’s realized quality to a zero-router baseline at the router’s own cost. With only served-model labels it can say routing sits on the frontier; only judged shadow duplication can show a beat; with too few labels it refuses rather than fabricate. See the honesty verdict.

Do I need the SDK?

No — a base-URL swap is enough for costing and routing. The optional SDKs add trace/agent tagging, typed receipts, and a ledger pull when you control the HTTP client.

How do I run it in Kubernetes, or air-gapped?

The canonical path is the Helm chart (one StatefulSet, per-pod PVC, zero Secret objects). A fully self-contained air-gap Compose profile ships too. See Deployment.

What’s the performance overhead?

On a loopback micro-benchmark, proxy overhead is ≈0.065 ms median (a house number on one box); the CI budget is < 2 ms p99. Real provider latency dominates in production. See Benchmarks.

What’s the license?

FSL-1.1-ALv2 — the Functional Source License: source-available, and it converts to Apache-2.0 two years after each release. The single static binary is CGO-free and cross-compiles to Linux, Windows, and macOS without a C toolchain.