On this page

Privacy notice

Waitlist sections: version wl-2026-10-10 (effective 10 October 2026). Website and app sections: updated 11 November 2026.

The app sends status checks and usage summaries by default. Usage reports use a pseudonymous machine ID and contain counts, minutes, model names and details of unexpected exits, not your prompts or transcripts. Website analytics cookies are optional; they load only after consent. Feedback sends the message you choose to submit.

App data and how to turn off usage reports · Website and cookie choices

Who we are

Orbtile ("we"), made in Europe. Contact: privacy@orbtile.com.

What we collect

  • Your email address.
  • Which waitlist you joined: other keypads, or a feature waitlist (and, for entries made before Orbtile for Windows shipped in 0.2.17, Windows).
  • The keypad devices and AI coding agents you optionally select, and the short "other device" text if you type one.
  • The time you gave consent and the version of this notice (wl-2026-10-10).
  • A one-way keyed hash of your IP address, used to block abuse. It is scheduled for removal 30 days after sign-up; cleanup runs when someone submits the form.

We do not collect your name through the waitlist. Announcement emails will not use tracking pixels or click tracking.

To (a) email you when Orbtile is available for the platform or device you chose, or when early access opens for the feature you chose, including an invitation to try it, and (b) count how many people chose each device, agent and feature to decide what we build next. Legal basis: your consent (GDPR Art. 6(1)(a)). The IP hash and the anti-bot check rely on our legitimate interest in keeping the form free of spam (Art. 6(1)(f)).

How the list works

You enter your email and submit the form. That is your sign-up; we do not send a confirmation email. We store your entry so we can write to you when the product, platform, device or feature you asked for is ready. We will write at most once per announcement, and every announcement email will have an unsubscribe link.

Bot protection

The form uses Cloudflare Turnstile, which processes technical signals from your browser to tell humans from bots. See Cloudflare's privacy policy.

Who processes it for us

  • Cloudflare, Inc.: hosting, the database (stored in the EU), and anti-bot checks.
  • Email delivery provider (when announcement emails are sent).
  • Google: optional website analytics, only after you allow analytics cookies.

The Orbtile operator can view waitlist email addresses in the private admin dashboard, which requires Cloudflare Access. A separate read-only statistics credential can view counts, but not email addresses. We never sell your data. We share data with the processors listed here only to provide these services.

How long we keep it

  • Waitlist entries: scheduled for deletion 730 days after sign-up, unless you unsubscribe sooner. After a launch announcement, earlier removal is handled manually by the operator.
  • IP hashes: scheduled for removal after 30 days. Rate-limit counters: scheduled for deletion after 2 days. These cleanups run when someone submits the form, so an idle form or failed cleanup can delay deletion.
  • Unsubscribing deletes your entry immediately.

Your rights

You can withdraw consent with the unsubscribe link in an email if we send one, or write to privacy@orbtile.com before then. This deletes your entry and does not affect earlier processing. You can also ask for access, correction, deletion, restriction or portability, or object, at the same address. We answer within one month. You can complain to the Comissão Nacional de Proteção de Dados (CNPD, www.cnpd.pt) or to your local authority.

Automated checks

We do not use your information to profile you. Automated anti-bot and rate-limit checks can reject a form submission or request to protect the service.

This website

Our server counts page views and installer downloads. These server counters use no cookies or browser tracking script. Eligible page loads add to UTC hour counters for the page, the country (from Cloudflare’s network), the referring site (a short list of well-known sites by name; any other site is counted only as other), and the browser and operating system family. A valid short campaign source tag in the URL is counted with page views and carried through site links to the installer download. Installer download counters keep only the UTC hour, the installer (Mac, Windows or Android), version, country, campaign source tag and operating system family. Source tags describe shared links, not individual visitors. Status fetches are counted separately by UTC hour and app version. From app 0.2.12, when usage reports are on, the app’s status fetch also carries the same pseudonymous machine ID as the usage report, so those fetches are additionally counted per re-keyed machine ID and version; with usage reports off it carries no identifier. When a visitor opens the first-open help on the download page, the page sends one cookieless beacon with no identifier, and the opened help is counted by UTC hour and country. When a visitor clicks the I want this! button on a feature waitlist page (these pages are no longer on the site) (or, before 0.2.17, the Windows interest button), the page sends the same cookieless beacon with no identifier, and the click is counted by UTC hour and country. Cookieless page beacons also count home and download calls to action, share and copy clicks, iPhone interest, Google Play early access link clicks, installation help and home-page scroll milestones. Event counters keep only UTC day and hour, event name, country, operating system family, campaign source category and count, including these fields for help, Windows interest and feature interest events. Each event is attempted once per page load, with no browser identifier or visitor history. If you arrive from one of our ads on Google or Reddit, we keep the ad's click identifier (gclid, gbraid, wbraid or rdt_cid) with the install-button click, without cookies or your browser details, for up to 90 days, and we send that identifier back to Google or Reddit only to count that the ad led to an install-button click. Event counters retain no raw User-Agent or Referer. Historical events have an unknown operating system and an untagged source. Bots, prefetches and requests beyond the counter budget can be omitted. Cloudflare processes request addresses and technical headers to deliver and protect the service. The counters do not link requests into a visitor history. We keep them for 13 months. Hourly cleanup removes counts once their UTC day is older than 395 days; failed or delayed runs can delay deletion. Browsers can also send automatic security-policy reports about blocked content on orbtile.com. From these reports we keep a daily count of the rule type, the type or website address of the blocked item (without its path), the page path and whether the rule blocked the item or only reported it. These counts never hold browser details or full web addresses, and we delete them after 30 days. To limit abuse of the reporting address, we also keep a salted hash of the sender’s IP address with a count for up to 2 days.

If you come from one of our ads and choose the Microsoft Store or Google Play button, our server keeps one record of that click: a random code, the ad click ID from the link (Google’s gclid, gbraid or wbraid, or Reddit’s rdt_cid) and its type, a short source tag, the country (from Cloudflare’s network), the platform and the store, and when the record was created, when it expires and when it was used. It holds no browser details, referring page, cookie, machine ID or email address, and visits we recognise as internal or automated create no click record. If that install later starts a trial, opens Orbtile Mobile for Android for the first time or buys a licence, we report that event with the click ID to the ad platform the click came from (Google Ads or Reddit), so we can see which ads work; a purchase report includes the amount, and a full refund or a dispute withdraws it. A click record is deleted 90 days after the click, at the next hourly cleanup. A reported event keeps its click ID for 90 days, also after we send it, so that we can withdraw it. To limit abuse, we keep a salted hash of your IP address with a count for 2 days.

Separately, if you choose Allow analytics, this website loads Google Analytics 4 to understand how visitors use it. Before you allow it, no Google Analytics script loads and no request is sent to Google Analytics. Analytics may collect pages visited, referring sites, approximate location, device and browser information. Depending on the Google Analytics settings, it may also collect interactions such as outbound link clicks and file downloads. After you allow analytics, Google Analytics also receives a download event when you click Download. Google processes this information for us. It uses cookies named _ga and _ga_* to distinguish browsers and sessions. We do not enable advertising consent: advertising storage, advertising user data and advertising personalisation remain denied. The legal basis for this optional analytics is your consent (GDPR Art. 6(1)(a)). See Google's privacy policy.

Your analytics choice is remembered in this browser's local storage. The Appearance control also saves your System, Light or Dark display preference here; it sends no account or tracking data. Use Cookie settings in any page footer to change it. Choosing No thanks withdraws permission, disables further Google Analytics collection on the current page and removes analytics cookies accessible to this website. Future page loads do not load Google Analytics unless you allow it again. Withdrawal does not affect earlier processing. Orbtile on your computer does not use Google Analytics.

Feedback

When you choose to send feedback, we receive the message and category, whether it came from the app or website, and an optional email address if you want a reply. App feedback also includes the app version and the same pseudonymous machine ID used by usage reports, re-keyed on our server for abuse limits. The machine ID is not stored with the feedback item. We store a random submission ID and a keyed fingerprint of the submitted fields to avoid saving duplicate retries.

In the app you can choose to include diagnostics: app build, macOS version, keypad connection status, enabled built-in agents, and four settings (automatic keypad takeover, key actions, background sessions and handover on sleep). Versions before 0.2.16 also include the keypad theme. You can review this before sending. Diagnostics contain no prompts, transcripts, paths, host names, or account names. Feedback messages contain what you type and are stored as submitted; please leave out secrets, personal information and private task text.

We use feedback to answer requests and improve Orbtile, based on our legitimate interest in maintaining and improving the product (GDPR Art. 6(1)(f)). The Orbtile operator can view messages, optional email addresses, diagnostics and triage notes in the private feedback dashboard behind Cloudflare Access. Feedback, optional email, diagnostics and internal triage notes are kept for 365 days and deleted on the next hourly cleanup run. Keyed IP and machine abuse counters are kept for two days and deleted on the next hourly cleanup run. Cloudflare hosts the database in the EU. Website feedback uses Turnstile. Delayed or failed cleanup runs can delay deletion.

If an app submission cannot be delivered, the app keeps a local queued draft and retries hourly until the server accepts it. Contact privacy@orbtile.com to request access or deletion; include your feedback reference if available.

Accounts and connected computers

Orbtile 0.2.7 to 0.2.10 required an account and approval of each Mac. From 0.2.11, an account is optional for the keypad and is used for encrypted settings sync and the phone pad. You can register at orbtile.com/account with an email address and password, or choose Google sign-in. We store your verified email address, display name, account role, notification preference and account creation time. Passwords are stored as salted Argon2id hashes. Google sign-in supplies a verified email, name and Google account identifier; we do not request access to your mail, files or contacts. A Google account with the same email as an existing verified password account must be linked after signing into that account.

The app opens your account page in a browser. You sign in there and explicitly approve the computer shown on the page; email verification and password reset do not sign the app in. We store keyed computer identifiers, this Mac's computer name as set in macOS (sent automatically by the app, shortened to 40 characters and shown on the approval page), app version and sign-in times to manage connected computers. Licences with your verified billing email belong to your account. You can revoke computer access and sign-ins from the account page. A Windows PC signs in the same way and uses the same account and sync services as a Mac. On Windows, the app's account credential is stored encrypted for your Windows user with Windows data protection (DPAPI).

Browser sign-ins expire after 30 days. In Orbtile 0.2.10 and earlier, app sign-ins on a Mac expire 30 days after sign-in; from 0.2.11 they renew while the computer is online and expire after 30 days without contact. Computer approval requests expire after 10 minutes; verification and reset links expire after 15 minutes. Expired credentials are removed in bounded cleanup batches when the account service receives requests. Profiles, connected computer records, licence ownership and administrative audit records remain until removed in response to an account request or retention review. Contact privacy@orbtile.com for access or deletion; payment and licence records may need to be retained separately.

Orbtile Mobile signs in to your Orbtile account with Google (in your browser) or a one-time email code. It cannot create an account. For each signed-in phone we store a server-assigned ID, the label you see (default: the phone model), platform, app version, its public key, sign-in method and times, and when it was last seen. Phone sign-ins expire after 90 days without use; you can remove a phone at any time on your account page or in Orbtile on your computer. Email codes are stored only as keyed hashes and expire after 10 minutes; they are sent through Cloudflare Email Sending. We email you when a phone signs in. Every signed-in computer stores its name and Orbtile version in your account; with Phone pad on it also stores the fingerprint of its local certificate, so your phones can recognize it. Pad images and touches go directly between your phone and computer on your local network and are never sent to our servers. Phones and computers keep a copy of the account list for up to 7 days offline; a removed phone stops working within 5 minutes when your computer is online. Phones never count toward a licence's computers.

Release news and product-update emails are enabled by default for new accounts. You can turn them off under Email preferences on your account page; existing accounts keep their saved choice. Only verified, active accounts with update emails enabled receive announcements. Each message includes an unsubscribe link, valid for 90 days. We use an email delivery provider for verification, reset and account announcements, without tracking pixels or click tracking. Cloudflare hosts account data and protects the private administration pages. Operators with verified administrative access can manage accounts, licences, connected computers and delivery records; a statistics read token cannot read these records. The account page loads no Google Analytics script, even if you allowed analytics elsewhere.

Settings sync keeps your synced settings with your Orbtile account, separately from your profile. Each computer encrypts them before upload with a key derived from your account's sync code. Our server stores that code encrypted with a key Orbtile holds, and gives it to the computers signed in to your account. Sync is therefore not end-to-end: Orbtile, with both its database and that server key, could decrypt your synced settings, and so could anyone who signs in to your account; access to the database alone could not. From 0.2.17 you no longer enter a sync code, and an existing sync group moves to your account by itself. Only look, keys and sessions, and menu bar and hand-over settings sync. Hooks and their token, remote hosts, keypad approvals, the adapter API and adapter permissions, system permissions, launch at login, licence state, device and usage IDs, phone pairing and anything about your code or projects never sync. Removing synced settings from every computer marks the shared settings as removed and deletes the sync code stored with your account at once. Orbtile Enterprise has no settings sync; use Export and Import. On a Mac, Orbtile stores the sync code and pending removal or revocation capabilities in owner-only files in its Application Support folder (readable only by your macOS user account, so also by other apps running as you); they are not synchronized through iCloud. Joining saves a local copy of previous settings for 30 days. Expired backups are deleted at startup and during hourly maintenance, including while sync is off; if Orbtile is closed, deletion occurs at its next startup. Encrypted server records expire after 395 days without a write and are purged during later service requests; quiet periods can delay deletion.

Account and administration requests run on our Atlas service. Cloudflare continues to host the public site and the existing EU databases, and forwards account and API requests without caching them. Google sign-in, email registration and app account connections use this account service.

Buying a licence

When you buy a licence, Stripe sells it to you as the merchant of record and handles your card and payment details; they never reach us. From the purchase we keep your email address, your country, which licence you bought (the 1.x licence, the Founder licence or Orbtile Enterprise), the date, the amount and currency, and Stripe’s references for the checkout, the payment and you as a customer. We also keep the licence’s status (issued, refunded or revoked), a hash of your licence key and the key itself, so we can show it to you again or send it again if you ask. It carries your email address and a name taken from it (the part before the @). The only email we send you about a purchase is the one with your licence key.

Why: to deliver your licence, support it and handle refunds (contract, GDPR Art. 6(1)(b)). How long: we keep purchase records with no end date, also after a refund.

Activating a licence

When you enter your licence key, Orbtile sends orbtile.com the key, your computer’s pseudonymous machine ID, your computer’s name as set in macOS or Windows (for example “Alex’s MacBook Pro”), shortened, and whether it’s a reactivation. For each computer, we keep a further keyed hash of the machine ID, the computer’s name, when it was first activated and last seen, and when and how it was deactivated. The name is there so you can tell your computers apart. A licence covers up to 3 active computers; deactivating one, in Orbtile or on your account page, frees its place.

To keep your licence active, Orbtile checks in about once a month. An activation lasts 60 days; from day 30, Orbtile renews it, at most once a day until it succeeds, so it keeps working offline for up to 60 days.

We delete a deactivated computer’s record 30 days after it’s deactivated. Our database backups can still hold it after that: a recovery copy of recent changes for 30 days, daily exports for up to 12 months, and encrypted backups of those exports for up to 6 months more, so for up to about 18 months in all.

To prevent abuse, we rate-limit activation with keyed hashes of your IP address and of the key.

The trial. Once the 15-day trial is switched on, orbtile.com keeps a trial record for each computer that starts one: a keyed hash of its machine ID (the same scheme as licence activation), which trial it belongs to, and when the computer was first and last seen. It’s created only for computers on a trial, and kept with no end date, so reinstalling Orbtile doesn’t start a new trial. When you press the button of a licence offer in the app, it sends orbtile.com your computer’s pseudonymous machine ID, which trial it belongs to and when it started, and whether the app is the Mac or the Windows one, and opens the pricing page in your browser.

Orbtile Enterprise. The Orbtile Enterprise app contacts orbtile.com for two things only: licence checks and update checks. It has no account, sign-in or settings sync, and sends no usage reports, analytics or crash reports.

Licence checks. At its first launch with a key, at every launch and every 24 hours, Orbtile Enterprise sends the licence key, a device ID and the app version (and, after a computer was removed from the licence, that it asks to be activated again). The device ID is a hash of the computer's hardware UUID on a Mac, or its Windows machine identifier (MachineGuid), made with a key that only Orbtile Enterprise uses, so it never matches the machine ID of usage reports. If the hardware ID can't be read, a random ID kept on that computer is used instead. It sends no computer name. For each computer, we keep the licence it belongs to, a further keyed hash of the device ID made separately for each licence, when it was activated and last checked, and the app version. We keep that record while the computer is activated and for 30 days after. A computer that hasn't checked its licence for 30 days is deactivated by itself. To prevent abuse, we rate-limit licence checks with keyed hashes of the IP address and of the key.

The licence. For each organisation's licence we keep the organisation's name, the contact email, the number of computers it covers, its status, any note we add about it for our own records, and the licence key itself, so we can send the key again.

Update checks. Orbtile Enterprise fetches the signed update status from its own address. The request carries no device ID, version header or usage data. Downloading an update sends the computer's current activation, so our server can check the licence. Your organisation can turn update checks off.

Installer downloads. Each download of an Orbtile Enterprise installer, from the link in the licence email, from the app, with the licence key (for example by your IT team's scripts) or by us, writes one line to our server log: the licence ID (or that we downloaded it ourselves), the file name, the time and which of those ways it was downloaded. We use it for support. Like our other server logs, it has no fixed deletion date: each service keeps a set amount of log data and overwrites the oldest lines when it fills up.

Why: to deliver, check and support your organisation's licence (contract, GDPR Art. 6(1)(b)).

The Orbtile app

The sections above cover the waitlist, website and voluntary feedback. This section covers the Orbtile app for macOS, which runs locally on your computer.

What it reads:

Claude Code's local session records and the end of each transcript file on your computer (the last 256 KB) to show the assistant's latest words on the key. For each subagent it also reads its small metadata file (name and type), workflow name, and after a restart the end of its transcript, to label its key. For Codex, it reads local thread state, the session index and the ends of rollout files, including desktop threads and codex exec runs, to show state, tool labels and live text. It also reads current waiting status and loaded thread IDs from an already running local Codex app-server, through its private control socket or an explicitly configured loopback WebSocket. The server may include thread previews in its metadata replies; Orbtile keeps only IDs and status from these replies, never the previews. It never starts or resumes Codex work through this reader. Default terminal sessions use the shared daemon in Codex 0.159.0. Terminal runs excluded from that daemon without a listener cannot supply this signal. It also follows recently active tracked desktop chats through the Codex desktop app's local interface, which only your user account can reach. Desktop snapshots can deliver the whole conversation into memory; Orbtile immediately discards the conversation history and unrelated fields, retaining only pending request metadata (including bounded command/reason, question text and options, request identity, original request time and offered decisions) and runtime status. It neither records nor uploads these snapshots. The desktop protocol is version-checked and observation stops on incompatibility; malformed conversation state drops only that conversation’s coverage. A bounded pending-request cache preserves request age during refreshes. Only already tracked recent/live threads receive daemon status reads, with slower polling while idle. Remote discovered SSH aliases are followed only for already tracked threads with a matching host and owner snapshot; remote waits are display-only. When ZCode is installed, it reads ZCode's local task databases in read-only mode. It also reads ZCode's settings file to keep Orbtile's keypad hook in place. From 0.3.4, it reads Kimi Code's session index, each session's state.json and the end of its main wire log (the last 2 MiB) in your Kimi Code folder, to show each session's state and live text. To answer through a running Kimi server, it also reads that server's registration file in the same folder. These local reads do not add transcript text to automatic usage reports.

To answer through Kimi's server, Orbtile reads the server's access token from your Kimi Code folder and uses it only for that connection on this computer. Orbtile never logs, copies or sends the token, and never puts it in a link. It never starts or stops a Kimi server and never changes the token.

What the keypad shows:

agent names and states, assistant text from the transcript tail, short tool or command labels, questions and permission requests. Your keypad decisions return over the local connection. Claude Code question choices can also be sent back. From version 0.2.1, supported adapters can send questions and approval requests to the keypad and receive keypad taps and answers through the local adapter API. From version 0.2.1, when you open a session from a key, Orbtile can use AppleScript to focus the exact Terminal or iTerm tab, or macOS Accessibility to focus the exact ZCode task, once you grant that permission.

How local agent events arrive:

over a private Unix-domain socket that only your user account can open. On a Mac, hooks and adapters use no network port; only while Phone pad is on does Orbtile open one, for Orbtile Mobile: it uses TLS, is announced with Bonjour on your local network, and accepts connections only from private network addresses. Claude Code uses local integration hooks for activity. Codex hooks are optional; Orbtile writes ~/.codex/hooks.json only when you opt in; its thread files and native signals work without them. Codex hooks return immediately without holding or deciding permissions, and integration repair replaces older holding helpers; the Codex desktop reader additionally connects to the Codex desktop app's local interface, available only to your user account, without creating or replacing it. An explicit Codex Allow or Deny sends the exact current desktop command/file decision to the owning app client. Acknowledgement alone shows Sent and adds no decision count; Allowed/Denied requires confirmation that the exact pending request disappeared from authoritative owner state. From 0.2.5, supported multiple-choice questions from the local Codex desktop app can return the selected options to the exact current question in its owning app client. The keypad shows Sending while sending, Sent after acknowledgement alone, and Answered only after acknowledgement and confirmation that the question is no longer waiting. “Other”, unsupported desktop questions and terminal questions use Answer on computer. Other permissions and remote desktop waits are answered in Codex; remote approvals and questions must be answered on the host. ZCode needs one hook for keypad approvals, which Orbtile adds. For Kimi Code sessions in Kimi's own server, Orbtile connects to that server only at this computer's loopback address, to read pending requests and send your keypad answers. Kimi Code hooks are optional; they report activity over the same private socket and never approve or deny anything. The optional third-party adapter API is off by default; when enabled on a Mac, it uses the same private socket, so adapters can send session events without a network listener. On Windows, each agent hook runs a small Orbtile helper that passes the event over a private named pipe on the same PC, which only your Windows user account can open; both sides prove themselves with a shared secret before any event data is sent. Agent events never use the network: there is no TCP port for hooks, and when Orbtile is not running the helper exits and the event is not kept. On Windows, the adapter API listens on 127.0.0.1, which other computers cannot reach; that port is open while Orbtile runs, but until you turn on the adapter API it issues no token and refuses every adapter request. With Phone pad on, Orbtile for Windows also listens for Orbtile Mobile, only on networks Windows marks as Private or Domain, never Public, and accepts connections only from private network addresses.

What it writes:

its own settings, a local usage-counter file and, when the adapter API is enabled, a local socket-discovery file. Unsent feedback is queued locally until accepted. Saving a keypad snapshot writes key images and a state file in your Pictures folder; the images can contain the text visible on the keys, while the state file does not store message text. Snapshots stay on your computer. Usage summaries and queued feedback are sent only as described in this notice. When you connect an agent, Orbtile installs a small Claude Code plugin or Codex hook entries and helper files that send session events to its socket. It may update the agent's settings and keeps backups for removal. For ZCode, it reads the task databases and adds one marked hook entry to ZCode's settings file so the keypad can answer, keeping a backup of the original in Orbtile's folder. Turning ZCode off in Settings stops tracking; the hook stays in place. If you install the optional Kimi Code hooks, Orbtile adds its own marked entries to Kimi Code's settings file, keeping a backup, and removes only its own entries when you remove them. Version 0.2.5 stores nothing in the macOS Keychain. In a build with accounts enabled, signing in stores this computer’s account credential in an owner-only file in Orbtile’s Application Support folder; it is not synchronized through iCloud. From 0.2.12, credentials that earlier builds kept in the login Keychain are moved to these files once and then deleted from the Keychain. On Windows, Orbtile installs for your user in %LOCALAPPDATA%\Programs\Orbtile with a Start menu shortcut and keeps its logs and status files in %LOCALAPPDATA%\Orbtile\Windows. It changes an agent’s hook settings only when you click that agent’s Install button, keeping a backup that removal restores. In the Windows registry it reads policy settings an administrator may have set, Windows settings such as the colour theme, the PC’s machine identifier (MachineGuid), only to make the machine ID described below, and your lists of installed apps, only on your PC, to spot a copy from orbtile.com next to the Store one and to show your agent apps’ icons; it writes only its trial dates, under HKCU\Software\Orbtile\License, the notification registration Windows keeps for the app and, for launch at login outside the Microsoft Store build, one value under the current user’s Run key.

Remote agents:

if you add a remote Claude Code host, Orbtile uses SSH to install or remove its integration and read a stream of display events from that host. From version 0.2.1, remote Codex and ZCode CLI sessions are also supported; for ZCode, Orbtile adds hooks to ~/.zcode/cli/config.json, keeps backups and installs a helper on the host, which you can remove from Settings > Remote Hosts. The Codex and ZCode hooks send display events only, with bounded assistant text at completion when a Stop hook supplies it, rather than streamed live text; approvals and questions must be answered on the host. Remote Codex also uses Python 3 to read a bounded selection of its state database and rollout tails on the host, discovering recent top-level sessions and showing completed assistant messages during a turn. This is message-level updating, not token streaming; the database and full transcripts are not copied. Labels use an explicit name or the project folder, never the initial user prompt. Missing Python 3, unreadable data or unsupported formats leave hook-only tracking available. The remote event stream can include session IDs, project folder, model, title, short messages, tool labels, questions and bounded assistant text for the keypad. Question and display text can contain private task details. It does not copy full remote transcripts, the initial user prompt or raw tool responses to your computer. SSH and the remote hooks handle these events on the host you chose.

What it sends automatically:

status and usage requests to orbtile.com, without cookies. Turning off usage reports also sends the deletion request described below. (1) A signed status check at orbtile.com/beta/status.json, at launch, when the computer wakes from sleep and every 4 hours; it carries the app version and, from 0.2.12 when usage reports are on, the same pseudonymous machine ID as the usage report plus, on the maker’s own computers only, a flag that leaves them out of usage statistics; it never carries an email or account, and with usage reports off it carries no identifier. (2) A usage report with cumulative counts for the UTC day: a machine ID, the app version and build, the operating system family (Mac or Windows), macOS version, the processor type, the interface language, whether a supported keypad was connected, how often the app started and how many minutes it ran and drove the keypad, for each built-in agent whether it is turned on, how many sessions and subagents it had, the most sessions at once and its busy minutes; for third-party adapters only how many are allowed, their session count and busy minutes; the names of the AI models they used with minutes per model, which features and settings were used, keypad approve and deny counts, error counts by type, and the number of unexpected exits. From 0.3.13, after a run that did not quit normally, the next report also says how that run ended: the reason (a signal, a crash, a system shutdown or unknown); on a Mac the signal’s name, and on Windows the error’s type name but never its message; the app version, build and edition of that run, and the operating system version (such as 15.1); whether a debugger was attached and whether the app’s code signature was intact; for a crash, where it happened inside Orbtile’s own code (a position in the app and, on Windows, Orbtile’s own function names) and, for any other code, only the name of its library; and a random record ID and the day. These records hold no file paths, user names, document names or message text. Settings choices (no personal text) are reported, including on/off switches, per-agent choices, exact numeric values and adapter/remote-host counts. Versions before 0.2.16 also report the keypad theme and minutes per theme for each UTC day. Our server adds the country the request came from. A small usage summary is sent at most hourly in 0.2.6 (every two hours in earlier versions) while Orbtile runs, only when it changed; the server keeps daily totals and usage changes by UTC hour under the re-keyed pseudonymous machine ID. Each usage hour is the hour a report was received, not the precise time the activity happened. Completed days and quit reports are also sent. On the maker’s own computers, the usage report also carries a flag that leaves them out of usage statistics; the flag carries no email or account. Orbtile for Windows sends the same status check and usage report, under the same rules and to the same addresses, with the Windows version in place of the macOS version and Windows named as the operating system; it contacts no orbtile.com address the Mac app does not. It downloads an update only to your user folder, refuses it unless its checksum, size and Orbtile signature match the signed release, and installs it only when you click Install. The Orbtile Enterprise app sends none of this; it sends only the licence and update checks described in Orbtile Enterprise, above. With an Enterprise key, the standard Orbtile app sends what this section describes, like any standard app.

Early-user discount request (older versions):

versions 0.2.2 to 0.2.18 ask orbtile.com, when you open Settings > License with usage reports on, whether the computer qualifies for an early-user discount, sending the pseudonymous machine ID. That discount no longer exists. Our server answers that it's gone. From 0.2.19, Orbtile doesn't ask.

Usage reports are on by default in release builds. From 0.2.16, turning off Send usage summary in Settings, General, Privacy stops collection, deletes the local report file and sends a one-time deletion request, retried until our server accepts it. The switch sets the local preference orbtile.app.telemetryDisabled, which earlier versions use directly; when an organisation sets that preference with a configuration profile, the switch shows Managed by your organisation. The status check still runs.

The machine ID is an Orbtile-specific hash of your Mac's hardware UUID. It is pseudonymous:

it lets us count computers and see how use changes over time, it does not contain the hardware UUID, and we cannot turn it back into it. The same Mac gives the same ID, also after a reinstall. If the hardware UUID cannot be read, the ID is a hash of a random ID stored for that macOS user instead; reinstalling can change it if that local ID is lost. Our server applies another keyed hash before storing the machine ID. On Windows, the same hash is taken of the PC's Windows machine identifier (MachineGuid), which is never stored, logged or sent; if it cannot be read, a random ID kept on that PC is used instead. Orbtile Enterprise doesn't use this machine ID. For its licence checks it makes a separate device ID, described in Orbtile Enterprise, above, that never matches it.

What the report never contains:

your name, email or account names, user or computer names, file or folder paths, project or session titles, prompts, transcripts, task text, tool commands, host names or the hardware UUID itself. The app aggregates counts by UTC day; the server also keeps changes by UTC hour of receipt, without finer usage timestamps. Older data remains in daily totals.

From 0.2.6, local Antigravity desktop activity is read on your computer. From 0.2.10, visible assistant response text is also read locally from the verified desktop app for display on your computer and keypad; it is not included in usage reports. For keypad answers, Orbtile reads bounded question and option labels from the native waiting state and sends only your selected answers to that verified local app. It does not send these questions or answers in usage reports. Antigravity permissions, written answers and unsupported questions remain on the computer.

Why:

to learn which computers, agents, models and features are used, so we can decide what to fix and build next. Legal basis: our legitimate interest in keeping the product working and improving it (GDPR Art. 6(1)(f)). We keep usage reports for 13 months.

How long:

we keep usage reports for 13 months, then delete them. Hourly cleanup removes reports once their UTC day is older than 395 days. To limit abuse, a one-way keyed hash of the sender's IP address (for IPv6, of its /64 network) is used in short-lived rate counters. Hourly counters expire two hours after the window starts; new-machine daily counters expire two hours after the UTC day ends. Hourly cleanup normally removes these within 27 hours. Cleanup runs independently of app traffic; delayed or failed runs can delay deletion.

What it never does:

it shows no macOS notifications other than its two update notices (one while an update installs, one after it finishes) and three trial notices (two before the trial ends, one when it ends), and only if you allow them when macOS asks. Automatic reports never send your transcript or task data.