mesh-llm-analytics
Anonymous, opt-out product analytics for mesh-llm. This is the only crate in the workspace that reports anything to a vendor, which is the point: keeping it in one place makes the full reported surface reviewable in one sitting.
Not to be confused with the [telemetry] config section, which exports OTLP
metrics to an endpoint the operator chooses and never leaves their network.
Guarantees
- Closed vocabulary.
EventandPropertiesadmit no free-formString. Text enters only throughLabel::sanitize, whose grammar rejects paths, prose, and anything over-long. A prompt cannot reach the wire through this API even by mistake, and an unrecognized value becomesredacted. - No key, no reporting. The project key is compiled in by the release
pipeline via
MESH_LLM_POSTHOG_KEY. Source and development builds have no compiled-in key and are inert unless that same variable is set at run time, which is the documented self-hosting path. - Never load-bearing. Capture is non-blocking and delivery is best effort. No failure here changes a command's behavior, output, or exit code, and shutdown gives up after a short budget rather than holding a command open.
- Anonymous by construction. The identifier is a random UUID derived from nothing about the machine, and deliberately not the published mesh identity.
- No location. Every event sets
$geoip_disableand a null$ip.
Opt-out precedence
MESH_LLM_ANALYTICS wins over everything (including the CI check, so the path
can still be tested deliberately), then DO_NOT_TRACK, then
[analytics] enabled in the config, then CI detection. A missing project key
disables reporting regardless of all of them.
Layout
| File | Responsibility |
|---|---|
consent.rs |
Resolving whether this machine reports, and why |
event.rs |
The closed event and property vocabulary, and the label grammar |
install_id.rs |
The anonymous install identifier |
version_state.rs |
The last version this install ran, so upgrades are reportable |
properties.rs |
Base properties attached to every event |
client.rs |
PostHog batch payload construction and delivery |
notice.rs |
The first-run disclosure |
Verifying what a build sends
MESH_LLM_POSTHOG_HOST=http://127.0.0.1:8000 \
MESH_LLM_POSTHOG_KEY=phc_test \
MESH_LLM_ANALYTICS=1 \
User-facing documentation lives in website/src/docs/pages/analytics.md and
must stay in step with the Event enum.