1. What Exawatt is
Exawatt is a macOS app for Apple silicon that runs coding agents on your own machine, plus this website. Agents launch as local processes under your own accounts and reach their providers directly, never through Exawatt. Your code, your prompts, and your agents' output stay on your machine except for the bounded excerpts named in Section 4, each of which has a switch in Settings under Privacy.
An account is optional. Signed out, the app runs agents and Demo Mode with no Exawatt account and nothing synced. This policy covers the desktop app and this website, and describes the build you can download today.
2. Information we collect
- Account information: When you create an account, our database and authentication provider Supabase stores the email address and profile name that come with the method you chose: Google, GitHub, or email and password. A password is stored by Supabase as a cryptographic hash.
- Projects: While you are signed in, opening a Project syncs its name, its full folder path on your machine, its git remote, its color, its position in your list, and when you last opened it. The files inside it are never uploaded.
- Keyboard shortcuts: Shortcut overrides you set are stored against your account so they follow you to another machine.
- Feedback you send: When you submit feedback, we store your message, its kind and sentiment, the app version, build SHA, and platform, and the context of the moment: the surface you were on, the window size, the Project name, and an opaque session identifier. A screenshot of the app window is included only if you attach one. An anonymized diagnostics bundle is included only if you switch it on for that report, and Review prints the exact contents before anything is sent.
- Product analytics: A fixed set of events, recorded against an anonymous identifier generated on your device. Every property is a fixed choice, a true or false, a bounded number, or a version string. None of them has a free-text field. On this website we record the path of each page you view, never its query string, and the site that sent you here; and that you downloaded the app, and for which platform and chip. In the app we record that the app launched, with its version, platform and whether you are signed in; a sign-in attempt, its method and whether it worked; that a hosted feature failed, which one and how; that part of the app crashed, plus a crash report with its error message removed; that you opened a Project and how you opened it, never its name or folder; that an Agent started: which engine, its permission mode, and whether it was the first on this install; and that you sent one instruction to several Agents, and how many received it. Section 4 says where this runs and where it does not.
- Your activity, when signed in: If you sign in to the app, we also record, under your account, that the app launched, with its version, platform and whether you are signed in; that you opened a Project and how you opened it, never its name or folder; that an Agent started: which engine, its permission mode, and whether it was the first on this install; that you sent one instruction to several Agents, and how many received it; and that an Agent finished, and which engine it ran, so we can see how Exawatt works for you. These carry the same fixed properties, never a prompt, output, file name or path, and they are not joined to the anonymous identifier. The sign-in page says so before you sign in. An account stays optional, and the Product analytics switch turns this off too.
- Website to app: After a download, the download page offers Open Exawatt. If you click it, the app records once that this browser's anonymous identifier and the app's belong to the same person, so we can see that a download became a running app. Nothing joins them without that click, and your account is never part of it.
- Public operator profile: Off until you turn it on. Section 6 covers what it publishes and how to take it down.
- Download invites: If you reach the download page with an invite code, we record that the code was redeemed.
- Server request logs: Our hosting provider Vercel and our database provider Supabase keep ordinary request logs: IP address, user agent, requested path, and timestamp. Exawatt does not measure how long you spend on a page and does not build a behavioral profile from these logs.
3. What we never store
Exawatt's servers hold no prompts, agent responses, terminal output, source code, file contents, filenames, diffs, paths inside a Project, credentials, or environment values. Agent work happens on your machine and its record stays there, in the logs your agents already write and in your own git history. Two features in Section 4 send bounded excerpts of text to be processed and discarded; nothing about them is written to an Exawatt database.
4. What leaves your machine, and the switch for each
Everything below is reachable in the app at Settings, under Privacy, using these exact names.
- Session context labels. Sends the Project name and short excerpts of recent turns from the Session being labeled, including instructions you typed, with recognizable secrets replaced first. It goes to Exawatt and on to Anthropic, which returns the label. Exawatt keeps a request count for rate limiting, never the text. On by default when you are signed in.
- Conversation summaries. Sends short excerpts of the conversation being summarized, keyed by an opaque identifier that carries no path and no Project name, with secrets stripped first. Exawatt, then Anthropic. Exawatt keeps a request count, never the text. On by default when you are signed in.
- Agent tile backgrounds. Sends no text you wrote. A one-way hash of the goal and its Project selects a prompt from a fixed word list held in Exawatt's source, together with a numeric seed. fal.ai generates the image from that prompt and is asked not to retain the request or the result. The image is cached in your account's storage. On by default when you are signed in.
- Since-you-left recaps. Sends up to 6,000 characters of the Session's recent terminal output, exactly as it appeared on screen, not redacted. This one never touches Exawatt: it runs the
claude command already signed in on your machine, so the request is your own API traffic under your own Claude Code account. On by default. - Claude plan usage. Sends nothing from Exawatt. Your own Claude Code app asks your Claude account for its session and weekly limits, under the sign-in Claude Code already keeps, which Exawatt never reads, stores, or copies. Also your own traffic, not Exawatt's. On by default; off starts no Claude Code process for it.
- Codex plan usage. Sends nothing from Exawatt. Your own Codex app asks your ChatGPT account for its usage limits, credits, and free resets, under the sign-in Codex already keeps, which Exawatt never reads. Also your own traffic, not Exawatt's. On by default; off starts no Codex process for it.
- Google plan usage. Sends nothing from Exawatt. Your own Antigravity app asks your Google account for its weekly limits, under the sign-in Antigravity already keeps, which Exawatt never reads; your Antigravity conversations are never read either. Also your own traffic, not Exawatt's. On by default; off starts no Antigravity process for it.
- Product analytics. Analytics run only where the build carries an analytics endpoint. Official Exawatt builds, this website and the signed macOS app, carry one: the events above are relayed through an Exawatt endpoint to PostHog, our analytics provider, so your browser and your Mac never contact a PostHog domain directly. A build made from the public repository carries none, starts no analytics client, and sends nothing at all. Turning the switch off stops collection and transmission rather than only withholding data from our dashboards, takes full effect the next time the app or page loads, and is remembered on your device.
- App updates. Signed builds check a public update feed on Exawatt's storage shortly after launch and download new builds in the background. The request sends what any HTTP request implies: IP address and user agent. There is no setting that turns this off today.
5. How we use your information
- Run the app and this website, and keep your account working
- Name and summarize your Sessions and conversations, using the bounded excerpts described in Section 4
- Publish your operator profile, when and only when you have turned that on
- Answer the feedback you send us
- See that the app launched and that something failed, so failures do not stay invisible until someone reports them
- Detect, prevent, and address technical issues or abuse
- Comply with legal obligations
6. Your public operator profile
This is the one control that makes anything public, and the one that is off until you turn it on. Switching Public operator profile on in Settings under Privacy, or Publishing on the leaderboard panel, is the act that publishes it. Both are the same setting. What goes up is your GitHub-seeded handle, name, and avatar, plus aggregate daily totals and Run records: agent hours, fleet size, durations, and token counts. Never prompts, responses, code, Project names, paths, branches, filenames, diffs, or local Session identifiers.
Pausing and taking it down are deliberately separate actions:
- Turning the switch off stops future updates. Your profile stays visible on the public leaderboard, profile, and Run pages until you remove it.
- Remove public profile, the button on the leaderboard publishing panel, takes your profile and its Runs out of every public page immediately and pauses publishing at the same time. Your local history is not changed. Turning the switch back on republishes.
7. Data storage and security
Account data, Projects, preferences, feedback, and published profiles are stored with Supabase, a managed PostgreSQL and object storage platform, encrypted in transit and at rest. This website is hosted on Vercel. We use appropriate technical and organizational measures to protect your information against unauthorized access, alteration, disclosure, or destruction. No method of transmission over the internet is completely secure, and we cannot guarantee absolute security.
8. Data sharing and disclosure
We do not sell, trade, or rent your personal information. We share it only in these circumstances:
- Infrastructure providers: Supabase for database, authentication, and storage, and Vercel for hosting this website, under their contractual confidentiality obligations.
- Anthropic: For Session context labels and conversation summaries, the bounded excerpts described in Section 4 are sent to return the requested label or summary. Exawatt does not send a whole transcript and does not save the excerpts: they exist for the moment of processing and are discarded once the answer comes back. What Exawatt retains is a request count for rate limiting. Anthropic's own retention for API traffic applies at their end.
- fal.ai: For Agent tile backgrounds, fal.ai receives a prompt assembled entirely from a fixed word list in our source, chosen by a one-way hash, plus a numeric seed. The goal name, the Project name, and any other text you wrote are not sent, and we ask fal.ai not to retain the request or the generated image.
- PostHog: Our analytics provider receives the fixed event set described in Section 2, including the activity of signed-in accounts, relayed through an Exawatt endpoint. Those events live in Exawatt's PostHog project under that project's retention settings.
- Anyone, for a published profile: See Section 6.
- Legal requirements: When required by applicable law, court order, or government regulation.
- Business transfers: In connection with a merger, acquisition, or sale of assets, with notice provided to you.
9. Your rights
Depending on your jurisdiction, you may have the right to:
- Access the personal information we hold about you
- Request correction of inaccurate data
- Request deletion of your account and associated data
- Object to or restrict certain processing activities
- Data portability, meaning your data in a machine-readable format
Write to privacy@exawatt.ai to exercise any of them. We handle these by hand today; there is no self-service export or delete-my- account button yet. Taking down a published profile does not need us: see Section 6.
10. Cookies and local storage
Signing in sets a Supabase session cookie, and the download page sets a cookie to remember an invite code. Those are the cookies we use, and both are necessary for the feature they belong to. Analytics use browser local storage rather than a cookie.
We use no advertising or ad-targeting trackers, no automatic click or DOM capture, no session replay, no heatmaps, and no surveys. The analytics library loads no remote script.
11. Children's privacy
Exawatt is not directed to individuals under the age of 16. We do not knowingly collect personal information from children. If you believe we have collected information from a minor, contact us and we will take steps to delete it.
12. Changes to this policy
We may update this policy. We will post the new version here with an updated date and, where appropriate, tell you by email. Your continued use of Exawatt after a change is posted is your acceptance of the updated policy.