aphrody collects ZERO telemetry. No usage stats, no error reports, no analytics, no phone-home. Period. There is no background channel from your machine to ours, ever.
- No
tracinginstrumentation sends data anywhere. Spans go to stdout/stderr for your eyes only. - No
reqwestcalls to aphrody-controlled domains. Verify:grep -r "aphrody.dev" crates/should only show docs and CLI help strings, never a network destination. - No
opentelemetry,jaeger,datadog, orsentrycrates in[workspace.dependencies]of the rootCargo.toml. aphrody doctorreads LOCAL state only — processes, network interfaces, disk, config. It does NOT POST anything.aphrody --jsonoutput is for YOU to pipe intojq; the binary does not transmit it.
As maintainers of this project, the only data we ever see about you is:
- Public GitHub data: stars, forks, issues, PRs you choose to open.
- Public crates.io download counters: one aggregate integer, no per-user attribution.
- Public docs.rs hit counts: same aggregate-only model.
- GitHub Security Advisory submissions, only when you choose to file one.
We do NOT have, and never will have:
- Per-user activity logs.
- Per-install fingerprints or unique IDs.
- IP addresses, user agents, or build hashes of YOUR binary.
Each is a user-initiated subcommand, never a background task:
aphrody dns <domain>— DNS query YOU asked for.aphrody scrape <url>— fetches the URL YOU specified.aphrody a2a <prompt>— connects to YOUR configured peer agent.aphrody auth— OAuth2 to YOUR Google account; token stored locally.aphrody chromium sync— reads YOUR local Chromium profile.
None transmit anything to aphrody-controlled servers. Destinations are the ones you put on the command line.
inbox-from-<self>.jsonl— local A2A coord log, read by a peer only if you configured one.heartbeat-<self>.txt— local proof-of-life timestamp.path.jsonandmonorepo-map.json(frommrx scan) — gitignored, cwd-local.~/.config/aphrody/— local config and OAuth tokens.- Cargo build artefacts under
target/— standard Rust output.
These files NEVER leave your machine unless YOU upload them.
- The WASM module runs in YOUR browser sandbox.
- It does NOT phone home.
- It uses
getrandomfeaturejsfor entropy — a Web Crypto API call inside your browser, no network. - No aphrody telemetry pipeline exists for the browser to feed.
We audit transitive dependencies via cargo deny check and cargo vet.
The deny.toml policy bans tracking-style crates. If you spot a
transitive dependency that calls home, open a Security Advisory per
SECURITY.md and we will treat it as a hard bug.
Don't trust this document — verify it:
grep -r "reqwest\|hyper::Client\|surf::get" crates/ | grep -v tests/should only return user-invoked subcommand code paths.cargo auditable info target/release/aphrody | jq '.packages[] | select(.name | test("telemetry|analytics|sentry|datadog"))'should return an empty list.aphrody doctor --jsonoutput contains zero PII; pipe throughjq 'paths(scalars) as $p | $p'to enumerate every key.
This file is versioned in git. Any change requires a PR that explicitly
calls out the change in CHANGELOG.md under a
### Privacy heading. We commit to NEVER adding background telemetry
without both bumping the major version AND obtaining explicit
opt-in user consent at runtime.
Privacy questions: community@aphrody.dev. Security vulnerabilities:
see SECURITY.md for the disclosure process.