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 four events, recorded against an anonymous installation identifier generated on your device and never joined to your account. The events are app launched, sign-in attempted, hosted call failed, and app crashed, plus a crash report whose error message is removed before sending. 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. Section 4 says where this runs and where it does not.
- 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 your machine beyond one read-only usage request, authorized by the Claude Code sign-in already stored in your Keychain. The credential is read in place, never stored, logged, or copied, and the request refuses to follow a redirect at all, so the sign-in cannot be replayed anywhere. Also your own traffic, not Exawatt's. On by default in an installed build whose distribution declares a stable signing identity; a build without that declaration says so in place of the switch and makes the request never.
- 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 four 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, 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.