// TELEMETRY

Telemetry

Last updated October 14, 2026

The short version

  • By default the Steroid CLI sends aggregate usage counts: whether a recall was answered, a coarse time bucket, which setup or update step failed. The full list of fields is on this page.
  • It never sends your code, files, conversations, recall questions or answers, project or repository names, file paths, error messages, hostnames, usernames or email addresses.
  • The CLI identifies an install with a random ID created on your machine. It is not derived from your hardware, username, project or account, and Steroid does not link it to an account. Because it stays the same over time, we treat it as pseudonymous data, not anonymous data.
  • This website sets no cookies and uses no local storage, session storage or visitor ID for analytics. It counts events, not people.
  • You can turn CLI telemetry off at any time with steroid telemetry disable or DO_NOT_TRACK=1, and you can see exactly what would be sent before anything is.

What the CLI sends

Usage counts are sent over HTTPS to telemetry.steroidkit.com. Events are saved on your machine first and uploaded in batches by the background service, or after a command you run. Telemetry is not sent from source or development builds, or when the CI environment variable is set.

Every CLI event carries these fields:

  • Install ID. A random identifier generated on your machine the first time the CLI runs. It is not derived from your hardware, username, project or account, and Steroid does not link it to an account.
  • Event name. One of the events listed below.
  • Date. The calendar date (UTC). No time of day.
  • CLI version. The published version number, for example 0.4.0.
  • Operating system. macos, linux or windows.
  • Event ID. A random identifier so a retried upload is not counted twice.

The events, and the only fields each one may contain:

EventWhen it is sentFields and allowed values
install_completedOnce, when the first coding agent is set up successfully.none
onboarding_outcomeWhen a setup attempt for a coding agent ends, from the app or the command line.
  • ide: claude-code, codex, cursor, copilot
  • source: tui, headless
  • success: true or false
  • failure_stage (optional): check_app, check_cli, write_config, write_instructions, install_skills, health_probe
  • failure_kind (optional): app_not_found, cli_not_found, config_error, probe_timeout, probe_auth, probe_error
  • probe: passed, auth, timeout, error, skipped
update_outcomeAfter an update installs (reported by the new version the first time it starts) or when an update fails.
  • trigger: auto, manual, installer, unknown
  • outcome: succeeded, failed
  • from_version (optional): a published version number
  • to_version: a published version number
  • failure_stage (optional): platform, resolve, not_published, download, checksum_fetch, checksum_missing, checksum_mismatch, stage, smoke_test, swap, restart
daily_heartbeatAt most once per UTC day on which you use Steroid: a recall is served, you open the app, or you run a command yourself. Background activity does not count.
  • mode: local, connected
  • auto_update: on, off_setting, off_env, off_ci
  • ides_configured: a whole number from 0 to 4
recall_query_runEach time a recall request finishes. Follow-up lookups of a single turn or diff are not counted.
  • scope: project, global
  • surface: mcp, cli
  • ide: claude-code, codex, cursor, copilot, other, none
  • outcome: answered, no_relevant, no_history, agent_unavailable, timeout, error
  • latency_bucket: lt5s, 5to15s, 15to60s, gt60s
  • sources_answered_bucket: 0, 1, 2, 3plus
  • history_sources: any of: claude-code, codex, cursor, cursor-cli, copilot
  • auto_indexed: true or false
  • had_update_notice: true or false
first_successful_recallOnce, the first time a recall is answered.
  • days_since_install: a whole number from 0 to 3650
  • scope: project, global
  • surface: mcp, cli
project_count_bucketWhen the number of projects you have registered moves into a different bucket.
  • bucket: 1, 2-5, 6plus
mcp_tool_errorWhen a recall tool call fails.
  • tool: recall_memory, recall_diff, recall_turn
  • error_class: timeout, no_agent_cli, exception
daemon_registrationWhen the background service is registered with your operating system.
  • platform: launchd, systemd, task_scheduler
  • ok: true or false
  • trigger: setup, tui, daemon_cmd
uninstall_signalWhen you run the uninstall command. The reason is optional and chosen from a fixed list.
  • days_since_install: a whole number from 0 to 3650
  • reason (optional): not_useful, too_slow, setup_problems, privacy, switched_tool, temporary, other
update_check_outcomeWhen the daily check for a new release changes state, for example the first failure or a recovery.
  • result: up_to_date, available, failed
  • fail_class (optional): tls, timeout, proxy, connection, http_4xx, http_5xx, not_found, unreadable, other
  • auto_install (optional): disabled, waiting, failed

Every value above is a number, a true or false flag, a published version number, or one of the fixed words listed. Free text cannot be sent: the CLI rejects anything outside these lists before it is saved, and our server rejects it again on arrival.

What this website sends

The pages of steroidkit.com send the events below. They carry no identifier, so two events from the same browser cannot be linked to each other, and the site stores nothing in your browser to do so. The site honors Do Not Track and Global Privacy Control: if either is on, it sends nothing.

EventWhen it is sentFields and allowed values
page_viewA page of this site is shown. The first page view after you arrive also records where you came from, reduced as described below.
  • route: home, releases, enterprise, privacy, security, telemetry, connected_overview, not_found, docs/getting-started, docs/steroid-cli/overview, docs/steroid-cli/installation, docs/steroid-cli/ide-setup, docs/steroid-cli/modes, docs/steroid-cli/commands, docs/steroid-cli/skills, docs/steroid-cli/updating, docs/other
install_dialog_openThe install dialog is opened.
  • placement: hero, nav, final
install_copyThe install command or the agent install prompt is copied.
  • os: mac_linux, windows
  • placement (optional): hero, nav, final
  • method (optional): manual, agentic
docs_install_copyAn install command is copied on the installation docs page.
  • variant: standard, force, windows
install_path_selectYou switch between the agentic and manual install tabs.
  • path: agentic, manual
install_os_selectThe install dialog shows an operating system tab (detected from your browser) or you pick one.
  • os: mac_linux, windows
  • auto_detected: true or false
cta_clickA call-to-action button or link is clicked.
  • cta: demo_watch, docs_hero, waitlist_open_modes, waitlist_open_final, waitlist_open_overview, modes_connected_docs, modes_connected_overview, final_go_connected, ide_request_open, feature_docs, privacy_details, footer_docs, footer_releases, footer_github, footer_privacy, footer_security, footer_telemetry
docs_navYou open a page from the docs sidebar.
  • to: docs/getting-started, docs/steroid-cli/overview, docs/steroid-cli/installation, docs/steroid-cli/ide-setup, docs/steroid-cli/modes, docs/steroid-cli/commands, docs/steroid-cli/skills, docs/steroid-cli/updating, docs/other
  • depth: a whole number from 1 to 3
outbound_clickYou click the GitHub link or the link to view the install script.
  • target: github_repo, install_script
form_startedYou type into a form for the first time.
  • form: waitlist, ide_request, enterprise_inquiry
form_submittedA form is submitted and accepted.
  • form: waitlist, ide_request, enterprise_inquiry
form_failedA form submission is rejected or fails.
  • form: waitlist, ide_request, enterprise_inquiry
  • result: invalid, server_error

On arrival, a value is reduced before it is stored:

  • Where you came from. Your browser reduces the referring page to its domain name and sorts it into one of: direct, search, hn, producthunt, x, reddit, github, other. This is done once, on the first page you open, and the full address and any campaign tags never leave your browser.
  • Your browser. The server reduces your user-agent to a browser family and an operating system family, then discards the original.
  • Your country. Taken from a header added by Cloudflare. No finer location is stored.
  • Pages. Only the page's name from a fixed list, never the address you typed or any query string.
  • Forms. We record that a form was started, submitted or failed, never what you typed. The details you choose to submit in a form are stored separately so we can reply to you.

The only thing this site keeps in your browser is, if you join the waitlist, a note of the email you entered so the dialog can tell you that you already joined. It is not used for analytics.

What is never collected

  • Your code, files, diffs or conversation text.
  • Recall questions or answers.
  • Project, repository or folder names, and file paths.
  • Error messages or stack traces.
  • Hostnames, usernames and email addresses (the CLI never sends them).
  • Any value derived from the above, including hashes: a hash of a project name would still let two installs be matched.
  • Your IP address. The Steroid application does not read, store or log it. Cloudflare, which delivers traffic to our servers, processes IP addresses to deliver requests and block abuse, under its own retention settings.

Where it goes and how long we keep it

Telemetry is stored in Steroid's own database. We do not send it to a third-party analytics service. Access is limited to the admin dashboard, which hides any breakdown that would describe fewer than 10 installs.

  • Individual events from the CLI and from this website are deleted after 90 days.
  • Daily per-install summaries (counts of active days and recalls, no content) are kept for 13 months, so retention can be measured over time.
  • Running totals and monthly counts (for example recalls per month or installs per month) are kept indefinitely. They are plain numbers with no install ID, so they cannot be linked to any install.

Because those totals contain no install ID, an event that has already been counted into one cannot be taken back out when you opt out or delete your install ID. Opting out stops future counting and deletes your install ID and anything not yet uploaded; the individual events and daily per-install summaries tied to it are still deleted on the schedule above. The dashboard still hides any breakdown that would describe fewer than 10 installs, including breakdowns of these totals.

How to opt out

  • steroid telemetry disable turns CLI telemetry off for good, deletes the install ID and discards anything not yet uploaded. steroid telemetry status shows the current state and why.
  • DO_NOT_TRACK=1 or STEROID_TELEMETRY_DISABLED=1 in the environment turns it off for programs started from that environment. The background service and some editors start without your shell's environment, so use steroid telemetry disable to be certain.
  • STEROID_TELEMETRY_DEBUG=1 prints exactly what would be sent and sends nothing.
  • After you opt out, nothing is sent, including a note that you did.

What this page does not cover

When your coding agent asks Steroid for context, the answer is produced by your own coding agent, which sends that context to its own model provider under that provider's terms. That is separate from Steroid telemetry and is not sent to Steroid. See Privacy.

Connected mode is not available in this release. This page will list what it sends before it launches.

Contact

Questions about this page: [email protected].

Steroid Kit logo

Steroid_Kit

Local-first recall for coding agents.

RESOURCES

DOCSRELEASESGITHUB

© 2026 STEROID_LABS