Telemetry¶
Bullpen CLI can send two kinds of telemetry from official release builds:
- Error telemetry for crashes and command failures.
- Usage telemetry for coarse command outcome analytics.
Error telemetry is delivered through Sentry. Usage telemetry is delivered through PostHog in official release builds.
Analytics was optimized in v0.1.115 to reduce unnecessary background traffic.
Telemetry is best-effort. It never changes a command result, never writes to stdout or stderr, and never blocks trading.
Quick Summary¶
| Question | Answer |
|---|---|
| Can I turn it off? | Yes. Run bullpen config telemetry off, set BULLPEN_DISABLE_TELEMETRY=1, or set DO_NOT_TRACK=1. |
| Does Bullpen collect wallet addresses? | No. Addresses, transaction hashes, JWTs, provider URLs, order IDs, market IDs, amounts, prices, and raw command arguments are excluded or redacted. |
| Does PostHog receive my IP address? | HTTPS requests expose the source IP to PostHog. Bullpen does not add it to the CLI payload, but PostHog may process it according to the project's privacy settings. |
| Does usage telemetry run in local builds? | No. Debug builds and CI do not emit usage telemetry. |
| Does telemetry affect trading? | No. Events are queued after command output is rendered and sent best-effort. |
What We Collect¶
Error telemetry may include:
- CLI version, OS, architecture, and release environment.
- Error type and sanitized error context.
- Panic backtrace symbols when a panic occurs.
Usage telemetry records coarse command outcomes after output or error text has been rendered. It does not send raw inputs or financial values.
Usage events may include:
- Command path, such as
polymarket.buyorhyperliquid.copy.start. - Output mode, such as table or JSON.
- Coarse execution mode, such as read, preview, live, manage, or interactive.
- Exit class and coarse duration bucket.
- Coarse product area, such as onboarding, funding, wallet, trading, tracker, automation, diagnostics, or system.
- Coarse trade stage/result when the invocation is a trade flow.
- A pseudonymous identifier used to understand aggregate usage. It is not derived from a wallet, email, hostname, JWT, or device identifier.
Usage telemetry uses either the cached Bullpen app user ID for logged-in users or a random anonymous ID for logged-out users. The anonymous ID is not derived from a wallet, email, hostname, JWT, or device identifier.
What We Do Not Collect¶
Telemetry events do not include:
- Raw command arguments.
- Wallet, EVM, Solana, or Hyperliquid addresses.
- Market slugs, market titles, condition IDs, token IDs, order IDs, or transaction hashes.
- Amounts, prices, shares, balances, fills, or PnL.
- JWTs, API keys, signatures, seed phrases, private keys, or provider URLs.
- Usernames, emails, hostnames, local usernames, or raw terminal environment values.
- Raw error messages in usage analytics.
send_default_pii is disabled for error telemetry. PostHog person-profile
processing is disabled for usage telemetry. As with any HTTPS service, PostHog
receives the connection's source IP. The CLI does not include an IP address or
location field in its event payload.
Opting Out¶
Both error telemetry and usage telemetry share one opt-out story. Any of the following disables all telemetry:
State change: Disable telemetry for future commands:
Check the current setting:
State change: Re-enable telemetry only when you intend to opt back in:
The single opt-out switch governs both telemetry streams.
Disabled Automatically¶
Telemetry is disabled automatically in:
- Debug builds, such as
cargo runor debugcargo install --pathbuilds. - Continuous integration environments.
- Custom builds that do not include usage analytics.
Delivery¶
Usage telemetry is sent best-effort after command output or error text is rendered. It may be queued briefly when delivery is unavailable. Analytics delivery cannot make order submission or another CLI command unusable.
Reporting A Privacy Issue¶
If you find an unredacted secret or address in a telemetry event you forwarded to us, file a private security report through Responsible Disclosure. Do not paste the leaked content into a public issue.