| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-10-26 | 11.9 kB | |
| v1.3.3 - Scoped API keys, terminal-first onboarding source code.tar.gz | 2026-10-26 | 14.4 MB | |
| v1.3.3 - Scoped API keys, terminal-first onboarding source code.zip | 2026-10-26 | 15.7 MB | |
| Totals: 3 Items | 30.1 MB | 0 | |
This release scopes project API keys so the credential an application carries to send telemetry can no longer manage keys, and serves key management on the public API base URL. Sign-up has been rebuilt around the terminal: the onboarding flow creates the workspace before approving the device, hands back to traceroot setup, and waits for the first trace. Spans can carry a cost the app reports and a marker that the app redacted them, the SQL gateway accepts BETWEEN and = on time columns, and make prod-lite generates every secret the prod compose file requires.
New Features
- Scoped API keys. Every access key now has a scope:
ingestsends telemetry, reads project data and reports evaluation runs;adminis everything the project allows, including key management. Existing keys were backfilled asadminso no live credential was narrowed; every new key isingestunless minted asadmin(#2424). The public API enforces the scope on its key-management routes rather than forwarding and relying on the control plane's refusal (#2616), andwhoamireportskey_scopeso a tool can tell what a key may do before writing it into an env file (#2617). - Key management on the public API.
GET/POST /api/v1/public/api-keysandDELETE .../api-keys/{key_id}are served on the same base URL as the rest of the public API, with every error arriving as{"detail": ...}. A key minted here is alwaysingest(#2425). A project's first key is minted on the signed-in user's credential, sotraceroot setupcan bootstrap a project that has no key yet, and can revoke it if setup fails afterwards (#2426). - Terminal-first onboarding. Sign-up hands off to onboarding, which creates the workspace and project before the device page approves the terminal, so the CLI never holds a session for an account that owns nothing (#2567). The browser flow ends on a hand-back page carrying the
traceroot setupcommand, waits for the project's first trace and opens it when it lands (#2596, [#2630]). Onboarding renders without the app shell (#2595), an interrupted sign-up is finishable without leaving a duplicate workspace (#2597), and a signed-out visitor keeps the terminal callback through sign-in (#2615, [#2638]). - One-command getting started. The empty traces page leads with
traceroot setupfilled in for the project (#2427). The manual path asks for the stack and a model provider key once, above the walkthrough, and the chosen stack drives the install command, snippet, docs link and key field (#2598, [#2634], [#2635], [#2637]). - Caller-reported LLM cost. A valid OpenInference
llm.cost.totalattribute replaces TraceRoot's list-price cost for that span; tokens are still recorded, and the cost breakdown is hidden when it no longer adds up to the stored total (#2724, [#2725]). - Redacted-span marker. Ingest preserves
traceroot.redacted, and the trace view shows a "Redacted by your app" chip on spans the SDK'sredactfunction ran on. The data-capture docs describe whatredactreceives and what is held back (#2706, [#2707], [#2735]).
Bug Fixes
make prod-litecould not start. A fresh.envleftSQL_GATEWAY_BOOTSTRAP_PASSWORD,BETTER_AUTH_SECRETandINTERNAL_API_SECRETempty, and compose aborts on an empty required variable before the first container starts. A newenv-secretstarget generates each one that is missing (#2559).- SQL gateway refused equivalent time filters.
BETWEENand=on a time column were refused even though the>=/<=spelling ran. They now expand to the same pair of comparisons and produce the same view call, and the refusal states the rule it enforces (#2286). - Lists repeated or skipped rows on tied timestamps. Sessions, users and detector runs ordered by time alone; each now breaks ties by its ID (#2683).
- Tiny alert thresholds showed as
$0. Assistant alert cards formatted with three fractional digits. Sub-dollar currency values now keep three significant digits, so$0.0004reads as such (#2648). - Campaign attribution was lost at Cloud sign-up. A host-only campaign cookie now survives the sign-in redirect and is cleared after identification, so the sign-up event records where the user came from (#2555).
- CLI installs warned on Node 20 and 22.
@traceroot-ai/toolsdeclarednode >=24though it runs on 20.3; the engines floor is back to>=20.3and ships with the next tools release (#2745). - BYOK model catalogs were stale. The Model Providers dropdowns add 20 IDs and drop 6 across eight providers, and the BYOK docs match (#2653).
Improvements
- Dependencies. Next 16.4.1, plus certifi, virtualenv, follow-redirects, hono, vite, vitest, ip-address, dompurify, undici, zod, nodemailer and opentelemetry-api bumped for security advisories (#2696, [#2703], [#2726], [#2730], [#2747]).
- Docs and examples. The agent-eval examples move to current models (#2668); the READMEs put setup before getting started and link the website (#2739, [#2553]); the contributing guide asks contributors to check in before starting on an assigned issue (#2712).
Upgrade notes
- Two migrations run on upgrade. The first adds
scope VARCHAR NOT NULL DEFAULT 'admin'toaccess_keys, backfilling every existing key asadmin. The second flips the default toingest, so any later insert that names no scope gets the safe scope (#2424). - Audit your existing keys. Every key minted before this release is
admin. Keys that only send telemetry should be re-minted asingestand rotated into the application's env files. SQL_GATEWAY_BOOTSTRAP_PASSWORDis now uncommented in.env.exampleand required by the prod compose file.make prod-litegenerates it when empty; other deployments must set it (#2559).- The onboarding and getting-started screens print
npx -y traceroot-cli@0.6.0 setup. traceroot-cli 0.6.0 is published on npm, and thesetupcommand first appears in that release; a self-hosted deployment pinned to an older CLI should upgrade it (#2630, [#2427]).
What's Changed
- fix(onboarding): leave the demo workspace out of the setup check by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2651
- fix(core): refresh BYOK model catalogs by @J-jxr in https://github.com/traceroot-ai/traceroot/pull/2653
- fix(ui): preserve precision in AI assistant alert thresholds by @harshitsharmaaaa in https://github.com/traceroot-ai/traceroot/pull/2648
- chore(deps): bump certifi, virtualenv, follow-redirects, hono, vite and vitest for security advisories by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2696
- chore(deps): bump virtualenv and vitest for security advisories by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2703
- fix(pagination): stabilize session, user and detector run ordering by @J-jxr in https://github.com/traceroot-ai/traceroot/pull/2683
- docs(contributing): ask before starting work on an assigned issue by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2712
- chore(deps): bump next to 16.4.1 and ip-address to 10.7.4 for security advisories by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2726
- fix(examples): move agent-eval examples off deprecated and legacy models by @nahuel007ng in https://github.com/traceroot-ai/traceroot/pull/2668
- chore(deps): bump dompurify to 3.4.17 by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2730
- feat(traces): mark spans redacted by the sending app by @lqiu03 in https://github.com/traceroot-ai/traceroot/pull/2706
- docs(tracing): redact personal data before export by @lqiu03 in https://github.com/traceroot-ai/traceroot/pull/2707
- docs(tracing): make the redact section short and clear by @lqiu03 in https://github.com/traceroot-ai/traceroot/pull/2735
- feat(api): scope access keys and refuse key management to an ingest key by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2424
- feat(api): serve project API-key management on the public API base URL by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2425
- feat(auth): enforce access key scope on the public api by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2616
- feat(api): report a key's scope from whoami by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2617
- feat(api): mint a project's first API key on a user credential by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2426
- fix(onboarding): create the workspace before approving the terminal by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2567
- feat(onboarding): finish a first run on a terminal hand-back page by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2596
- fix(onboarding): make an interrupted sign-up finishable from the dashboard by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2597
- feat(onboarding): wait for the first trace after sign-up, and end the device page at approval by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2630
- feat(onboarding): render the setup flow without the app shell by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2595
- fix(onboarding): keep the query string in the sign-in callback for a signed-out visitor by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2615
- fix(onboarding): anchor the setup header so it stops moving between steps by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2638
- feat(traces): lead the getting-started panel with one setup command by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2427
- feat(traces): take a model provider key inline on the manual setup path by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2598
- fix(onboarding): say the model key was just saved, not that one was already there by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2634
- feat(traces): let the chosen stack drive the key, the snippet and the docs by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2635
- fix(onboarding): ask for the stack and the model key above the manual walkthrough by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2637
- docs(readme): drop the coding-agent section and put setup before getting started by @XinweiHe in https://github.com/traceroot-ai/traceroot/pull/2739
- fix(tools): declare the Node versions the published package runs on by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2745
- fix(sql): scope BETWEEN and = on a time column, and reword the refusal by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2286
- fix(self-hosting): generate every secret prod compose requires by @dark-sorceror in https://github.com/traceroot-ai/traceroot/pull/2559
- chore(deps): bump undici, zod, nodemailer, opentelemetry-api and virtualenv for security advisories by @GabrielDrapor in https://github.com/traceroot-ai/traceroot/pull/2747
- docs: add tracked website links to README navigation by @Inlei in https://github.com/traceroot-ai/traceroot/pull/2553
- fix(analytics): preserve campaign attribution through Cloud signup by @Inlei in https://github.com/traceroot-ai/traceroot/pull/2555
- feat(worker): honor caller-reported LLM cost by @lqiu03 in https://github.com/traceroot-ai/traceroot/pull/2724
- docs(tracing): document reporting LLM cost by @lqiu03 in https://github.com/traceroot-ai/traceroot/pull/2725
New Contributors
- @J-jxr made their first contribution in https://github.com/traceroot-ai/traceroot/pull/2653
- @nahuel007ng made their first contribution in https://github.com/traceroot-ai/traceroot/pull/2668
Full Changelog: https://github.com/traceroot-ai/traceroot/compare/v1.3.2...v1.3.3