docs/guide/resources/telemetry.md
RTK collects anonymous, aggregate usage metrics once per day to help improve the product. Telemetry is disabled by default and requires explicit consent during rtk init or rtk telemetry enable.
Entity: RTK AI Labs
Contact: [email protected]
Without telemetry, we have no visibility into:
This data directly drives our roadmap. For example, if telemetry shows that 40% of users run Python commands but only 10% of our filters cover Python, we know where to invest next.
| Field | Example | Purpose |
|---|---|---|
device_hash | a3f8c9... (64 hex chars) | Count unique installations. SHA-256 of a per-device random salt stored locally (~/.local/share/rtk/.device_salt). Not reversible. No hostname or username included. |
| Field | Example | Purpose |
|---|---|---|
version | 0.34.1 | Track adoption of new versions |
os | macos | Know which platforms to support and test |
arch | aarch64 | Prioritize ARM vs x86 builds |
install_method | homebrew | Understand distribution channels (homebrew/cargo/script/nix) |
| Field | Example | Purpose |
|---|---|---|
commands_24h | 142 | Daily activity level |
commands_total | 32888 | Lifetime usage — segment light vs heavy users |
top_commands | ["git", "cargo", "ls"] | Most popular tools (names only, max 5) |
tokens_saved_24h | 450000 | Daily value delivered |
tokens_saved_total | 96500000 | Lifetime value delivered |
savings_pct | 72.5 | Overall effectiveness |
| Field | Example | Purpose |
|---|---|---|
passthrough_top | ["git:15", "npm:8"] | Top 5 commands with 0% savings — these need filters |
parse_failures_24h | 3 | Filter fragility — high count means filters are breaking |
low_savings_commands | ["rtk docker ps:25%"] | Commands averaging <30% savings — filters to improve |
avg_savings_per_command | 68.5 | Unweighted average (vs global which is volume-biased) |
| Field | Example | Purpose |
|---|---|---|
ecosystem_mix | {"git": 45, "cargo": 20, "js": 15} | Category percentages — where to invest filter development |
| Field | Example | Purpose |
|---|---|---|
first_seen_days | 45 | Installation age in days |
active_days_30d | 22 | Days with at least 1 command in last 30 days — measures stickiness |
| Field | Example | Purpose |
|---|---|---|
tokens_saved_30d | 12000000 | 30-day token savings for trend analysis |
estimated_savings_usd_30d | 36.0 | Estimated dollar value saved (at ~$3/Mtok input pricing, Claude Sonnet) |
| Field | Example | Purpose |
|---|---|---|
hook_type | claude | Which AI agent hook is installed (claude/gemini/codex/cursor/none) |
custom_toml_filters | 3 | Number of user-created TOML filter files — DSL adoption |
| Field | Example | Purpose |
|---|---|---|
has_config_toml | true | Whether user has customized RTK config |
exclude_commands_count | 2 | Commands excluded from rewriting — high count may indicate frustration |
projects_count | 5 | Distinct project paths — multi-project = power user |
| Field | Example | Purpose |
|---|---|---|
meta_usage | {"gain": 5, "discover": 2} | Which RTK features are actually used |
Telemetry requires explicit opt-in consent (GDPR Art. 6, 7). Consent is requested during rtk init or via rtk telemetry enable. Without consent, no data is sent.
rtk telemetry status # Check current consent state
rtk telemetry enable # Give consent (interactive prompt)
rtk telemetry disable # Withdraw consent
rtk telemetry forget # Withdraw consent + delete local data + request server erasure
Environment variable override (blocks telemetry regardless of consent):
export RTK_TELEMETRY_DISABLED=1
~/.local/share/rtk/history.db) retains data for 90 days by default (configurable via tracking.history_days in config.toml). Deleted entirely by rtk telemetry forget.Under the EU General Data Protection Regulation, you have the right to:
rtk telemetry status shows your device hash; the telemetry payload is fully documented above.rtk telemetry forget to delete local data and send an erasure request to the server. Alternatively, email [email protected] with your device hash.rtk telemetry disable stops all data collection immediately.~/.local/share/rtk/history.db contains all locally stored data.rtk telemetry disable or export RTK_TELEMETRY_DISABLED=1.rtk telemetry forget — this disables telemetry, deletes your device salt, ping marker, and local tracking database (history.db), then sends an erasure request to the server.