Telemetry
Anonymous usage stats only. No code, no queries, no personal data.
Opt out anytime:
BRAKIT_TELEMETRY=falseBrakit collects anonymous telemetry data to understand how the tool is used and where to focus improvements. Participation is optional and you can opt out at any time.
How it works
- Lightweight journey events fire at key milestones (CLI start, setup complete, first request, dashboard open)
- A session summary is sent on process shutdown
- All requests are fire-and-forget via detached subprocess (never blocks your app)
- Network failures are silently ignored
- An anonymous UUID is stored in
~/.brakit/config.json - No third-party SDK is used — just a single fetch() call per event
- Python SDK sends a single session event on exit (same privacy guarantees)
Journey events
These events help us understand where users succeed or get stuck during setup. Each is a single fire-and-forget request with no PII.
| Event | When | Key fields | Purpose |
|---|---|---|---|
cli_invoked | CLI command starts | command, has_package_json, cwd_has_node_modules | Understand how users install brakit |
setup_completed | Runtime initialization finishes | framework, framework_detection_candidates, adapters_detected, adapters_failed, setup_duration_ms | Diagnose setup failures |
first_request | First HTTP request captured | port, time_to_first_request_ms | Track time to first value |
dashboard_viewed | User opens the dashboard | time_to_dashboard_ms, request_count_at_open | Dashboard discovery rate |
cli_uninstall | User runs brakit uninstall | instrumentation_removed, package_removed, mcp_removed, data_removed | Understand churn |
session | Process exit | All fields in the table below | Full session summary |
Session fields
The session event fires once on process exit and contains the full session summary.
| Field | Example | Purpose |
|---|---|---|
brakit_version | 0.9.1 | Track version adoption |
node_version | v20.11.0 | Ensure compatibility |
os | darwin-24.6.0 | Platform support |
arch | arm64 | Platform support |
sdk | node | Node vs Python SDK usage |
framework | nextjs | Prioritize framework support |
package_manager | pnpm | Testing prioritization |
is_custom_command | false | Usage patterns |
first_session | true | New vs returning users |
adapters_detected | ["prisma"] | Adapter adoption |
adapters_failed | [] | Diagnose adapter issues |
framework_detection_candidates | ["next", "prisma"] | Understand user stacks |
request_count | 142 | Usage volume |
error_count | 3 | Error detection effectiveness |
query_count | 87 | Query instrumentation usage |
fetch_count | 24 | Fetch tracking usage |
insight_count | 5 | Detection effectiveness |
finding_count | 2 | Security rule effectiveness |
insight_types | ["n1", "slow"] | Prioritize insight categories |
rules_triggered | ["exposed-secret"] | Prioritize security rules |
endpoint_count | 12 | App complexity |
avg_duration_ms | 230 | Performance baselines |
slowest_endpoint_bucket | 1000-2000ms | Performance distribution |
tabs_viewed | ["requests", "queries"] | Dashboard UX improvements |
dashboard_opened | true | Feature adoption |
explain_used | false | Feature adoption |
session_duration_s | 1823 | Session patterns |
setup_succeeded | true | Setup success rate |
setup_duration_ms | 42 | Setup performance |
time_to_first_request_ms | 3200 | Time to value |
time_to_dashboard_ms | 8500 | Dashboard discovery rate |
exit_reason | clean | Understand session endings |
What is NEVER collected
URLs, query strings, or request paths
SQL queries or database contents
Request/response bodies
Source code or file contents
API keys, tokens, or secrets
Project names or file paths
IP addresses
Personally identifiable information
How to opt out
Environment variable
export BRAKIT_TELEMETRY=falseVerify status
Check ~/.brakit/config.json — the telemetry field should be false.
Source code
The telemetry implementation is fully open source: src/telemetry/index.ts (Node) and sdks/python/brakit/_telemetry.py (Python).