Skip to content

Telemetry

Grampus collects no telemetry by default. Zero network calls are made unless you explicitly opt in — a property enforced by tests (tests/core/test_telemetry.py::TestZeroEgressWhenDisabled).

Opting in / out

export GRAMPUS_TELEMETRY=1     # opt in
export DO_NOT_TRACK=1          # opt out — always wins, even over GRAMPUS_TELEMETRY=1

Exactly what is sent (exhaustive)

One batched POST containing only:

Field Example Notes
schema_version 1 Payload schema
grampus_version "0.2.0" Package version
python_version "3.12" Major.minor only
platform "darwin" OS name only
events {"cli_command:init": 2} Aggregate counters

The event schema is closed: the only event types are cli_command and feature_used (reserved — no library code emits it yet; today only cli_command counters are ever sent) (grampus.core.telemetry.EVENT_TYPES). Recording any other type raises ValueError, so new data cannot be added without a code change and an update to this page.

Never collected: prompts, model outputs, file paths, hostnames, IP-derived identifiers, user/machine IDs of any kind, or free text. There is no install ID — payloads are not linkable across runs.

Failure behavior

Telemetry can never break your agent: flush errors are swallowed and logged at debug level, and the whole path is skipped when disabled.