Security
Epochly Security: Telemetry Data Flow
What Epochly sends and never sends, the env-var controls, and how to verify the wire payload locally.
This page summarizes Epochly's outbound network traffic. It is the public companion to the Security Policy and the Threat Model.
Controls
Telemetry behavior is controlled by environment variables:
EPOCHLY_OFFLINE_MODE=1— go fully offline; license and telemetry endpoints are suppressed.EPOCHLY_DISABLE_TELEMETRY=1— opt out of telemetry-class endpoints only; licensing endpoints remain reachable.EPOCHLY_TELEMETRY=0— explicit telemetry opt-out, equivalent toEPOCHLY_DISABLE_TELEMETRY=1.
One opt-in alters a single payload:
EPOCHLY_SEND_RAW_FINGERPRINT=1— restores the raw hardware-fingerprint attributes in the device-registration payload. Off by default.
What we send
By default, Epochly sends:
- Scrubbed anonymous telemetry: session start, routing decisions, and JIT/worker/GPU/allocator/workload resource events.
- Device-registration metadata for licensing: a node identifier, a SHA-256
machine_fingerprint, a package version string, and server-validated proof tokens.
The Lens heartbeat (a host hash, version, pid, and uptime) is sent only when you opt in with EPOCHLY_TELEMETRY_OPT_IN=1.
What we never send
Across all endpoints, the following is never transmitted — even with every opt-in flag enabled:
- Function inputs or outputs of optimized callables.
- User datasets, dataframes, tensors, or array contents.
- Source trees, project directories, or arbitrary local files.
- Environment secrets (API keys, tokens) outside the explicit Lens heartbeat flow.
- Plaintext usernames, home-directory paths, IP addresses, or MAC addresses; payloads pass through a scrubber before transmission.
How to verify locally
You can audit the wire payload yourself:
# Telemetry off, licensing on (default behavior for paid users)export EPOCHLY_DISABLE_TELEMETRY=1python -c "import epochly; print(epochly.__version__)"