Telemetry

Opt-in, transparent, anonymous admin panel usage data.


Overview

Echelon Analytics can optionally send anonymous usage data from the admin panel only to the Echelon project. This helps the project understand which admin features are used and prioritize development. Telemetry is opt-in — it is never enabled without your explicit consent.

The short version


What telemetry collects

When enabled, the admin panel loads the standard Echelon tracking script pointed at ea.islets.app with data-site="ea". This tracks:

This is the same privacy-preserving tracking that Echelon provides to your own sites — daily-rotating HMAC visitor IDs, no cookies by default, no fingerprinting.

What telemetry does NOT collect


How to control telemetry

First-run prompt

On first admin access (fresh database), a banner asks you to opt in or decline. Your choice is stored in the database and remembered across restarts.

Settings toggle

Go to Settings in the admin panel. The "Telemetry" section has a toggle to enable or disable telemetry at any time.

Environment variable (killswitch)

Set ECHELON_TELEMETRY to override the database setting:

ValueEffect
trueForce telemetry on (Settings toggle shows "locked")
falseForce telemetry off — hard killswitch (Settings toggle shows "locked")
(unset)Respect the per-instance database setting

Example:

ECHELON_TELEMETRY=false deno task start

Status indicator

The admin nav bar always shows the current telemetry state between the theme selector and the logout link:

IndicatorMeaning
🟢📞Telemetry is active — admin usage data is being sent
🔴📞Telemetry is inactive — nothing is sent
(hidden)Undecided — the opt-in banner is shown instead

Clicking the indicator opens this page.


View the telemetry data

The telemetry data is sent to ea.islets.app, which is a public Echelon Analytics instance running with ECHELON_PUBLIC_MODE=true. You can visit the admin dashboard without logging in and see exactly what data is collected across all participating Echelon instances.

How anonymization works

All telemetry data is anonymized before storage using ECHELON_ANONYMIZE_SITES. The receiving instance never stores identifiable data about tracked instances. Specifically:

FieldAnonymization
Visitor IDHMAC-SHA256 with daily-rotating key → consistent per-day hash (not reversible)
Session IDMapped to a Norwegian fisherman name (e.g. "Torstein Sjømann", "Olav Sildekong")
Country codeMapped to a fictional exoplanet name (e.g. "Kepler-442b", "Proxima-b")
ReferrerReplaced with a fictional NSA intranet URL (e.g. https://nsa-intranet.gov/ops/PRISM-a3f2)
UTM paramsMapped to operation codenames (e.g. "operation-mockingbird")
ExperimentsHashed to experiment-<hash> / variant-<hash>
Event dataStripped to {} (may contain identifying info)
PathKept as-is (admin panel paths like /admin/visitors are not sensitive)

All mappings are deterministic within a day (same input → same output), so analytics aggregation works correctly. The mappings rotate daily and are not reversible.

MCP server

The MCP server at ea.islets.app also serves the already-anonymized data. AI agents querying the telemetry database via MCP tools will only ever see anonymized records.


Origin exemption

If your instance uses ECHELON_ALLOWED_ORIGINS to restrict tracking to specific domains, the telemetry site ID (ea) is automatically exempted from origin checks. This ensures telemetry works regardless of your origin restrictions, while still respecting your opt-in/out choice.


Data Collection Policy

This is the complete, authoritative policy for Echelon Analytics telemetry data collection. No data is collected beyond what is described here.

What is collected

  1. Admin page paths — which admin pages you visit (e.g. /admin, /admin/visitors). No visitor-facing page paths from your tracked sites are ever sent.
  2. Viewport size and device type — browser window dimensions and desktop/mobile classification.
  3. Country code — derived server-side from your IP address by the receiving instance. Your IP is never stored.
  4. Behavioral events — standard Echelon events (scroll depth, session timing, clicks) from admin pages only.

What is NOT collected, under any circumstances

How data is transmitted

When telemetry is enabled, the admin panel includes the standard Echelon tracking script (ea.js) pointed at ea.islets.app with data-site="ea". This is the exact same tracking script your own sites use — no special telemetry-only code paths exist. Pageviews go to /b.gif (pixel beacon) and behavioral events go to POST /e (sendBeacon), both protected by the same proof-of-work challenge system.

How data is stored

The receiving instance at ea.islets.app runs with ECHELON_ANONYMIZE_SITES=ea, which anonymizes all telemetry records before they are written to the database. The original values never touch disk. See the anonymization details above.

Data retention

Raw telemetry records are retained for 90 days (the default ECHELON_RETENTION_DAYS). Daily rollups aggregate the data and raw records are purged after the retention window. All stored data is anonymized.

Verify it yourself

Every claim on this page is verifiable:

Found a problem?

If you believe telemetry collects more than what is described here, or if you find any issue with the anonymization, please open a GitHub issue. Telemetry trust is non-negotiable — any valid concern will be addressed immediately.

📞 "Transparency is the best policy! That's why the nav bar always shows whether telemetry is on or off — no hidden tracking, ever." -🦭


Installation Features API Reference Bot Defense Configuration Architecture Portable Data MCP Server Why ea.js?