Privacy Policy
Last updated: 30 October 2026
Offsite is an agentic development environment: a host program you install on a machine you own, your Mac or a Linux box, and Mac and iPhone apps that mirror it. Offsite runs no account system of its own and keeps no copy of your work. This policy explains what data the apps and the host handle, and who, if anyone, it is shared with. The security page lists the same facts byte by byte, with the commands to verify them.
RapidRocket GmbH in Zürich, Switzerland, is responsible for the data described here (contact below). This policy follows the Swiss Federal Act on Data Protection and, for people in the EU and the EEA, the General Data Protection Regulation (GDPR).
Data that stays on your machines
Your sessions, transcripts, files, prompts and terminal output live on your host, in a folder under your own user account with owner-only permissions, and travel only between your own devices over SSH. The connection details you enter (hostnames, usernames, ports) stay in the apps, and passwords you enter are stored in the Keychain of your Mac or iPhone. The key a device uses to identify itself to your host lives in the iPhone’s Keychain; on a Mac it is a file in Offsite’s folder with owner-only permissions, which programs running under your user can read. SSH keys you point the Mac app at stay where they are. Every device generates its own key the first time it is authorised on a host, and the private key never leaves the device. None of this is ever transmitted to us or to any third party other than the host you choose to connect to. The one exception is a prompt you dictate with speech to text set to OpenAI: it goes to your own OpenAI account, as described below.
The relay (optional)
When your device and your host have no direct path, local network, Tailscale or your own VPN, Offsite can connect them through our relay, which runs on Cloudflare. The relay forwards the same SSH connection as encrypted bytes it cannot decrypt: it never holds the keys. It can see that a paired device and host connected, when, from which IP addresses, and for how long. To route and pair, it keeps per host the host’s public key, the public keys of the devices you authorised, hashes of the pairing codes, and the host’s user name, host name and label; it keeps no keys that could decrypt anything and no record of your traffic. Rate-limit counters are kept for one minute; Cloudflare’s operational request logs are kept for a few days and used for nothing else. To find faults it also keeps the last 120 connection events per host, such as a device connecting or a connection ending, with their time. It cannot see your code, prompts, output or credentials. We use that connection metadata only to run the relay. The relay is off per host whenever you say so, and the connection pill in the app always shows which path you are on. Turning it off stops new connections through it; the entries it keeps for your host stay until you ask us to delete them.
Push notifications (optional)
If you enable notifications, Offsite uses Firebase Cloud Messaging (a Google service) to deliver alerts about your sessions, for example when a coding agent finishes a turn or needs your input, which hands them to Apple’s push service. To do this, a device push token (an identifier tied to your app installation) and the installation identifier Firebase issues with it are processed. They are not linked to your identity and are not used for advertising or tracking. Its registration on our server is deleted as soon as the push service reports the token as invalid, which happens when you uninstall the app or revoke notifications, or on request.
A notification has to be readable text, so it is not encrypted end to end. It carries the name of the session and of the workspace it belongs to, the event type, a timestamp, and identifiers for your host, workspace and session. For example "api-refactor needs your input". Agent sessions can name themselves after the work they are doing; you can rename any session, which always overrides that. One addition: when an agent task you asked for finishes, the notification body is the agent’s own one-line summary of the result, cut at 180 characters for Ask an agent and at 512 characters, the limit of our notification function, for a worktree setup. A host that is running out of disk or memory also reports its own name and the free space. No terminal output, code, file contents or paths travel. Notifications are only sent to a device that is not currently connected in the foreground. While the app is open and attached, the same event arrives over your own encrypted connection.
Plan usage
The usage rings in the app show how much of your Claude, Codex or Grok plan is used. For that, your host asks Anthropic and xAI directly, signed in with the login the CLI already stored on your host, at most every thirty minutes and only while one of your devices is connected; Codex’s numbers come from the Codex CLI on your host. Nothing of this passes through us, and the host neither stores nor logs those tokens.
Update checks and downloads
The Mac app checks offsite.sh for a new version, and the host components are downloaded from get.offsite.sh. Those requests carry no identifier of yours: the app’s version and channel in the user agent, and what any web request carries, such as your IP address, which the hosting providers (Vercel and Cloudflare) see in their ordinary server logs. The iPhone app updates through the App Store.
This website
offsite.sh sets no cookies and runs no analytics or tracking. Vercel, which hosts it, sees your IP address and the pages you request in its ordinary server logs. The waitlist form sends your email address straight to Buttondown, as described below.
Feedback you send us
If you use the feedback form in the app, what you typed is transmitted to us, together with the category you picked, the platform, the app version and channel, your OS version, an optional screenshot, an optional diagnostics log (the app’s recent log tail, only if you switch it on) and an optional email address if you want an answer. It is stored on our Firebase project, with a hash of your IP address used only to limit abuse, and forwarded in full to our private team channel. Nothing is sent unless you press send.
Crash reports and analytics
None are collected. Offsite contains no crash reporter and no analytics SDK; an earlier version used Firebase Crashlytics and it was removed in July 2026. Diagnostic data reaches us only inside feedback you send, as described above.
Speech to text (optional)
Speech to text turns what you say into text on your Mac, and you choose how it listens. With Local, Apple’s speech model recognises your voice on the device, and neither the audio nor the text leaves it. With OpenAI, your device sends the recording straight to OpenAI’s API with the API key you added, under your own OpenAI account. We run no speech service, we never receive your key, your audio or your text, and none of it passes through our servers.
With OpenAI, a dictation sends the recording, in pieces of 20 to 30 seconds while you talk; the languages you set; the end of the text so far; and terms that help it spell names right: the words you added yourself and names from the workspace the text goes to, such as the session’s title, the branch, folder names and the agent’s summary. With polishing on, the transcribed text and the same terms go to a second OpenAI model that corrects misheard words. When you dictate into another app on your Mac, the polish also receives that app’s name, its window title and the text already in the field, unless you turn reading the field off; password fields are never read. OpenAI processes all of this under its own terms and its retention for API data.
On your device, a recording is kept until its text is back, so nothing you say gets lost, and then deleted; one that is never transcribed is deleted after seven days. Recordings are excluded from backups. A history of your last 50 texts from the past seven days stays on the device, and the API key is stored in the device’s Keychain. Settings › Speech to Text shows exactly what your last dictation sent. The microphone is used only while you dictate, and if you never use speech to text, no audio ever leaves your device.
Waitlist and newsletter (optional)
If you join the waitlist or sign up for new posts by email on offsite.sh or the blog, your email address is stored by Buttondown, the service that sends our email, together with the date you signed up and whether you joined the waitlist. Buttondown is based in the United States and checks new sign-ups for abuse, which uses technical data such as your IP address. You first get one email to confirm your address; nothing else is sent until you confirm. The waitlist gets one email when it is your turn, and nothing else unless you also subscribe to the newsletter.
Open and click tracking are turned off, so we do not see whether you read an email or which links you follow.
Every email has a link to unsubscribe. To have your address deleted entirely, email the address below.
What we do not do
- No accounts, no sign-up and no profile in the apps.
- No advertising and no third-party analytics or tracking SDKs.
- We never sell or rent your data.
Third-party services
Each of them is bound by its own privacy policy and processes your data only to provide the service named here, with protection at least equal to what this policy describes. Where they process data on our behalf, they do so under data processing terms. These services are run by companies in the United States. Transfers there rely on the EU-U.S. and Swiss-U.S. Data Privacy Framework where the company is certified, and otherwise on the European Commission’s standard contractual clauses.
- Cloudflare (the optional relay): cloudflare.com/privacypolicy
- Google Firebase (Cloud Messaging, plus storage for feedback you send): firebase.google.com/support/privacy
- Apple (the push service that delivers notifications, and the App Store for the iPhone app): apple.com/legal/privacy
- Vercel (this website, update checks): vercel.com/legal/privacy-policy
- Discord (only feedback you send, forwarded to our private team channel): discord.com/privacy
- Buttondown (only if you join the waitlist or the newsletter): buttondown.com/legal/privacy
- OpenAI (only if you set speech to text to OpenAI, under your own account): openai.com/policies/privacy-policy
Legal bases
Under the GDPR we rely on:
- providing the service you asked for (Art. 6(1)(b)): the relay and push notifications;
- our legitimate interest in running these services securely and preventing abuse (Art. 6(1)(f)): server logs, rate limits, hashed IP addresses and the relay’s connection events;
- our legitimate interest in answering you and improving Offsite (Art. 6(1)(f)): feedback and email you send us;
- your consent (Art. 6(1)(a)): the waitlist and the newsletter. You can withdraw it at any time with the link in every email.
Speech to text with OpenAI and the plan usage requests run under your own accounts with OpenAI, Anthropic and xAI, between your machines and those companies. We are not part of that processing.
Retention and your choices
Credentials and settings live on your devices and are removed when you delete the apps; the host keeps everything in one folder, ~/.offsite, which you delete to remove it, and the support page lists the order. You can turn off notifications at any time in iOS Settings or per device in Offsite, which stops push-token processing, and the relay per host. Feedback you sent us and the relay’s entries for your host stay until you ask us to delete them. To have anything we hold deleted, email the address below.
Your rights
You can ask us which data we hold about you, have it corrected, deleted or restricted, receive it in a portable format, and object to processing based on our legitimate interest. Where we rely on your consent, you can withdraw it at any time; what happened before stays lawful. Email the address below and we answer within one month. You can also complain to a data protection authority: in Switzerland the Federal Data Protection and Information Commissioner (FDPIC), in the EU the authority of the country where you live or work.
You do not have to give us any data. Without notifications we process no push token, and without an email address we cannot answer your feedback. We make no automated decisions about you and build no profiles.
Children
Offsite is a developer tool and is not directed to children under 13.
Changes
If this policy changes, the updated version will be posted on this page with a new date.
Contact
Offsite is made by RapidRocket GmbH, Rämistrasse 2, 8001 Zürich, Switzerland (UID CHE-114.322.597), which is responsible for the data this policy describes. Questions about privacy? Email hello@offsite.sh. Our email runs on Google Workspace, so messages you send us are stored there.