Telemetry
What AgentSonar sends, what it never sends, how to disable it, and why we collect any of this. Nothing fancy. The full, honest answer in one page.
What we send (per session)
Starting in 0.4.0, AgentSonar sends one anonymous event each time
the SDK starts a session. The first time you run AgentSonar on a machine, you'll
see a one-time message in stderr describing this and how to disable it.
| Field | Example | What it represents |
|---|---|---|
install_id |
8a4f3b29-... |
Random UUID stored at ~/.agentsonar/state.json. Lets us count unique machines without identifying you. |
session_id |
a1b2c3d4-... |
Fresh UUID per session. Helps us deduplicate retried events. |
version |
0.4.0 |
Which AgentSonar version is in use, so we know what versions are still active. |
python |
3.12 |
Python minor version. Helps us decide when it's safe to drop older Python support. |
os |
darwin / linux / win32 |
Operating system family. |
arch |
arm64 / x86_64 |
CPU architecture. |
adapter |
custom_python / crewai / langgraph / oma_sidecar |
Which integration is active. Helps us prioritize where to invest engineering time. |
timestamp |
1745891234.5 |
Epoch seconds at session start. |
What we never send
- Agent names (e.g.
"reviewer","planner") or any string you passed to the SDK - Prompts, LLM responses, or any content from your runs
- Log content from
agentsonar_logs/ - Project paths, filenames, working directories
- IP addresses (the collector doesn't log them)
- Environment variables, API keys, or any secret material
How to disable
Pick whichever fits your setup. All four work:
1. Environment variable (one-shot or shell-wide)
# Either of these disables telemetry for this run:
export AGENTSONAR_TELEMETRY=off
export DO_NOT_TRACK=1
We honor DO_NOT_TRACK=1 as the universal opt-out signal, in addition to our SDK-specific AGENTSONAR_TELEMETRY=off. Set either in your shell profile, your CI config, or a .env file.
2. In code (persists across runs)
sonar = monitor_orchestrator(config={"telemetry": False})
When AgentSonar sees telemetry: False in the config, it writes
telemetry_disabled: true to ~/.agentsonar/state.json. Future
sessions on the same machine will skip telemetry without needing the env var
or the config flag again.
3. Delete the state file
rm ~/.agentsonar/state.json
Removes the install_id and disclosure-shown flag. Next session
generates a new ID and prints the disclosure message again. Use this if you
want to "start fresh" without disabling.
Why we collect this
At closed beta, we genuinely had no idea how many people were running AgentSonar. PyPI download counts are dominated by CI traffic (typically 5x to 10x inflation), GitHub stars are vanity, and our 6 design partners are an n=6 sample.
Session-event telemetry gives us the smallest honest signal we could think of: are real humans running this, on what Python versions, with which adapters? That's the data we need to prioritize the OpenAI Agents SDK adapter vs. the Claude Agent SDK adapter, decide when it's safe to drop Python 3.10 support, and focus our work on the patterns our users actually hit.
We chose opt-out (with a clear first-run message and trivial disable) because opt-in rates for OSS dev tools are typically under 10%, and at 50 GitHub stars that's not enough signal to make decisions on. We chose to collect zero content data because the only telemetry we'd trust ourselves with is data we couldn't abuse if we wanted to.
Where the data lives
Events go to a Cloudflare Worker on our own infrastructure (t.agent-sonar.com),
which writes them to a Cloudflare D1 SQLite database we own. No third-party
analytics vendor sees the data. The Worker source is open: you can read exactly
what it does at github.com/agentsonar/agentsonar/tree/main/telemetry-worker.
Questions
Open an issue at github.com/agentsonar/agentsonar/issues or ping us on Discord. If we ever change what's collected, we'll publish a changelog entry and update this page before the change ships.