One intake on xelth.com for the anonymous usage telemetry and the complaints of every free
program of ours that does not run its own: C3 (the Rust consultation bridge),
the claude-codex-consult Claude Code plugin (id codex-consult), eckSnapshot, and the tools that follow. It exists so a
program can be improved even when someone we never hear from uses it.
sha256(salt on disk + machine name): stable per installation, meaningless elsewheredetails key named like one (key, token, secret, password, authorization, *_key, …) is dropped on arrival, and the reply says how many wereInstalling one of these programs means accepting these terms; each README repeats them next
to its own switch (for C3 and the plugin: CODEX_CONSULT_TELEMETRY=off, or -Telemetry off
per run). The program prints the notice once on the first run after an install. Sending never blocks a run:
events queue in a local spool, go out in the background with a 3 s timeout, are retried on the next run and
dropped after 7 days.
A complaint holds only what you typed plus the context the program showed you before sending
(the last run's summary). The reply carries a public reference like T-7KQ4-M2XZ: quote it in a
topic on the forum or in a mail, and the maintainer can find your report without you
sending anything else.
DELETE https://xelth.com/T/v2/instances/<instance_id>?public_ref=T-XXXX-XXXX
removes every event and complaint that instance ever sent. The daily counts (per app, version, event type, severity) hold no instance and are kept.
{ "status": "ok", "version": "…", "db": true }
POST /T/v2/eventsone event or { "events": [ … ] } (≤ 100) → { ok, accepted, event_ids, scrubbed }
POST /T/v2/complaints{ app_id, app_version, instance_id, text, context, contact? } → { ok, complaint_id, public_ref }
DELETE /T/v2/instances/{id}?public_ref= → everything of that instance is gone
GET /T/v2/public/stats?app_id=c3&days=30 — aggregate counts only, what /C3/ shows
GET /T/v2/public/usefulness?app_id=codex-consult&days=90 — consultations and ratings per reviewer model, the usefulness table on /C3/
body ≤ 64 KiB · 60 requests/min per /24 · 10 000 events/day per instance · details ≤ 16 KiB ·
complaint text ≤ 8 KiB · unknown app_id → 403 (accepted today: c3,codex-consult,ecksnapshot,xelth-kb,xelray) · over a cap → 429 with Retry-After.
Events are kept 180 days, complaints and daily counts indefinitely.
curl -s https://xelth.com/T/v2/events -H 'content-type: application/json' -d '{
"app_id": "c3", "app_version": "0.1.0",
"instance_id": "3f1c2a9b8d7e6f5a4b3c2d1e0f9a8b7c3f1c2a9b8d7e6f5a4b3c2d1e0f9a8b7c",
"event_type": "consultation", "severity": "info", "title": "diff-review",
"details": { "engine": "codex", "provider": "openai", "purpose": "diff-review",
"outcome": "usable", "wall_seconds": 41.2, "tokens_in": 12000, "tokens_out": 900 },
"client_time": "2026-09-26T12:00:00Z", "os": "Windows 11", "runtime": "pwsh 7.5"
}'
Client reference (PowerShell, Node, Rust — 30 lines each, spool + background send): docs/t-hub.