Skip to content

Telemetry ​

Parcela reports which commands run and how they end, so we can see which features are used, which platforms to support and where things fail. It never reports what a command acts on: no paths, project, environment or service names, URLs, ports, argument values, environment variables or error messages.

Turn it off ​

Any one of these turns it off:

sh
parcela telemetry disable
  • DO_NOT_TRACK=1 or PARCELA_TELEMETRY_DISABLED=1 in the environment.
  • parcela telemetry status shows whether it is on and why not.

parcela telemetry enable turns it back on. The choice is saved in the state directory, telemetry.json in ~/.local/state/parcela, so a different --state-dir or PARCELA_STATE_DIR has its own; the environment variables apply everywhere.

When it is sent ​

Nothing is sent the first time Parcela runs. That run prints a notice instead:

text
Parcela collects anonymous usage data: commands, exit codes and versions, never paths or names.
Turn it off with `parcela telemetry disable` or DO_NOT_TRACK=1. https://parcela.run/docs/telemetry/

After that, each command sends one event when it finishes. A background curl posts it to https://parcela.run/api/telemetry and gives up after 3 seconds; Parcela never waits for it, and a failed or blocked request changes nothing. Builds from source in debug mode, including cargo test, never send. parcela telemetry, --help, --version and Parcela's own internal re-runs are not reported.

What an event contains ​

PARCELA_TELEMETRY_DEBUG=1 prints the event to stderr instead of sending it:

text
$ PARCELA_TELEMETRY_DEBUG=1 parcela up --detach --name review
{
  "schema": 1,
  "event": "command",
  "command": "up",
  "flags": ["--detach", "--name"],
  "exit": 0,
  "duration": "5-30s",
  "version": "0.5.0",
  "channel": "stable",
  "os": "macos",
  "arch": "aarch64",
  "install": "install.sh",
  "ci": false,
  "terminal": true,
  "json": false,
  "install_id": "4208b56a-3d78-451f-8c9d-889a2e13a766"
}
FieldWhat it is
commandThe subcommand, such as up or proxy install.
flagsThe names of the flags given on the command line, never their values: --name review is reported as --name.
exitThe exit code.
durationHow long the command ran: <1s, 1-5s, 5-30s, 30s-2m or >2m.
version, channelParcela's version, and stable or nightly.
os, archThe operating system and CPU architecture.
installHow Parcela was installed: install.sh, homebrew, cargo or unknown.
ciWhether a CI provider's usual variable, such as CI or GITHUB_ACTIONS, is set.
terminal, jsonWhether the output went to a terminal, and whether --json was given.
install_idA random ID created on the second run, so installs can be counted without knowing whose they are.

Where it goes ​

parcela.run/api/telemetry is a Cloudflare Worker in this repository (docs/website/worker.mjs). It rejects any event with fields or values outside the table above, and forwards the rest to PostHog Cloud US as anonymous events: no person profiles and no location. PostHog keeps them for its plan's retention period. The address is ours, so a firewall or proxy rule for that one URL also stops it.