Customer browser flow
- Visit app.tracelane.dev/sign-in — the same route handles first-time sign-up and returning sign-in.
- Sign in with WorkOS Connect (Google / Microsoft / SAML).
- Your first sign-in creates a personal workspace (named
<your-email-local-part>'s workspace). Teammates join by invitation only — a workspace owner invites them from Settings → Team — never automatically by email domain. - Pick a plan (Builder $29 / Team $229 / Business $799 / Enterprise from $2,499).
- Generate a tenant API key (
tlane_<base62>). Copy it once — we hash + store. - Drop it in your env as
TRACELANE_API_KEY. - Make a call. The trace shows up at app.tracelane.dev/traces within a second.
Operator self-host checklist
Eight steps to running Tracelane on your own infra.1
Reserve infra
- Postgres 17 (Neon, RDS, or self-hosted) — tenant + user metadata and the canonical audit ledger
- ClickHouse 24+ — span storage and the ledger’s read copy (its only home if you skip Postgres). A cold archive
(the hot→cold move of aged span parts to S3-compatible object storage) is
optional for a self-host: without it, spans stay on the ClickHouse disk.
The hosted service tiers spans to Cloudflare R2 and meters it as
cold_gb_month. The tieringALTERs and the storage-policy precondition are documented ininfra/dev/clickhouse/migrations/24_bill01_meters_blobs_tiering.sql. - L4 GPU pool — optional, only for the roadmap SLM-judge inference tier; not required at V1
- Outbound network to Sigstore Rekor (
rekor.sigstore.dev) — for best-effort, opt-in Rekor v2 anchoring of audit batches; universal per-run anchoring is on the roadmap
2
Set secrets
POLAR_ACCESS_TOKEN,POLAR_WEBHOOK_SECRET— billing (Polar.sh)WORKOS_API_KEY,WORKOS_CLIENT_ID,WORKOS_WEBHOOK_SECRET— authTRACELANE_BYOK_MASTER_KEY— provider-key envelope encryption (32 bytes, base64-encoded; AES-256-GCM viaring)TRACELANE_APIKEY_PEPPER— API-key hashing pepper (release builds refuse to boot without it)CLICKHOUSE_URL,POSTGRES_URL— datastore endpoints. (The gateway and ingest read no object-storage variables; the optional cold archive is configured on the ClickHouse server itself — an S3 disk plus thehot_coldstorage policy — not through the gateway’s environment.)
3
Apply migrations
Drizzle is canonical for the control-plane Postgres schema, but its journal
(
apps/web/db/migrations/meta/_journal.json) covers only migrations
0000–0008, so drizzle-kit migrate would apply those nine and stop.
Apply every SQL file in apps/web/db/migrations/ in order with psql
before starting the gateway:scripts/apply-migration-pg.sh runs the same loop against a fresh database
and checks that the core tables exist afterwards. The gateway does not
apply migrations at boot.4
Configure WorkOS Connect
In the WorkOS dashboard:
- Add your domain
- Configure SAML or OAuth providers
- Set the redirect URI to your dashboard’s WorkOS callback — the Next.js app handles the SSO callback, not the gateway
- Add the webhook URL
https://gateway.<your-domain>/v1/webhooks/workos - Set the webhook events:
organization.created,user.created,dsync.user.created
5
Configure Polar
Tracelane v3 pricing requires four monthly base products plus six usage
meters. Create each product in the Polar.sh dashboard,
with the
lookup_key set on each product’s product_metadata:Annual billing is not offered yet: the checkout refuses a yearly interval and
the app hides the annual action. Do not create
<plan>_v1_year products — the
webhook handler treats that lookup key as unknown and changes no plan
(apps/web/lib/polar-webhook.ts).Seats are unlimited on every paid tier — Free is capped at one seat, and
there is no per-seat product to create.Then:- Create the six usage meters with these names:
ingest_gb,hot_gb_month,series,scan_units,cold_gb_month,eval_runs - Add the Tracelane webhook URL
https://<your-dashboard-domain>/api/webhooks/polar - Subscribe to events:
subscription.created,subscription.updated,subscription.active,subscription.canceled,order.created,order.paid - Configure the Polar-hosted customer portal — branding, allowed actions
- Set
POLAR_ACCESS_TOKEN(organization access token),POLAR_WEBHOOK_SECRET, andPOLAR_EXPECTED_ORGANIZATION_IDin your env
6
Deploy gateway + ingest
7
Deploy dashboard + MCP server
node apps/mcp/dist/index.js) for local-only use, or run the published
package with npx @tracelanedev/mcp (on npm since 2026-09-07).8
Production checklist
- Agent-tool safety guards reviewed. They run observe-first — they record findings on the trace and do not block the request.
- Audit log integrity confirmed (
tlane verify <ledger> --tenant-pubkey <base64>returns 0). Without the trusted key it exitsINCOMPLETEby design — the hash chain is checked but signatures and anchors are not. The SHA-256 hash chain and Ed25519 per-tenant signing are live; anchored batches carry a resolved Sigstore Rekor v2 inclusion proof (best-effort, opt-in), with universal per-run anchoring on the roadmap. - SBOM published — every tagged release carries a Cosign-signed
sbom.cyclonedx.json, uploaded as a workflow artifact by CI. - Sigstore signing verified on release artifacts (
cosign verify-blobagainst the.cosign.bundlebeside each binary, cosign >= 3.0.6) and on the container image (cosign verifyon the published image digest). cargo auditandpnpm auditclean on the deployed commit.- Back up ClickHouse and Postgres.
Related
- Architecture — what each component does
- API reference — full REST surface
- CLI —
tlane verify,tlane export,tlane migrate - Agent-tool safety guardrails — MCP tool-definition-drift + schema validation, inline