Privacy
Privacy, in plain words.
The app works on your Mac. This website doesn’t track you. Nothing is collected for marketing.
The app
What Tattle learns about your Mac’s connections stays on your Mac. Your rules, mode and firewall settings, the connection history (30 days by default) and the DNS log (7 days by default) are files in your user Library (Application Support › Tattle). You can change how long history is kept, clear the DNS log from the DNS section, and delete everything by removing that folder. There is no account, no cloud copy and no analytics.
The app goes online only for these:
- Updates: the app fetches its update feed and new versions from this website. Like any web request, that shows the host your IP address. It sends no profile of your system with the check.
- Blocklists, only if you subscribe to one: the app downloads each list from the address it is published at. That host sees your IP address; nothing about you or your Mac is sent.
- Encrypted DNS, only if you turn it on: your Mac’s lookups go to the resolver you chose, which sees the names looked up, as any DNS server does. That is the point of choosing one.
- The AI assistant, only if you pick a provider: requests go to that provider and carry only connection details (app names and signing identifiers, host names, addresses, ports, protocols, directions, verdicts, byte counts, times and rule summaries), with your home folder, local network devices and your Mac’s name hidden by default. For a provider off your Mac you see exactly what will be sent first, unless you turn that off for it. API keys stay in your Mac’s keychain, and AI settings are never in an export.
- Licensing is the only thing the app talks to us about. See below for exactly what that involves.
Nothing about where you are. The Map places addresses with a table bundled with the app; nothing is looked up online. If you set up a network profile for a Wi-Fi network you name, Tattle asks macOS for Location Services permission, because that is the only way macOS tells an app a Wi-Fi network’s name. It asks then and only then, reads the network’s name while such a profile needs it, and never reads your location. Names you choose are kept with your firewall settings (and in an export of them), never sent anywhere.
The system extension
Tattle does part of its work in a system extension, which macOS runs separately from the app and only after you approve it in System Settings.
- What it sees: for each new connection, the app that made it (by its code signature), the address, port and host name where known, the protocol and direction, and how much data went each way; and, with the DNS proxy on, the names looked up. It never sees what is inside a connection.
- What it stores: your current rules, the blocklists you subscribed to and the apps it has seen, in its own folder on your Mac, and a short backlog of connections waiting for the app to collect.
- What never leaves the Mac: all of it. The extension passes what it sees to the Tattle app on the same Mac and sends nothing anywhere else. Its only connections of its own are made by the DNS proxy, if you turn it on: to the resolver you chose and, when needed, to your network’s DNS servers.
This website
No cookies, no analytics, no trackers, no advertising, no mailing list. The fonts are served from this site, not from a font service. If you pick a theme (light or dark, and a palette or your own colours), the choice is kept in your browser’s local storage on your device, so the next page you open uses it. It is never sent to us or anyone else, and clearing this site’s data in your browser removes it. The moving pill at the top of the page and the replicas of the app’s main window and Developer Console on the home page run in your browser on invented examples; they read nothing from your Mac, send nothing and store nothing. The screenshots are pictures of the app’s own screens, drawn by the app from the same kind of invented examples. Pages load no third-party scripts, with one exception: the account page loads Cloudflare Turnstile, a human check that protects license lookups and key recovery from automated abuse.
The promo film on the home page and the press page is streamed by Mux, our video host, and only after you press play: until then the page shows a picture served from this site and nothing is requested from Mux. The player is part of this site, not loaded from Mux, and runs with Mux’s viewer analytics and cookies switched off. Once you press play, your browser fetches the video from Mux, which, like any web host, sees your IP address and browser. The player keeps one setting (whether the sound is muted) in your browser’s local storage; it never leaves your browser.
Turnstile normally runs invisibly, with nothing to click; it shows a visible check only when it can’t confirm automatically. It’s provided by Cloudflare under the Turnstile Privacy Addendum, Cloudflare’s Privacy Policy and its Terms of Use.
The site and the license service run on Cloudflare. Like any web host, Cloudflare handles your IP address to deliver pages and to protect the service from attacks. We don’t store IP addresses or browser details. To limit abuse, each request counts against a short-lived counter keyed by a one-way hash of your IP address; those counters live at Cloudflare for about a minute and are never stored. Our server logs record errors only, never request details.
Licenses
A license is a key. There’s no account, no name and no password. Here is everything the license service keeps:
| What | What’s stored |
|---|---|
| Your license | A one-way SHA-256 hash of the key (never the key itself), the plan, when it was issued, how long it includes updates, and whether it has been revoked. |
| Each activated Mac | An anonymous device ID, the Mac’s model name (for example “MacBook Pro”), when it was activated, and when it last checked in (to the day). The device ID is a one-way hash your Mac computes from its hardware ID; the hardware ID itself never leaves your Mac. |
| Trials | The same anonymous device ID and the date it was first seen, so reinstalling doesn’t restart a trial. |
| Recovery email (optional) | Only a keyed hash (HMAC-SHA256) of the address, so the service can recognise it when you type it again. The address itself is never stored. |
Never stored: your name, email address, IP address, browser or user agent, the Mac’s computer name, user name or serial number, your location, or anything you do in the app.
When you ask for key recovery, the address you type is used for that one message and then discarded. The message is sent through Resend, our email provider, as plain text with no tracking.
Payments
When buying opens, payment happens on a checkout page hosted by Stripe. Stripe collects and keeps what a payment needs (your name, email address, billing address and card) under its own privacy policy; none of it is stored by the license service. The license service keeps only Stripe’s reference numbers for the purchase (the checkout session and payment ids) next to your license, so a purchase can be traced if you need help.
Your new key is shown on the page you return to after paying, a few times within an hour, and is then kept only as a hash. If you press Email me this key there, the license service asks Stripe for the email address you gave at checkout, sends the key to it once through Resend as plain text, and doesn’t store the address.
Your choices
- Unregister any Mac, and add, change or remove your recovery email, on the account page.
- Deactivating a Mac from the app removes its record from the license service.
- In the app: keep history for less time or turn it off, clear the DNS log, leave DNS and the AI assistant off (both are off until you turn them on), export or import your settings, and remove the network extension.
Contact
Tattle is made by Tech on Tires, LLC. For questions about this page, requests to delete a license record, or help with a lost key, use the contact page at on.tires.