changelog
What shipped, month by month.
118 changes 33 proven on production Since May 2026 Last updated
I run this page myself, and it is how I hold Tracelane to what it says. Every entry is something you can use today, dated to the month it became real for you, not the month it was merged. Where a change has been proven on production (a real request sent, a real row read back) it says proven. When something was broken, it goes under Fixes instead of being folded quietly into a feature. What I am working toward is at the bottom, without dates, because a date I cannot keep is a claim I cannot back.
25 changes
New features 16
-
MCP tool calls through the gateway
Point your agents' MCP servers at the gateway: every tool call is recorded, and you can set per-tool rules and require a person to approve sensitive calls.
-
Zero data retention controls
Choose per workspace or per API key whether prompts and responses are stored or cached, and how long recorded data is kept.
-
Route by weight, cost or latency
Spread traffic across providers and keys by weight, cost, latency or priority, run a canary of a new model on a share of traffic, and set timeouts per route.
-
Bring your own guardrails
Define guardrail policies through the API, call your own webhook or a third-party guardrail on each request, and set how personal data is handled.
-
Your own key vault
Keep the keys that protect your stored provider credentials in your own KMS or Vault.
-
Send traces to your collector
Export your traces over OpenTelemetry to a collector you run, alongside what Tracelane keeps.
-
Every control in API and settings
Manage routing, guardrails and caching from the dashboard's Gateway settings or the documented API.
-
Per-key rules and rate limits
Restrict a key to certain models, providers or IP ranges, cap request size and tokens, and set requests- and tokens-per-minute limits per workspace, project, key, end user or model.
-
Budgets with alerts
Set USD budgets for a workspace, project, key or end user — hard or soft, calendar or rolling — and get an email when spend crosses a threshold.
-
Projects and environments
Group keys and spend into projects and environments, and archive one when you are done.
-
Pause a workspace instantly
Pause all model traffic for a workspace in one action and resume it the same way.
-
Roles, history and admin allowlist
Give people admin, developer, viewer or billing roles, see every control change with who made it and what changed, and limit admin actions to your IP ranges.
-
Responses API and Gemini endpoints
Call the gateway with the OpenAI Responses API or Gemini's own request format, as well as Chat Completions and Anthropic Messages.
-
Images, audio, batch and realtime
Send image, audio, rerank, moderation, batch, file and realtime requests through the gateway with the same keys, limits and records as chat.
-
Explain a spend spike
See when spend jumped and which traces caused it.
-
Spot agents stuck in loops
See when an agent repeats the same tool call, and how many requests failover rescued.
Improvements 3
-
See your workspace's anchor key
Open Settings → Audit to see the key that anchors your workspace's evidence and its fingerprint, so you can check it against what a verifier pins.
-
Audit page says when it cannot check
If the audit page cannot read your workspace's key, it says it cannot verify instead of checking against less information.
-
Retries that respect providers
When a provider asks you to wait, the gateway waits as told before retrying, and the newest models route to the provider that serves them.
Fixes 6
-
Embeddings count toward budgets
Embeddings requests, and chat on a self-hosted gateway running without trace capture, now count toward your key and workspace budgets and tokens-per-minute limits, so a key at its hard budget is refused.
-
Pause covers token counting
Pausing a workspace, or blocking a model or provider, now also stops OpenAI Responses token-count requests, which send your prompt upstream.
-
Dashboard refuses cross-site changes
Changes to your account, team, API keys and billing are accepted only when they come from the dashboard itself, so another site cannot make them on your behalf.
-
Usage billing retries failures
A brief outage at our billing provider no longer leaves your usage unreported until the next run; the gateway retries it straight away.
-
Revoked keys stop at once
Revoke a key, remove a member, archive a workspace or delete your account, and the affected API keys are refused on their next request.
-
Cut-off Gemini answers flagged
A Gemini or Vertex answer cut off at the token limit now reports that it was cut off, instead of looking complete.
43 changes
New features 23
-
Session transcripts
Open a session and read it as one conversation, turn by turn, instead of a list of trace links.
-
Turn capture on or off yourself
Choose in settings whether prompts and responses are recorded for your workspace.
-
Public status page
Check tracelane.dev/status for live gateway availability.
-
Jump anywhere with ⌘K
Press ⌘K to reach any screen, run a common action, or paste a trace id and land on that trace.
-
Your own fallback models
Turn cross-provider failover on for every request in your workspace and choose the fallback models, in order — one call can still opt out with a header.
-
Name your own models
Call a model by a name you control, like "fast", and repoint it in settings without touching code; the trace records both the name and the model that answered.
-
Know every agent calling you
See which agents and clients are calling your gateway, each with its own profile and history, from the name they send or the client they run.
-
Rotate keys without downtime
Rotate an API key with a grace window you choose, so the old key keeps working until your deploy has picked up the new one.
-
Check a provider key works
Validate a saved provider key on demand and see when it last passed or was rejected, separately from when it was saved.
-
Compare against a baseline
Pick a baseline run and compare an experiment against it case by case, not only on the average.
-
A trace becomes a test case
Save a production trace's input into a dataset from the trace page in one click.
-
Usage-based plans
Pay by usage meters on five plans — and capture never stops because of a billing limit.
-
Know which user a trace belongs to
Send your own user id and filter sessions and traces by the person who started them.
-
OpenAI tool calling, end to end
Run an agent that calls tools through the gateway with the OpenAI SDK unchanged — real tool calls come back, the finish reason is the true one, and you can replay the model's own tool call in the next turn.
-
Dashboards you build yourself
Assemble your own dashboard from a palette of metric tiles, then resize, move and remove them — the layout persists across a reload.
-
Anthropic-native endpoint
Point Claude Code, or any Anthropic-native client, straight at the gateway and get full tracing, token counts and cost with no OpenAI-shape translation in between.
-
Ask your traces a question
Type a question about your own runs in plain English and get an answer, instead of writing the query yourself.
-
Multi-agent runs, as swim lanes
Read a run with sub-agents as one labelled lane per agent, with a failures-only filter, rather than as a single flat timeline.
-
Search the trace list
Find a trace by span name or content from a search box on the traces page, instead of paging until you spot it.
-
A playground inside the app
Try a prompt against a provider you have connected and land straight on the trace it produced.
-
MCP for hosted workspaces
Query your own traces from any MCP client using your bearer token — this previously needed a self-hosted deployment with a direct database connection.
Improvements 12
-
Edit key limits after creation
Change an API key's limits after you create it, without minting a new key.
-
An audit page with one answer
Open the audit page and see, first, whether your evidence verifies — and what to do next if it does not.
-
Secrets masked before storage
Credentials that appear in a prompt, a response or an evaluation note are masked before anything is stored.
-
Approve tool changes in bulk
Approve every new tool definition at once — while a CHANGED definition still needs its own review.
-
Tool calls in full
See each tool call on the trace page — its arguments where you capture content, and their size where you do not.
-
Every retry on the trace
See every attempt a request made — each retry and failover hop, with its status and timing — on the trace, not only the one that succeeded.
-
Ledger written in one transaction
Every ledger row is committed in the same database transaction as the chain it extends, and archived every hour.
-
The model that actually answered
See the exact model version the provider says served each call, next to the name you asked for.
-
Every setting on the span
See the temperature, token limits, tool list and deployment each call used, recorded on its span.
-
Gateway overhead, measured
See exactly what the gateway costs you in latency — 2 ms at the median, 5 ms at the 99th — measured on LiteLLM's open benchmark harness rather than one we wrote.
-
Line and area charts
Read latency percentiles, availability and error rate as a continuous line rather than as bars, which is the right shape for a level instead of a count.
-
One time range for the dashboard
Move one control and every chart on the dashboard answers to it, drawing a real interactive chart — several displays used to disagree with each other.
Fixes 8
-
Streams survive split characters
A streamed answer no longer ends early when a multi-byte character arrives split across two network chunks.
-
Capture off means off
With content capture off, prompt and response text sent over OpenTelemetry is no longer stored.
-
Exports that never arrive half-done
An evidence export that cannot be completed fails loudly instead of handing you a partial file.
-
Truncated answers are never cached
Ask again after a reply was cut short by a token limit and you get a fresh, complete answer instead of the truncated one served back from cache.
-
Self-hosting runs unmetered
Run the gateway on your own hardware with no control plane and it no longer applies the hosted free tier's request limit to your traffic.
-
Claude Code sessions record fully
See real token counts, computed cost, tool names and session grouping for a Claude Code session — all four were previously blank.
-
Your trace ids survive the gateway
Call the gateway from your own instrumented app and the two halves join into one trace, instead of appearing as two disconnected ones.
12 changes
New features 8
-
Guides for the agent frameworks
Get traces out of LangChain, LangGraph, CrewAI or LlamaIndex by pointing their existing OpenTelemetry exporter at us — no Tracelane-specific code, and each guide states exactly what you get.
-
An eval gate for your CI
Run a dataset through your prompt on every pull request and fail the build when the score falls below a floor you set, with a separate exit code for "it got worse" and "we could not measure it".
-
Review queues for failures
Route a trace an automated judge scored as failing to a review queue, write the correct answer by hand, and keep it as a reusable test case.
-
Score live traffic automatically
Have an automated judge score a share of your production traffic against a rubric you choose, at a sample rate you set, under a spend limit that survives a restart.
-
Repeat requests served from cache
Send the same request twice and the second is answered from the gateway's own cache instead of the provider, with a response header naming the tier that served it.
-
Send OpenTelemetry traces directly
Export a nested agent trace straight from your own instrumentation with your API key, and see the whole tree — planner step, each tool call, the retry — without proxying the model call.
-
Compare two traces
Open two runs side by side and see what differs between them.
-
Releases you can verify
Check any release binary yourself — 0.2.3 is the first to publish a Cosign keyless signature and a CycloneDX SBOM per artifact, with build provenance attested by GitHub.
Improvements 1
-
Nine ways to assert an eval
Assert on contains, regex, JSON schema, an LLM judge, and cost and latency ceilings through the API — and a judge answer that does not match its schema errors instead of quietly scoring.
Fixes 3
-
Datasets that persist
Save a collection of test cases and have it still be there afterwards — every dataset write had been failing silently.
-
Failover honours your config
Set a fallback provider in `tracelane.yaml` and it is actually used — the setting had been read and then ignored.
-
Three permission gaps closed
A viewer can no longer promote or delete a production prompt, SSO and directory-sync setup is limited to the plan that includes it, and a billing-portal return address is checked against an allowlist.
14 changes
New features 12
-
Gemini through Vertex AI
Route Gemini models via Google's Vertex AI endpoint with your own project credentials.
-
Slice the trace list
Filter, group by model, operation or status, sort by any column, set one date range for the page, and export what you are looking at to CSV or JSON.
-
Anchored to a public log
Prove to a third party that a batch of your records existed when you say it did — the first Merkle root reached the public Sigstore transparency log at index 19398597, and anyone can look it up without asking us.
-
Failure signatures from your traces
See the failure shapes actually detected in your own runs, each with a first-seen and last-seen, rather than a catalogue of failures in the abstract.
-
Offline verification, three languages
Hand an exported bundle to someone with no network access and let them verify it in Rust, Python or TypeScript against your own public key, served from a public endpoint so the trust root is not us.
-
Promotions are signed records
Promote or roll back a prompt and the decision is appended to the tamper-evident chain as a signed verdict you can hand to someone else.
-
Alerts you configure and test
Write your own alert rules, send them to Slack, Discord or an HTTP endpoint, and fire a test to confirm the route works before you rely on it.
-
Teams, roles and seats
Invite members, assign roles, stay inside the seat count your plan includes, and delete your own account or organisation without asking us.
-
Real cost on every call
See the USD cost of a call on its span, in the trace list, and rolled into a spend card — computed from a model price catalogue rather than estimated.
-
Sessions group a multi-turn run
Follow a conversation across its turns as one session, with its own list and detail view, instead of as unrelated calls.
-
Prompts with durable versions
Author a prompt, keep its versions, and promote one to production from the app — rather than keeping the text in your application code.
-
A gateway operations page
Watch per-provider health, failover state, circuit-breaker state and quota status from one page, with nothing on it that is not a measured signal.
Improvements 2
-
Self-host without a certificate authority
Run a single-tenant deployment without standing up SPIRE first, which removes the heaviest prerequisite from the self-host path.
-
Verify your chain on any plan
Check your workspace's hash chain from inside the product without paying for the audit add-on; the exportable, offline-verifiable bundle stays part of that add-on.
10 changes
New features 8
-
Sampling and quotas per workspace
Set a sampling policy, an ingest quota and a per-trace ceiling for each workspace — and an over-quota batch is refused with the reason, never accepted and quietly dropped.
-
Pre-flight policy at the gateway
Apply your own policy to a request before it leaves — cost and step caps, secret and PII patterns, tool pinning, response format and topic scope — and have it allowed, redacted or refused.
-
A transcript-spine trace viewer
Read a trace top to bottom as the conversation it was, with the span tree and an inspector beside it, and filter the list down to the run you are looking for.
-
Verify the ledger in your browser
Watch your own browser recompute the chain and report the chain and signature verdicts separately — a passing badge is something your machine worked out, not something we asserted.
-
Onboarding ends in your own trace
Finish setup by looking at the first trace your key actually produced, so the confirmation is your data rather than a checkmark.
-
Tracelane Cloud is live
Point a client at the hosted gateway and start capturing, instead of running the stack yourself first.
-
Cross-provider failover
Name a fallback provider and a failing upstream is retried there, rather than the request ending at the first error.
-
Tool-definition drift detection
Find out when a tool's description or input schema changes underneath a running agent — the silent rug-pull an agent has no other way to notice.
Improvements 2
-
Spans acknowledged only after storage
A restart mid-flight replays your span instead of losing it, because the queue is only acknowledged once the write has landed.
-
A dropped span is loud
Know when capture is broken: a span the gateway cannot record is counted, warned once and reported on the health endpoint, and an unset queue address refuses to start at all.
14 changes
New features 11
-
Breakers, canaries and a kill switch
Give each upstream its own circuit breaker, split traffic to a candidate prompt version, and turn a predictor off by name without a deploy.
-
A verifier a regulator can run
Hand an auditor a single signed binary that verifies an exported ledger offline against a public key they pin themselves, and exits non-zero when the chain does not hold.
-
Auto-instrumentation for Python and TypeScript
Install the SDK and it attaches to the agent frameworks and provider clients you already use, so spans arrive without hand-written instrumentation.
-
Traces, trace detail and SLO
Browse your traces, open one to a span tree with an inspector, and read latency percentiles, error rate and token usage on an SLO page.
-
Prompt promotion with rollback
Promote a prompt version to production atomically and have a drift detector roll it back — suggested, automatic or human-confirmed, your choice.
-
Three independent verifiers
Check an exported ledger in Rust, Python or TypeScript against shared conformance vectors, so whoever has to verify it can do so in a language they already run.
-
The gateway, in one binary
Point any OpenAI-compatible client at one endpoint and your call is routed to your provider with your own key, traced and recorded — a model matching no provider is refused rather than sent somewhere by default.
-
A tamper-evident audit ledger
Prove after the fact that your record was not altered: every gateway-proxied call and policy verdict is appended to a per-workspace hash chain, so a later deletion, insertion, reorder or edit is detectable by anyone holding an export.
-
OpenTelemetry-native capture
Take your traces elsewhere whenever you want — spans are written in the OpenTelemetry GenAI conventions rather than a private schema.
-
EU AI Act Article 12 export
Export the record-keeping pack Article 12 asks for, mapped obligation by obligation, and hand it to whoever has to check it.
-
Apache 2.0, no relicensing
Self-host it, fork it, or run the hosted version — the whole project is Apache 2.0 with a written no-relicensing pledge and no separate enterprise tree.
Improvements 3
-
Ingest limits answered on the spot
Send an oversized batch, span or attribute and get a synchronous refusal with the reason in a response header — nothing is accepted and then discarded behind your back.
-
Pricing that states its limits
Read each plan's included volume, its per-unit overage with a hard cap, its seat ladder and its retention window on the page, instead of inferring them.
-
Keys hashed, ledgers signed per workspace
Your API keys are stored as Argon2id hashes behind a peppered lookup, and your ledger is signed with a key belonging to your workspace rather than a shared one.
what's next
Where I'm taking it.
Directions, not commitments. No dates.