flutterwatch is a small independent project. It keeps the least it can get away with: enough to tie engine downloads to an account and to know which apps ship the engine — and nothing at all about the people who use those apps.
Signing in uses GitHub OAuth, requesting only the user:email scope — that grants your identity and email address and nothing else. It gives no access to your repositories, private or public. From it we keep:
A token is stored only as a SHA-256 hash. The plaintext is shown once — to the CLI when you sign in, or in the dashboard when you create a key — and is never written to the database. Alongside the hash we keep a short non-secret prefix so you can tell your keys apart in a list, and the time a key was last used. A lost token cannot be recovered, only revoked and replaced.
On your own machine the token lives in ~/.flutter-watchos/credentials.json with file mode 600.
flutter-watchos logout deletes it.
Each engine-artifact request is logged with the engine version and file requested, the time, the account it belonged to, and whether it succeeded or was refused. That log is what ties gated downloads to accounts, and it tells us which engine versions are actually in use so old ones can be retired without stranding anyone.
When you build an app for release while signed in, the command-line tool registers that build with your account. It sends four things, once, from your machine, at build time: the app's bundle id, its version, the engine version, and the build mode. It prints a line when it does. That is what lists the app in your console, and it is how the project knows which apps ship the engine.
No source code, file names, dependency lists, or anything about your machine is sent, and debug, profile and simulator builds are never registered. It is on by default and
flutter-watchos build-registry --disable turns it off — an app you would rather not name yet is reason enough.
The full list of what is and is not sent.
We write to the address on your account for three reasons: a one-time welcome, an answer to a message you sent us, and the occasional announcement — a release, or something you need to know. Every announcement has a one-click unsubscribe, and your console has the same switch. Answers to your own messages are not a subscription and are always sent. We record that a message was sent and whether it was delivered or bounced; we do not track opens or clicks.
The site is pre-rendered static HTML and CSS. The one piece of JavaScript on it is Google Analytics, which sets cookies and reports page views to Google so we can see roughly how many people find the project. Blocking it costs you nothing — the entire site works without it, and the parts that matter are hosted on GitHub and pub.dev anyway.
Nothing is sold, and nothing is shared for advertising.
Ask through the contact form on your dashboard and the account, its profile fields, its tokens, and its download history will be deleted. Revoking a single key without closing the account can be done from the dashboard at any time.
flutter-watchos is in closed beta and the service is still moving. If what is collected changes, this page changes with it — and anything genuinely new will be called out in the release notes rather than quietly appearing here.
Last updated 19 July 2026.