Privacy & Security
Telemetry
How UsageNow’s optional, anonymous analytics are designed, and what they can never include.
On this page
UsageNow includes support for privacy-preserving, anonymous analytics. They’re opt-in and off by default.
Turning analytics on or off#
Go to Settings › Privacy and use Share anonymous usage analytics. It’s off by default in every build.
While it’s off, UsageNow does nothing related to analytics: no events, no bookkeeping, and no identifier. Turning it off deletes the installation identifier, so if you turn it on again later, you start over as a new, unlinked installation.
What an event contains#
Each event has only these fields:
| Field | Example | Purpose |
|---|---|---|
event | app_active | Which event happened |
installation_id | a random UUID | Counting installations without identifying anyone |
app_version, build | 0.8.0, 11 | Which versions are in use |
macos_version | 15.6.1 | Which macOS versions to support |
architecture | arm64 | Apple silicon or Intel |
timestamp | ISO 8601 date and time | When the event happened |
Events contain no IP address or location. As with any network request, the request itself reaches the server from your IP address; the analytics design derives at most an approximate country from it.
The installation identifier is a random UUID generated on your Mac. It isn’t derived from hardware identifiers, serial numbers, network addresses, your Apple Account, your user name, or your computer’s name. It’s created only when analytics actually send something, and it’s kept in your keychain so it survives app updates.
Events#
| Event | When |
|---|---|
first_launch | Once, the first time analytics are active on this installation |
app_active | At most once per day, when UsageNow is used |
app_updated | Once after the app version changes |
codex_detected | Once, if Codex is installed — a yes, nothing more |
claude_detected | Once, if Claude Code is installed — a yes, nothing more |
gemini_detected | Once, if Gemini CLI is installed — a yes, nothing more |
antigravity_detected | Once, if Antigravity is installed — a yes, nothing more |
kiro_detected | Once, if Kiro is installed — a yes, nothing more |
warp_detected | Once, if Warp is installed — a yes, nothing more |
opencode_detected | Once, if OpenCode is installed — a yes, nothing more |
qoder_detected | Once, if Qoder is installed — a yes, nothing more |
qwen_detected | Once, if Qwen Code is installed — a yes, nothing more |
cline_detected | Once, if Cline is installed — a yes, nothing more |
grok_detected | Once, if Grok Build is installed — a yes, nothing more |
windsurf_detected | Once, if Windsurf is installed — a yes, nothing more |
The five new explicit connections do not add account, token, session, or usage fields to telemetry. The seven-field payload is unchanged.
Where events go#
From 0.4.0, release builds send events — only while Share anonymous usage analytics is on — to telemetry.usagenow.com, a receiver run by UsageNow. It accepts exactly the fields listed above and refuses any event carrying anything else, so provider data couldn't be stored even if a future version sent it by mistake.
The receiver records the two-letter country Cloudflare resolves for the connection. It never records the IP address, request headers, or user agent, and events are deleted after 180 days.
Earlier releases carry no endpoint and send nothing, whatever the setting says.
What analytics never include#
- quotas, usage percentages, or reset times
- token or request counts
- model names or plans
- prompts, conversations, or session contents
- files, file paths, or source code
- project names
- provider accounts or credentials
The analytics code has no access to provider data at all: it can only send the events above.
Development builds#
Development builds keep analytics disabled by default, the same as every other build. Developers can point a debug build at their own endpoint to test analytics locally.