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.