Analytics & Telemetry
What we collect, how to disable it, and where to view aggregated insights
What is collected
On successful project creation, the CLI sends a single event (project_created
) with:
- Selected options (stack choices):
frontend
,backend
,runtime
,database
,orm
,api
,auth
,addons
,examples
,dbSetup
,webDeploy
,packageManager
- Environment data:
cli_version
,node_version
,platform
- A random session id:
distinct_id
likecli_<random>
- IP removed:
$ip: null
Not collected:
- Project name, path, or file contents (explicitly omitted)
- Secrets or environment variables from your machine
Disable telemetry
Telemetry is enabled by default. To disable:
# Disable for a single run
BTS_TELEMETRY_DISABLED=1 bun create better-t-stack@latest
# Disable for a single run
BTS_TELEMETRY_DISABLED=1 pnpm create better-t-stack@latest
# Disable for a single run
BTS_TELEMETRY_DISABLED=1 npx create-better-t-stack@latest
Add export BTS_TELEMETRY_DISABLED=1
to your shell profile to make it permanent.
Where to view analytics
- Charts:
/analytics
- Raw JSON snapshot:
https://r2.better-t-stack.dev/analytics-data.json
- CSV export:
https://r2.better-t-stack.dev/export.csv
Notes:
- Aggregates are periodically regenerated from incoming events
- Raw data is not publicly exposed; the
/analytics
page presents only summary statistics
Full transparency
Single event per scaffold; randomized id; no IP or project identifiers. See source code below.
If in doubt, set BTS_TELEMETRY_DISABLED=1
and proceed. You can still use all CLI features.
Source code
- CLI event sender:
apps/cli/src/utils/analytics.ts
- Telemetry toggle logic:
apps/cli/src/utils/telemetry.ts
- Aggregation script (builds the charts data):
apps/web/scripts/generate-analytics.ts