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
Usetlane 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 ownuserfield on the request body and Tracelane reads it. It lands on the span asuser_id, and the/sessionspage 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 isX-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: bypasson any plan to skip lookup and storage. Eligible paid plans can senduseorttl=<hours>; the effective reuse age is bounded by the plan and operator. The response reportsx-tracelane-cache-ttl-hoursandx-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’sai-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.
Related
- Quickstart
- Providers — the 191 we route to (6 native adapters + any OpenAI-compatible)
- CLI — full
tlanecommand list