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.