A note on which website: this policy covers the Atlas site wherever it is served. It is reachable today at atlas.innovo-studio.com, and helloatlas.dk is being brought online as the canonical address. They are two custom domains on one and the same site, serving the same pages and the same API routes from the same Cloudflare project and the same database — so nothing in this policy changes depending on which address you arrived through. The older host is being kept attached deliberately, not by oversight: it is the sign-in address compiled into every Atlas build already installed, and removing it would lock those installs out of their accounts. Where this document names a URL it uses helloatlas.dk; the same path works on the other host.
The data controller for Atlas is Innovo (enkeltmandsvirksomhed, CVR 42744808), Rustkammervej 2, 4180 Sorø, Denmark. You can reach us about privacy — including to exercise any of the rights in section 9 — at contact@helloatlas.dk. We have not appointed a Data Protection Officer: our processing does not meet the thresholds in GDPR Art. 37 (we are not a public authority, and we carry out neither large-scale systematic monitoring nor large-scale processing of special-category data).
Atlas is a desktop assistant designed so that your personal data stays on your Mac. Your memories, conversations, profile, mail metadata and portfolio data are stored in a local SQLite database on your own machine. They are not uploaded to our servers, and we cannot read them. Semantic search and embeddings (the maths that lets Atlas recall your memories) run entirely on your device.
Personal data you have given Atlas leaves your machine only in the flows described in section 4, and the only personal data we hold on our own servers is your account email, a salted password hash, your plan and subscription fields, a few timestamps, the minimal waitlist and login-throttle records in 4.1–4.2, and — only if you connect a bank account, which is not yet possible in the shipped app — the two small routing records described in 4.6. Two things we would rather state here than bury.
First: two of those flows run automatically, without you asking for them, and one of them sends your own content. The dashboard's weather, market and news cards call out on a timer while the app is open (section 4.5) — those carry no content, only the IP address inherent in making a request. The proactive digest (section 4.7) is a different order of thing: starting roughly two minutes after Atlas launches and then checking every half hour for as long as it keeps running, the app assembles a short summary of your recent memories, upcoming events, open tasks and last few chat messages and sends it to Anthropic so Claude can suggest something useful. A cooldown holds that to at most one send every 12 hours, so this is twice a day rather than constant — but it is not triggered by anything you do, it does not require the Atlas window to be open or in front of you, and there is no button in the shipped app that turns it off. We would rather you learn that here, in the second paragraph, than infer it from an insight that appears unprompted.
Second: every request the app makes — including the software-update check in section 6, which carries no personal data of its own — necessarily discloses your IP address to whoever receives it.
This data lives in a local SQLite database, never leaves your device wholesale, and is deleted when you delete it in the app or remove the app's data folder.
On voice, one true thing is worth stating carefully rather than generously: the wake word really is detected on your Mac, by a model running in the app (in this beta the phrase is "Hey Jarvis" — Atlas ships openWakeWord's stock model, and a custom "Hey Atlas" one does not exist yet), and while Atlas is sitting idle waiting for it, your microphone frames are fed to that detector and to nothing else — they are not sent anywhere. That is a property of that path, and we are not going to let it stand as a claim about voice in general, because it is not one. Atlas has three ways of picking up audio and only that one waits for a wake word: clicking the microphone starts transmitting straight away, and the separate teaching screen streams continuously. Section 4.4 sets out all three and what each transmits.
When you create an account we store on Cloudflare's infrastructure (D1 database): your email address, a salted PBKDF2-SHA256 password hash (never your password), plan/subscription status, and timestamps (created, updated, last login). Sessions use signed JWT tokens. Login throttling stores a SHA-256 hash of email + IP with a failure counter — no raw IP addresses, though the hash is unsalted and therefore pseudonymous rather than anonymous, and it does not expire on its own (section 8).
If you join the waitlist we store your email, optionally a name and a referral source, and a SHA-256 hash of your IP address (abuse prevention — the raw IP is not stored).
When you send Atlas a message, the message content and the composed prompt — which can include relevant stored memories selected on-device — are sent to Anthropic (Claude) to generate the response. This is inherent to how the assistant works; if you do not want particular information sent for inference, do not share it in chat or delete the memory locally.
Sending a message is not the only thing that reaches Anthropic. The automatic proactive digest in section 4.7 sends a summary of your recent memories, events, tasks and messages to the same place on its own schedule, with no message from you at all. If you are reading this section to work out what Claude sees, read 4.7 as well — this one alone will give you the wrong answer.
Web search happens inside that request. Atlas enables Anthropic's server-side web-search tool on ordinary chat requests — tools are on by default, and the only build-in exception is the "teaching" flow that just records something you told it — and the instructions we send tell Claude to use it whenever a question touches anything current or real-time. When Claude does, it writes search queries — derived from what you asked, so they can contain your own words — and runs them against the open web from Anthropic's servers, reads the results there, and answers with citations. Atlas never sees the individual queries and cannot approve them one by one; it receives the finished answer and the source list. There is no user-facing setting to turn this off in the current build.
Transcription and speech synthesis are done by ElevenLabs. Which audio reaches them, and when, depends on how the microphone was started, and the three ways differ enough that a single sentence about voice would be a false one. An earlier version of this policy said pre-wake audio "is never transmitted" as though that covered everything; it covers one of these three.
/atlas-teach). This screen connects to ElevenLabs as soon as it opens and streams your microphone continuously for as long as it is open. It does show a wake word, but the matching happens on the transcript coming back from ElevenLabs, not on your Mac — so the audio has already been sent and transcribed before anything decides whether you said "Atlas". Everything spoken near the microphone while that screen is open is transmitted, including what you did not intend for Atlas. This screen is not linked from anywhere in the app's navigation, so you will not land on it by accident, but it is part of the build and we are not going to leave it undisclosed.Where the audio travels also differs. On the first two paths it goes to a small Atlas component running on your own machine, which holds the ElevenLabs key and forwards the audio upstream. On the teaching screen the app connects to ElevenLabs directly from the window, using a short-lived token that the local component mints for it — the key itself still never reaches the web layer, but the audio does not pass through your machine's local component on the way. In every case the audio ends up at ElevenLabs and is processed under their terms. Reply text sent for speech synthesis goes to ElevenLabs too.
The plain summary: Atlas listens for a wake word, but you should not assume Atlas is only listening for a wake word. If the microphone matters to you, the reliable control is macOS's own — the microphone indicator in the menu bar, and the permission toggle in System Settings → Privacy & Security → Microphone.
The dashboard's weather, market and news cards call third-party APIs on their own. Each card fetches once when it appears, and then on a timer: weather every 30 minutes, headlines every 15, market quotes every 5. The timer only fires while the Atlas window is actually in front of you — if the window is hidden or in the background the refresh is skipped — so the practical rule is "while you have Atlas open and focused", not around the clock. This is not something you connect and cannot currently be switched off in the app.
About the API keys, since an earlier version of this policy got it backwards. Each call needs a key, and the app looks for it in the atlas-core Keychain entry on your Mac. Nothing is shipped in that entry and we do not provision one — there is no key of ours embedded in the app and no key handed out with it. The entry is empty on a fresh install, and a key only ever gets there because someone puts it there: the app exposes an internal command for writing one, but no screen in the shipped build calls it, so in practice it happens outside Atlas, with a key that belongs to whoever added it. The consequence for a normal install is the honest one: with no key present these three services are never contacted at all — the cards fall back to built-in placeholder figures, and no request leaves your Mac. Everything below describes what happens once a key is present.
api.openweathermap.org) — the app asks for a fixed, built-in city name. It does not send your location and does not use your Mac's location services.finnhub.io) — a fixed, built-in list of ticker symbols. Your own holdings are not involved; those go through SnapTrade (4.6).newsapi.org) — a headline category, currently always the built-in default.Because the requests go straight from your Mac, each of these providers sees your IP address and the timing of your requests. What they do not see is your location, your holdings or what you chose to read, because none of that is sent. Each provider processes what it receives under its own privacy policy. We have not yet built an on/off control for these calls, and we would rather say that than describe a switch that is not there — while there is none, quitting Atlas is what stops them (moving the window to the background stops the repeat calls, but not the first one when a card loads). See section 5 for why we no longer claim consent as the legal basis for this.
These run only if you connect them, exchange data directly between your Mac and the service, and can be disconnected in the app:
atlas-music. To disconnect, open Settings → Music and use Disconnect Spotify (one click to arm it, one to confirm). That stops Atlas's playback engine, deletes the refresh token from your Keychain and clears the cached access token, so Atlas loses all access to your Spotify account. It is worth being precise about one thing it does not do: it does not revoke Atlas inside Spotify. Atlas will still be listed among the apps you have authorised in your Spotify account settings until you remove it there, on Spotify's own website.atlas-snaptrade item, which holds the identifier and secret SnapTrade issued for you) and empties the local portfolio database — every row in its accounts, holdings and activities tables is deleted. To be precise about something we previously overstated: it empties that database, it does not delete the file. The file stays on disk with empty tables. If you want the file itself gone, delete the app's data folder (section 9).Google / Gmail is not available in this beta. Mailbox connect, sync and disconnect are all disabled in the shipped build — they return "Mail sync is temporarily unavailable" while we move mail to a new service. No mail is fetched and no Google account is contacted from the app. One leftover is worth disclosing: this website still hosts the callback address the old flow used, /oauth/google/callback — on both of the hosts named at the top of this policy, since they are one site. Nothing reaches it today, but it is not a device-side handler: it forwards the Google authorisation code to a Supabase edge function. So if mail is re-enabled in that shape, Supabase is a recipient (section 6) and the token exchange does not happen on your device.
This is the flow we most want you to actually read, because it is the one that would surprise you. Atlas periodically takes stock of your recent context on its own and asks Claude whether anything is worth telling you — a reminder before a meeting, a follow-up on something you left hanging. That is a genuinely useful feature, and it is also the only automatic flow that sends your content rather than just an IP address, so it deserves stating in full.
When it runs. A background thread inside Atlas starts about two minutes after the app launches and then wakes every 30 minutes for as long as Atlas is running. It is not tied to the window: it does not need Atlas to be in front of you, visible, or in use. A cooldown limits how often it actually results in a request to Claude — at most one every 12 hours — so most of those wake-ups do nothing but check the clock and go back to sleep. If Atlas has no AI key configured, or you have never signed in, or there is nothing recent to summarise, the run ends without sending anything.
What is sent, when it does run. Atlas builds a short plain-text summary from your local database and sends it to Anthropic (Claude) — the same recipient as ordinary chat, section 4.3. Specifically:
That is the whole payload. Atlas's replies are not included, no attachments or files are included, no web search is run as part of it, and the result is written back to your own device as at most three suggestions — nothing is reported to us. But the summary itself is real personal data about your calendar, your obligations and what you have been talking about, sent without your asking, on a schedule.
Whether you can stop it, honestly. Inside the code there is a master switch that gates this and Atlas's other learning behaviour. It is switched on when Atlas is first installed, and the only interface that can flip it sits on an internal diagnostics screen that nothing in the app links to — no button, no menu item, no settings tab reaches it. So we will not describe it to you as a control: for a normal install there is no way to turn the digest off from inside Atlas. What genuinely stops it is quitting Atlas, or removing the AI key the app runs on, at which point the digest ends before it sends anything (and ordinary chat stops working too). We would rather write that sentence than invent a settings toggle. A real, reachable off switch is the fix, and it is on our list; see section 5 for the legal basis and your right to object in the meantime.
The app and website contain no analytics, telemetry, advertising or crash-reporting SDKs, and Atlas reports no usage data back to us. That sentence is about us, and it survives everything above: the proactive digest in 4.7 goes from your Mac to Anthropic and its output is written back to your Mac — none of it is sent to, copied to, or visible to Innovo, and we learn nothing from the fact that it ran. We do not sell or share personal data for advertising. What the sentence does not cover, and should not be read as covering: checking for a new version contacts GitHub (section 6), which — like any request over the internet — discloses your IP address to them.
On objecting to the digest specifically (Art. 21): write to us and we will stop processing your data for it. It is worth being straight about what we can and cannot do on receiving such an objection. We hold none of this data and the digest runs entirely between your Mac and Anthropic, so we cannot reach into your installation and switch it off; what we can do is confirm the objection, keep it on record, and prioritise the control. Until a reachable off switch ships, the things that actually stop the digest today are the ones in 4.7 — quitting Atlas, or removing the AI key it runs on. We would rather hand you two blunt remedies that work than a polite process that changes nothing.
A correction we owe you about 4.5: an earlier version of this policy described weather, market and news as integrations you connect, with consent as the basis. That was wrong — they start on their own and we never asked you. Consent you were never asked for is not a legal basis, so we have re-stated it as legitimate interests (keeping a small set of dashboard cards working, using minimised data), and we are not going to pretend there is a consent screen or a disconnect button to withdraw from. You can object to this processing under Art. 21 by writing to us; realistically the only remedy we can offer today is to tell you to quit the app or block those three domains, which is why building a real on/off control is the fix rather than better wording.
| Recipient | Purpose | Location |
|---|---|---|
| Cloudflare, Inc. | Website hosting, account database (D1), authentication | US / global edge |
| Anthropic, PBC | AI inference for chat and reasoning, and the server-side web searches Claude runs on your behalf (4.3). Also the automatic proactive digest (4.7) — a periodic summary of your recent memories, upcoming events, open tasks and last few messages, sent without any action from you and with no in-app way to stop it. | US |
| ElevenLabs, Inc. | Voice transcription and speech synthesis | US |
| OpenWeather, Finnhub, NewsAPI (api.openweathermap.org, finnhub.io, newsapi.org) | Automatic weather, market and headline look-ups made from your Mac while the app is open (4.5). They receive your IP address; no location, holdings or reading history is sent. | Contacted directly from your Mac over the public internet. We identify these services by the domains Atlas calls; the operating entity and hosting country behind each one are set out in that provider's own privacy policy. We have not independently verified them, so we do not restate them here as if we had — see section 7. |
| GitHub, Inc. (Microsoft) | Hosts the signed release feed and the update downloads. The app requests the feed when you open Settings → Software Update, and downloads from GitHub if you choose to install. GitHub receives your IP address and the request headers your Mac sends. | US / global |
| Mastercard (Aiia A/S, the Danish open-banking business Mastercard acquired, operating Mastercard Open Banking in the EU) | Bank account and transaction data you consent to share (4.6). Your Mac fetches that data directly; what reaches our server is only the routing record and the event notices described in 4.6 — never balances, transactions or account numbers. Dormant: the app is registered in Mastercard's sandbox and no bank can be connected from the shipped app, so nothing is exchanged today. | Aiia A/S is established in Denmark (EU/EEA). Mastercard Incorporated is a US company, and we have not verified where within the group this product's data is processed. We will confirm that and state it here before bank connection is enabled — we are not going to guess at it in the meantime. |
| Supabase, Inc. | Receives the Google authorisation code from this site's leftover /oauth/google/callback route (4.6). Dormant: mailbox syncing is disabled in the shipped app, so nothing is sent there today. | US company. The hosting region of the dormant project is not confirmed, and we will not guess at it: nothing is sent there today, and we will confirm and state the region here before mail is re-enabled. |
Integrations you connect yourself (Spotify, SnapTrade — section 4.6) exchange data directly between your Mac and that service under its own terms; it does not pass through us. Mastercard Open Banking is the exception, and we would rather flag it than let the sentence above quietly cover it. The bank data itself behaves like the others — your Mac to Mastercard, directly — but the routing record and the event notices in 4.6 do sit on our servers, which makes us a controller for those two records specifically. They are the only part of any connected integration that does.
Most of the recipients in section 6 are US companies, so the limited data described in section 4 is transferred to the United States. Every recipient listed in section 6 appears below, including the ones where our answer is "we have not verified this" — a recipient we have checked and a recipient we have not are different situations, and leaving the second kind out of the list would quietly make them look like the first.
For the three processors that actually receive your content or account data, the mechanism those transfers rest on is the European Commission's Standard Contractual Clauses — Module Two (controller to processor) and/or Module Three (processor to processor) of Commission Implementing Decision (EU) 2021/914 — incorporated into each provider's data processing agreement:
The point worth taking from that list: the Standard Contractual Clauses are the common mechanism across all three, and they do not depend on anyone's certification status. Cloudflare's Data Privacy Framework certification sits on top as an additional basis; if it were ever to lapse, the SCCs in Cloudflare's own DPA still cover the transfer. Equally, if Anthropic or ElevenLabs were to certify under the Framework later, nothing here becomes wrong — the SCCs would simply stop being the only basis. Certifications are granted and withdrawn over time, so rather than asking you to trust a status we wrote down once, check any US company yourself on the official list at dataprivacyframework.gov.
The remaining recipients in section 6 are ones where we have not verified a transfer mechanism, and saying so is the whole point of listing them:
/oauth/google/callback route, 4.6) — nothing is sent there today, so there is no live transfer to place under a mechanism. We have not verified Supabase's transfer position or the hosting region of the dormant project, and we are not going to guess at either. If mail is re-enabled, we will confirm the region and the mechanism and state both here before anything is sent.On 25 July 2026 we read the then-current published agreements of Anthropic, ElevenLabs and Cloudflare and confirmed the three bullet points above against them. That is a statement about what those documents said on that date, and it does not age into a promise about today: agreements are revised and Data Privacy Framework certifications are granted, renewed and withdrawn without anyone telling us. Treat the date as the age of our reading, not as a guarantee, and if you are relying on this for a decision, check the current versions yourself — and check any US company's certification status directly on the official list at dataprivacyframework.gov, which is authoritative in a way this page cannot be.
Under the GDPR you have the right of access, rectification, erasure, restriction, data portability, and objection, plus the right to lodge a complaint with your supervisory authority.
Because Atlas is local-first, most of your data is already in your hands. In the app you can read and delete it: Settings → Memory & Privacy lists every memory Atlas has stored, lets you forget them one at a time, and has a Delete all my data action (guarded by typing DELETE) that wipes every table in Atlas's main local database carrying your user id. That is not a short list: memories and their vector and search indexes, learned knowledge, conversation transcripts and messages, session context, profile, life events, notes, tasks, calendar events, watchlist and weather settings, mail accounts and messages, agents, schedules, runs and their steps, insights, research topics and citations, and Atlas's learned personality.
What that action does not reach. "Delete all my data" works by deleting every row in Atlas's main database that carries your user id — which is why the list above is so long, and also exactly why some things fall outside it. An earlier version of this policy named two exceptions and called that the lot. It was not. Here is the full set, and where we are uncertain we say so rather than rounding down:
atlas-snaptrade (the SnapTrade developer credentials, plus the identifier and secret SnapTrade issued for you), atlas-music (your Spotify refresh token) and atlas-core (the AI and data-service API keys the app runs on). Disconnecting Spotify removes its token and disconnecting SnapTrade removes your SnapTrade identity (4.6); anything else in these three items you remove yourself, in Keychain Access.Deleting ~/Library/Application Support/com.magnuspilegaard.atlas removes everything local, including both database files. It does not remove the three Keychain items — those live outside that folder and have to be deleted separately.
There is no export feature. Atlas cannot currently produce a machine-readable copy of your memories or conversations from inside the app; the only file the app will download for you is your settings, which is not your content. So for portability (Art. 20) and access (Art. 15), email contact@helloatlas.dk: we will send you the server-side data we hold about you (today that is only the account fields in 4.1; if you have a bank connected it also includes the routing record and any pending event notices in 4.6) and walk you through reading the local database, which is an ordinary SQLite file in the app's data folder and can be opened with any SQLite tool. Building a proper in-app export is on our list — until it exists we are not going to claim it.
To erase the server side, delete your account. In the desktop app the option is Delete account under Settings → Memory & Privacy, guarded by typing CLOSE ACCOUNT; it calls the same authenticated POST /api/account/delete endpoint you can call yourself. Deleting permanently removes your account row (email, password hash and salt, plan and subscription fields, timestamps), any waitlist entry for the same address, the Mastercard routing record and any undelivered event notices (4.6), and the login-throttle row for that address on the connection you delete from — other throttle rows for the same address cannot be found from your account (they are hashes of the email with a different IP) and stay until that combination is used again, or indefinitely (section 8).
By default, deleting your account does not touch the data on your Mac — that stays until you delete it in the app or remove the app's data folder. The Delete account screen offers a separate checkbox, unticked by default, to also erase Atlas's local database in the same step. If you tick it, the local erase runs only after the server has confirmed the account is gone — never on a failed or unconfirmed deletion — and covers exactly the same tables as Delete all my data above — and therefore leaves behind exactly the same things, the full list of which is the three bullet points above: your portfolio database, the app-wide settings and operational records, and all three Keychain items (atlas-snaptrade, atlas-music, atlas-core). To remove those, delete ~/Library/Application Support/com.magnuspilegaard.atlas and those Keychain items yourself. If the account is deleted but the local erase then fails, the app tells you so explicitly and gives you that folder path rather than letting you believe the Mac was wiped.
One consequence to weigh before you decide: deleting your account signs you out for good, and Settings → Memory & Privacy is the only control inside Atlas that can erase local data. Afterwards, deleting the folder is the only route left. The app tells you this, and shows you the folder path, at the moment it signs you out.
You can also email contact@helloatlas.dk to exercise any right, including objection under Art. 21 (see the note in section 5).
Passwords are salted and stretched with PBKDF2-SHA256 and never stored or logged in plaintext. Sessions use signed tokens. Server-side data is minimised by design — the local-first architecture means a breach of our infrastructure cannot expose your memories, conversations or connected-service data, because we never hold them.
Atlas is not directed at children under 16, and we do not knowingly process their data.
We will update this policy as Atlas evolves (it is in beta) and note the date above. Material changes will be communicated in the app or by email.