Privacy Policy

Your commands never leave your Mac.

Easy Complete's autocomplete engine runs entirely on-device: parsing your command line, generating suggestions, and rendering the overlay all happen locally, with no account and no cloud calls. Separately from that, the app collects a small set of anonymous usage statistics so we know how many people use it and whether completions are useful. This page lists exactly what is sent, what is never sent, and how to turn it off.

What we collect

Every event carries the app version, macOS version, your login shell name (e.g. zsh), the terminal app name when detectable, and a random device ID — a UUID generated on first launch that is not derived from your hardware, username, or anything identifying, and resets if you reinstall.

EventWhenExtra data
app_installed / app_updatedFirst launch after a fresh install or an upgradePrevious version (on update)
app_openedEach time the desktop app startsWhether it was a login-item launch or a manual open
daily_heartbeatAt most once every 24 hours while the app is runningDaily totals of how many times completions were shown and accepted — numbers only
integration_installedWhen a shell/terminal integration is installed via the CLIWhich integration (dotfiles, ssh, input-method)
app_uninstalledWhen the uninstall script runs

Completion usage is aggregated locally into plain counters and reported once per day as totals. A heartbeat event looks like this — this is the complete payload, not an excerpt:

{
  "event": "daily_heartbeat",
  "distinct_id": "fa7ebf5b-....-....",   // random UUID, no identity
  "timestamp": "2026-07-08T06:53:08Z",
  "properties": {
    "app_name": "Easy Complete",
    "app_version": "2.0.41",
    "os_version": "macOS 26.5.1",
    "shell": "zsh",
    "terminal": "ghostty",
    "count_autocomplete_shown": 142,     // daily totals only
    "count_autocomplete_accepted": 37
  }
}

What we never collect

Where the data goes

Events are sent over HTTPS to our own analytics proxy and stored in PostHog. PostHog derives a coarse location (country/city) from the request IP at ingestion; the IP address itself is not stored on events. Data is used solely to understand aggregate usage of Easy Complete and is never sold or shared.

Turning it off

Telemetry is on by default and can be disabled at any time with a single command — the setting is respected by every event, including install and uninstall reporting:

ec telemetry disable   # turn off
ec telemetry status    # check current state

Questions

The telemetry implementation is open source — you can audit exactly what is sent in the fig_telemetry crate. For anything else, open an issue on GitHub.

Last updated: July 2026 · Applies to Easy Complete v2.0.41 and later