Privacy
Version 1.2. Last updated 18 August 2026.
Your code, your prompts and your agent transcripts never leave your Mac. CrewTower reads a great deal locally and sends almost none of it anywhere.
Three features make network requests, and this page lists all three: the optional usage meter, which talks to Anthropic using your own Claude Code login; license activation, which talks to us and to our payment provider; and update checks.
In the app there is no analytics, no crash reporting, no account, no advertising and no tracking of any kind. This website counts visits and records how its pages are used without naming anybody, and uses Google Analytics cookies only if you allow them; the section further down called this website says exactly what that means.
Who this is
CrewTower is made and sold by Said Altan, an individual based in Ontario, Canada. For anything on this page, including a request to see or delete your data, write to [email protected].
Payment is not handled by us. Polar is the merchant of record for every purchase; see Buying the app below.
What the app reads on your Mac
CrewTower's job is to watch coding agents, so it reads a lot of what those agents do. All of it stays on the machine. None of it is transmitted anywhere by us, and none of it is written anywhere except inside your own home folder.
| What | Where it comes from |
|---|---|
| Hook events: session ids, the working directory, your prompts, tool names and the full tool input, such as the command a shell tool wants to run | The agent sends these to a Unix socket in ~/Library/Application Support/CrewTower, readable only by your user account |
| Agent transcripts: assistant replies, tool activity, context usage, session titles | Read-only tailing of the JSONL files your agent already writes on disk |
| Your agents' hook configuration, plus a backup of each file before it is changed | ~/.claude/settings.json, ~/.codex/hooks.json, ~/.cursor/hooks.json, ~/.gemini/settings.json, ~/.qwen/settings.json |
| Session state so the panel survives a restart, including working directories and the last line of activity | Written to sessions.json in the same support folder |
| A list of running processes: process ids, terminal device, and parts of the command line | /bin/ps, matched locally against a fixed list of agent names, so an agent with no hooks still shows up |
| Your Claude plan name, shown in the usage strip | ~/.claude.json |
| Your license key and license token | Two plain files in the support folder |
CrewTower does not read your source files. It sees a file's contents only in the narrow case where an agent is asking you to approve writing them, because that is the text you are being asked to approve.
What leaves your Mac
1. The usage meter, to Anthropic. Optional.
If the usage strip is on, which it is by default, CrewTower shows how much of your Claude subscription window you have left. To do that it reads Claude Code's own login token from ~/.claude/.credentials.json, or from your login keychain by running /usr/bin/security find-generic-password -s "Claude Code-credentials", and calls api.anthropic.com/api/oauth/usage with it about every five minutes. If that token has expired it is refreshed once against console.anthropic.com/v1/oauth/token.
Said plainly: the app uses your existing Claude Code credentials, on your behalf, against the same Anthropic servers the Claude Code CLI already talks to. Those credentials never reach us and are never written anywhere new. What Anthropic does with the request is covered by Anthropic's privacy policy.
You can switch the usage strip off in Settings, and then none of this happens. If you pick Codex as your usage source instead, CrewTower asks a codex app-server process on your own machine over local JSON-RPC and makes no request of its own.
2. License activation and renewal, to us.
When you activate, and at most once a day afterwards, the app sends three things to license.crewtower.app:
- Your license key.
- A device hash. This is your Mac's hardware identifier (
IOPlatformUUID) combined with a fixed secret and put through SHA-256. The identifier itself never leaves your Mac and the hash cannot be turned back into it. - A label for the activation, which is your Mac's name as it appears in Sharing settings. This is often a person's name, for example "Said's MacBook Pro". It exists so that a support email about a lost machine can be matched to the right activation.
That request is handled by a small Cloudflare Worker of ours, which stores nothing at all: it forwards the activation to Polar, signs a short-lived token and returns it. The token is signed proof that this license belongs to this Mac, it contains the device hash, it lives on your Mac, and it lets the app confirm your license offline for up to three weeks if we are unreachable.
Our Worker does not log request bodies. Cloudflare necessarily processes the request itself, including your IP address, as our hosting provider.
This one is not optional. It is what a paid license is.
3. Update checks, to our download host.
CrewTower checks about once a day whether a newer version exists, using Sparkle, the standard update framework for Mac apps. It fetches dl.crewtower.app/appcast.xml, which is a static file on Cloudflare R2.
Sparkle's optional "anonymous system profiling" is switched off, so no report about your machine is sent. What the request unavoidably reveals is what any web request reveals: your IP address, and a user agent string naming the app version and your system's Darwin version.
Buying the app
Purchases go through Polar, which acts as merchant of record. In their own words, you buy the product from Polar, not from us. They collect your email address, billing address, tax details and payment card information at checkout, and they handle sales tax and VAT. See Polar's privacy policy and their buyer terms. Polar uses Stripe to process cards.
We never see your card details. As the seller behind Polar we can see the order record in their dashboard, which includes your email address, your country and the license key issued to you, and after activation the device hash and Mac label described above.
Who else is involved
- Cloudflare hosts this website, the license Worker and the update files.
- Polar, and Stripe behind it, handle payment and issue license keys.
- Anthropic, only if the usage strip is on, and only with credentials you already gave to Claude Code.
- PostHog counts visits to this website, and only to this website. It receives nothing from the app.
- Google, through Google Analytics, also counts visits to this website, and only to this website. It sets cookies only if you allow them in the banner, and it receives nothing from the app.
That is the entire list. Nothing you do inside the app is sent to anyone for advertising, analytics or profiling, because nothing you do inside the app is sent to anyone at all beyond what is above.
How long anything is kept
Our license Worker keeps nothing; it holds a request only for as long as it takes to answer it. Your activation record, which is the key, the device hash and the Mac label, lives with Polar for as long as the license does. Delete your license files or delete the app and the copies on your Mac are gone.
If you want the activation record removed, write to us and we will remove it. Removing it means the license stops working, so we will normally suggest doing it as part of a refund.
Your rights
Under Canada's Personal Information Protection and Electronic Documents Act you can ask what personal information we hold about you, ask for it to be corrected, and challenge how we handle it. If you are in the European Union or the United Kingdom you additionally have the rights the GDPR gives you, including access, correction, deletion, restriction, portability and objection.
Either way the address is the same: [email protected]. There is one person reading it, so please say what you want in plain words and it will get done.
The legal basis for the license data is that we cannot deliver a paid license without it. The legal basis for the usage meter is your choice to leave it on.
Children
CrewTower is a developer tool sold to adults. It is not directed at children and we do not knowingly collect anything from them.
This website
The site sets no cookies unless you allow them. Cloudflare, as the host, processes requests to the site, and the one thing loaded from anyone else's domain is Google's analytics script, described below.
It does count visits. We need to know whether anybody is arriving and whether the people who arrive get as far as downloading, and there is no way to know that without counting. The counting is done twice, by PostHog and by Google Analytics.
Google Analytics works like this. When you first arrive, a banner asks whether to allow its cookies. Until you answer, and if you decline, it sets no cookies and receives only anonymous pings that are not tied to you across pages or visits. If you allow, it sets its usual _ga cookies so your visits can be counted as one visitor, and Google receives the pages you view, which browser and country the request came from, and which site you arrived from. Your choice is kept in your browser and you can change it by clearing this site's data, which brings the banner back.
PostHog is set up like this:
- No cookies. The one identifier involved is a random string kept in your browser's local storage so that four pages read in a row are counted as one visit rather than four. It is not a name, it is never sent to anyone else, and clearing site data removes it.
- Your browser never contacts PostHog. The counting requests go to
crewtower.app/ingestand this site passes them on. - Your visit to this website is recorded and can be played back. That means the pages you looked at, how far down each one you scrolled, and what you clicked, redrawn afterwards from the page itself. It is not a video and it is not your screen: nothing outside this site's own tab is in it, and there is no camera, no microphone and no keystroke log. There is also nothing on this site to fill in, and any field that ever appears here is blanked out before the recording leaves your browser.
- No profiles and no accounts. What is stored is which pages were viewed, how they were used, which browser and country the request came from, which site you arrived from, and whether the Download or Buy button was clicked. Your IP address is passed on so that the country can be worked out from it. None of that is a name, and none of it is joined to anything.
- If your browser sends Do Not Track, nothing is counted at all.
This is the website only. The app on your Mac still reports nothing, which is the whole of the rest of this page.
Changes
This page is dated and versioned. When it changes, the date at the top changes with it, and the previous wording stays in the site's public git history. If a change materially widens what we collect, we will say so in the app's release notes rather than quietly editing this page.