Skip to main content
Helicone is mostly a proxy with config-via-env + per-request headers. The canonical Tracelane migration path is one CLI command: There are two commands and they do different things.
tlane migrate helicone reads .env, .env.local, .env.production and .env.development, translates each known HELICONE_* var, and rewrites those files and matching source in place. It does not emit .env.tracelane. tlane import-helicone is the non-destructive path: it reads --env <path> and writes a .env.tracelane stanza. --with-config adds a fixed two-provider starter scaffold — it is a template, not derived from your code. --src <dir> only names a directory for you to review by hand; nothing is scanned.

Historical requests

Use tlane import-helicone --traces helicone-history.json --dry-run to preview a saved request export, then omit --dry-run to send it. The local cursor makes the import resumable. See Import Helicone history for the input format, counts, captured fields and retention behavior.

Env var mapping

What you keep

  • Existing OpenAI/Anthropic SDK code — no swap required
  • Per-request end-user attribution — send X-Tracelane-User-Id, or just set OpenAI’s own user field on the request body and Tracelane reads it. It lands on the span as user_id, and the /sessions page shows a User column you can click through to that person’s traces
  • Session grouping — X-Conversation-Id

What changes

  • The base URL: https://gateway.tracelane.dev/v1 (or your self-host endpoint)
  • Custom properties have no equivalent. Helicone’s Helicone-Property-* headers become arbitrary span dimensions; Tracelane has no such header. The nearest thing is X-Business-Reference, a single free-form identifier (a case or transaction id) — one value, not a bag of key/values. If you rely on multiple custom properties, tell us; it is not built
  • Response caching has request controls within operator bounds. Send x-tracelane-cache: bypass on any plan to skip lookup and storage. Eligible paid plans can send use or ttl=<hours>; the effective reuse age is bounded by the plan and operator. The response reports x-tracelane-cache-ttl-hours and x-tracelane-cache-bound. Only buffered chat completions are supported; explicit opt-in on streaming chat, embeddings or native messages is refused. Inspect the active configuration at /settings/gateway.
Send an opaque id, not an email address. The user id is stored on the span, and PII redaction rewrites anything email-, phone- or card-shaped before it is written — so [email protected] is stored as [REDACTED:email] and the User column reads “redacted” for every such trace. A UUID or a hash of your internal user id is what you want, which is also what OpenAI and Anthropic both ask for on their equivalent fields.
  • Predictive guardrails inline at the gateway. We found no equivalent inline guardrail layer documented by Helicone as of 2026-08-26.

License posture

Helicone’s ai-gateway is licensed GPL-3.0; Tracelane is Apache 2.0 across the full stack. Tracelane is an independent implementation. Licences verified as of 2026-08-26 from each repository’s LICENSE file.
  • Quickstart
  • Providers — the 191 we route to (6 native adapters + any OpenAI-compatible)
  • CLI — full tlane command list