Privacy and Telemetry
Your vaults live on your machine. Separately, fai sends anonymous usage analytics to Fathym, so we can see which features get used and where fai breaks. This page covers what that data is and how to switch it off.
The default
Usage analytics are on until you turn them off. fai tells you once, the first time it runs. It doesn't ask.
What's stored on your machine
The first run creates ~/.fai/config/telemetry.json with three fields:
| Field | What it is |
|---|---|
DeviceId | A random UUID. It isn't derived from anything. |
Consent | Whether analytics are on (true or false) |
CreatedAt | When the file was created |
What's sent
Every event carries the same basic profile:
- The anonymous device ID
- fai version and build (
faiorfai-debug), OS, CPU architecture, Deno version - Total memory and CPU count
- How many times you've run fai, and a usage stage derived from that count
On top of that, fai sends events about what you use: which command ran, which coding agents and model providers were detected, the synthesis provider and model name, token counts, how long things took, whether they succeeded, and a few yes/no flags such as whether fai is running in CI.
Usage data doesn't include your code, your captured sessions, your prompts, or the contents of your vaults.
Where it goes
Events go to Fathym's Azure Application Insights. To send them somewhere else,
for example your own Application Insights resource, set
APPLICATIONINSIGHTS_CONNECTION_STRING.
Turn it off
Any one of these stops fai sending analytics:
| Route | macOS / Linux | Windows (PowerShell) |
|---|---|---|
| Command | fai telemetry off | fai telemetry off |
| Config file | Set "Consent": false in ~/.fai/config/telemetry.json | Same file, under your user folder |
DO_NOT_TRACK | export DO_NOT_TRACK=1 | $env:DO_NOT_TRACK = '1' |
FAI_TELEMETRY_DISABLED | export FAI_TELEMETRY_DISABLED=1 | $env:FAI_TELEMETRY_DISABLED = '1' |
The environment variables must be set to exactly 1. Both forms last for the
current shell only; add the line to your shell profile to keep it.
CI is excluded automatically. If CI, GITHUB_ACTIONS, JENKINS_URL,
BUILDKITE, CIRCLECI, TRAVIS, or GITLAB_CI is set, fai sends nothing
unless you also set FAI_TELEMETRY_FORCE.
Turn analytics back on with fai telemetry on.
See what's sent
FAI_TELEMETRY_DEBUG=1 fai # macOS / Linux
$env:FAI_TELEMETRY_DEBUG = '1'; fai # Windows (PowerShell)
Prints every event to your terminal (on stdout) as it's recorded, so you can read exactly what fai reports. This mode prints events in addition to sending them. It doesn't stop them being sent.
Check your setting
fai telemetry status
Shows whether analytics are on and the first characters of your device ID.
It reflects your saved setting, DO_NOT_TRACK, and CI detection. It doesn't
yet check FAI_TELEMETRY_DISABLED, so it can report "enabled" while that
variable is switching analytics off.