Privacy

Privacy Policy

Effective 11 August 2026 Applies to Termite on iPhone, iPad, Mac and Android

The short version

Who we are and what this covers

Termite is a native SSH and terminal client. This policy explains what the Termite apps and the Termite backend do with your data. It covers the apps for iPhone, iPad, Mac and Android, and the versions for other desktop platforms as they ship. We have written it platform-neutrally; where a platform genuinely differs, the difference is called out in section 15.

In this policy, "we" and "us" means Sentryline Labs, the developer of Termite and the publisher named on the app's store listings. Contact details are in section 17. For people in the UK, EU and EEA, we are the data controller for the data described here.

Some things this policy describes only happen if you use the optional features that need them. The terminal itself works without an account, and the SSH side of the app never involves our backend: connections, keys and terminal traffic do not touch it whether you are signed in or not. One thing does happen without you asking: the app registers the device itself with our backend when it starts, before any sign-in, so that notifications can be addressed to it later. On Android that first-launch registration also carries a push token. It is described in section 2.

What we collect, and why

Account

If you sign in, you get an account on our backend. Depending on the platform, you sign in with Sign in with Apple, Sign in with Google, or an email one-time code. We receive and store your email address, a display name if the provider supplies one, and the provider's subject identifier (the anonymous id that ties your sign-in to your account). We use this to authenticate you and to attach your subscription to you. We never receive your password with any of these methods.

Your sign-in session (access and refresh tokens) is stored on your device only, encrypted under a non-exportable key held by the platform secure hardware. Signing out deletes it, including when you are offline.

Device and push

To wake you when something on your server needs you, the app registers the device with our backend and stores:

Worth knowing

Device registration happens at app launch, before you sign in. On both platforms the app registers the device with our backend when it starts, so a device record can exist on our servers before any account does; if you later sign in, that record is linked to your account. On Android this is more than a bare identifier: the push infrastructure (Firebase) initialises at first launch with no opt-out, so a Firebase installation identifier and an FCM token are created and sent to Google, and the launch-time registration sends the install identifier, that FCM token, your notification preferences and your time-zone offset to us, all while signed out. On Apple platforms the launch-time registration carries the device identifier and, once you have allowed notifications, the push token and preferences. There is currently no in-app switch to prevent any of this; declining the notification permission stops notifications from being shown, but not the registration.

Purchases

Termite is a paid app. Purchases are made through the storefront for your platform (today that is the App Store or Google Play), so we never see your card details. We use RevenueCat to validate receipts and tell us whether your subscription is active. RevenueCat identifies you by your Termite account id, not your email. Our backend stores your entitlement state (tier, product id, store, expiry) and, for auditability, the purchase events RevenueCat sends us. Those events contain store and transaction identifiers, product id, price, currency, environment and store country.

Abuse prevention and device attestation

On iPhone and iPad the app performs an Apple App Attest attestation, which shows that it is running on a genuine, unmodified Apple device. The attestation is verified on our own server against Apple's certificate chain; we do not send anything to Apple to do it, and we store the resulting key id and public key with the device record. We would rather be precise about what it does today than imply more: attestation is recorded but not yet enforced. While we finish rolling it out, a device that cannot produce a valid attestation is still allowed to register its push token and receive a Remote-awareness session credential. One thing it does gate unconditionally, on both platforms and regardless of that setting: linking a device to your account requires cryptographic proof of possession, so a device record can never be attached to an account without it. Enforcement for the rest is a change we intend to make before general availability. The equivalent Android check (Play Integrity) is planned and is not in the shipped Android app today.

If you use the natural-language command feature, our server records the IP address of the request and a timestamp so that we can enforce quotas and stop abuse.

Optional features that transmit content

Two features send content from your session off your device. Both are opt-in and described in full in section 6: Remote awareness (notifications about long-running commands and waiting agents) and natural-language command generation.

What we don't collect

This list is not aspirational. Each item was checked against the code of every Termite app and of the backend. Where there is an exception, it is the one in section 6, and it is named there rather than hidden here.

On syncing

We do not sync your hosts, keys, snippets or tunnels to our servers, and on Apple platforms iCloud sync (CloudKit) is explicitly disabled for the app's database. Separately, if you have device backup switched on, your Apple device backup can include the app's local database and downloaded files. That is a backup you control, made by Apple, not a transfer to us. Your keys are excluded from it because they are stored as this-device-only items. On Android, Termite disables system backup entirely, so nothing leaves via Auto Backup or device-to-device transfer.

The SSH reality

This is the part people most want to know, so it gets its own section.

Your SSH connections go straight from your device to your servers. There is no Termite relay, proxy, bastion or "cloud terminal". We could not read your session if we wanted to, because the traffic never reaches us. Authentication happens between your device and your host using a key held in your device's secure hardware.

The same is true of the actions you take from a notification. When you tap Approve, Reject or Stop on your lock screen, the keystroke is delivered over the app's own SSH connection to your host. Our backend does not execute anything on your machines and holds no credential that would let it.

Two related honesty notes. First, a notification tells the app which saved host it refers to by id; the app resolves that against hosts already saved on your device, so a bad message cannot point the app at a server you never configured. Second, if you enable Remote awareness, the app writes a session credential onto your own server so the shell hook there can post events to us. See the next section.

Where your data lives

Most of what Termite knows about you lives on your device: your hosts, identities, keys, known-hosts records, snippets, tunnels, recent connections and preferences. That data is in the app's private storage, and secrets are in the platform secure hardware.

The account data described in section 2 lives in our backend, which is hosted on Supabase (managed Postgres and serverless functions). Supabase processes this data on our instructions as our hosting provider. Payment processing sits with Apple or Google, and receipt validation with RevenueCat.

Every table holding user data has row-level security enabled with an explicit deny-all policy for client roles; only our server-side functions, using a privileged role, can read or write it. The only table any client can read directly is a static configuration table used to recognise AI agents in terminal output. It contains no user data.

Remote awareness and AI-agent features

These are the features where content from your session leaves your device. They are optional, off by default, and worth understanding before you switch them on.

Remote awareness (per-host, default off)

Turning on Remote awareness for a host lets Termite install a small shell hook on that server, and gives that hook a session credential so it can post events to our backend. From then on, for that host:

Please read this one

The step that shortens the captured pane is a formatting step, not a secret scrubber. It strips terminal control codes and drops menu lines; it does not detect tokens or passwords. If a secret is printed on screen in the last few lines when an agent stops to ask you something, it can end up in a notification: on your lock screen, and in transit through Apple or Google. Leave Remote awareness off for hosts where that matters.

We store, per event, only the host label and the event type with a timestamp, so we can rate-limit and collapse duplicate notifications. The address, port and username of that host are never sent.

Turning Remote awareness off stops new events. The session credential already written to that server remains there until it is rotated or you remove the hook. It is a credential that only allows posting events for that session, and it grants no access to your account or your other data.

Natural-language command generation

On supported platforms, you can describe what you want in English and have Termite propose a shell command. When you do, we send your prompt (up to 2,000 characters) and the shell context you have allowed to our backend, which forwards it to a third-party AI model provider to generate the command. The context fields are individually controllable: your working directory and git branch are included by default, and your recent shell commands (up to ten) are excluded by default, because a command you typed with a token or password inline would otherwise go with it. The app says this in the settings screen too.

Nothing is executed automatically. The proposed command is shown to you and runs only when you send it. Our backend caches the model's response keyed by a hash of the request, so repeating the same prompt does not re-bill the model, and it records the request's IP address and a timestamp for quota enforcement.

What appears on your lock screen

Notifications are the one place Termite renders remote content outside the app, including on a locked device. A wake notification can show:

A Live Activity has to be addressable while it is running, so registering one stores on our servers its own push token together with the host it belongs to. That registration is deleted when the activity ends or when Apple tells us the token is dead.

These only appear if you turned Remote awareness on for that host. There is currently no setting to keep the Live Activity while hiding the prompt text, and no "hide notification content on the lock screen" option inside Termite. Your operating system's own lock-screen preview settings are the control that works today. Quiet hours suppress alerts server-side during the window you set.

Third parties who process data for us

We do not sell your data, we do not share it for advertising, and we do not use it to build profiles. These are the only companies that receive anything, and each receives only what its job requires.

ProcessorRoleWhat it receivesWhen
Supabase Hosts our database, authentication and server functions Everything described in section 2, plus normal server-side records of authentication (including sign-in IP addresses and audit entries kept by the auth service). As the platform our functions run on, Supabase also handles the request and response bodies of every call to our backend (including the ones we do not store, such as the command text and pane extract in section 6) and the diagnostic logs those functions produce Whenever the app talks to our backend
Apple Sign in with Apple; App Store purchases; App Attest; APNs push delivery The sign-in event and the email/name you choose to share; purchase and receipt data; for push: your device token, the host label, and the notification title and body, which means the command text or agent extract Sign-in, purchase, and each notification
Google Sign in with Google; Google Play purchases; Firebase Cloud Messaging push delivery The sign-in event and the identity token contents; purchase tokens; for push: the Firebase installation id, the FCM token, your device model, operating-system version, SDK versions and app version, and the same notification title and body. FCM messages are not end-to-end encrypted, so Google can read them App launch (Firebase registration), sign-in, purchase, and each notification
RevenueCat Subscription and receipt validation Your Termite account id as a pseudonymous user id (not your email), and store receipt and transaction data. We set no custom subscriber attributes and never ask it to collect device advertising identifiers. Its SDK additionally collects its own baseline information as part of normal operation (a device identifier of the kind the platform gives each vendor, app and operating-system version, and locale and country), which is reported to RevenueCat and shown back to us in aggregate in its dashboard App launch and purchase events
AI model provider Turns your English request into a shell command Your prompt plus whichever context fields you allowed (working directory, git branch, recent commands). Nothing else about you is sent Only when you use natural-language generation
Your own servers Not our processor, listed for completeness Your SSH session: username, key or password, keystrokes and terminal I/O, and (if you enable Remote awareness) the shell hook and its session credential Whenever you connect

Scroll the table sideways for all four columns →

Each of these third parties is engaged under a written agreement that requires them to provide the same or an equal level of protection for your data as this policy states, to process it only on our instructions and only for the purpose described above, and not to use it for their own advertising or profiling. The same requirement applies to any parent, subsidiary or other related entity that would have access to user data. We do not work with data brokers.

We may also disclose data if we are legally required to, or where necessary to investigate abuse of the service. If Termite is ever sold or merged, we will tell you before your data moves to a new controller.

How long we keep things

Honestly stated, because this is where a lot of policies get vague:

We would rather publish that list than a vaguer one. Automatic expiry for the transient records above (quota rows, cached generations, push-event logs) is work we have not finished; until it ships, the deletion route in section 11 is the mechanism that clears everything it can reach.

Your controls in the app

Sign-out is not a factory reset

Deliberately, signing out does not wipe the device. Your hosts, keys, known-hosts records and preferences stay so you do not lose your setup, and the device identifier and any Remote-awareness session credential remain in place so hooks already installed on your servers keep working. If you want everything gone from the device, delete the app. If you want your server-side records gone, see the next section.

Account and data deletion

There is not yet an in-app button to delete your account. We would rather say that plainly than imply otherwise. We are building one; until it ships, deletion works by request:

How we protect data

Two things we want you to know rather than discover: server-side, the small operational values we store (push tokens, the Remote-awareness session credential, event records) are held in our database without an additional application-level encryption layer on top of the provider's storage encryption; and no Termite app currently blurs the terminal in the app switcher, so live terminal content can appear in a system app-switcher thumbnail or a screenshot. No security is perfect, and we will not claim otherwise.

Children

Termite is a developer tool. It is not directed at children, and we do not knowingly collect data from anyone under 13, or under 16 where local law sets that threshold. If you believe a child has created an account, write to us and we will delete it.

International transfers, legal bases and your rights

Termite is used worldwide, and our providers (Supabase, Apple, Google, RevenueCat and the AI model provider) operate internationally. Your data may therefore be processed in a country other than your own, including the United States. Where we transfer personal data out of the UK, EU or EEA, we rely on the transfer mechanisms our providers make available, such as the European Commission's Standard Contractual Clauses.

If UK or EU data protection law applies to you, our legal bases are:

You have the right to access your data, to correct it, to delete it, to restrict or object to processing, to data portability, and to withdraw consent at any time. Use the contact address below; deletion and export are described in section 11. You also have the right to complain to your data protection authority. In the UK, that is the Information Commissioner's Office.

If you are in California: we do not sell or share your personal information as those terms are defined by the CCPA/CPRA, and we do not use it for cross-context behavioural advertising. You have the right to know, delete and correct, and we will not discriminate against you for exercising any of these rights. The categories we collect are the ones listed in section 2; the business purposes are the ones stated beside them.

Platform specifics

Where this policy says "on supported platforms", the feature exists on some platforms today and is planned for the rest as they reach parity. We will not quietly widen what a feature collects when it lands on a new platform; if that changes, section 16 applies.

Changes to this policy

If we change this policy, we will update the effective date at the top and keep the current version at this address. If a change materially affects what we collect or who receives it (a new processor, a new category of data, a new default), we will tell you in the app, or by email, before it takes effect, and we will not apply it retroactively to data already collected.

Contact

Privacy questions, access requests, deletion requests, or a mistake you have spotted in this document all go to the same place, and a person reads it.

✉ developer@sentrylinelabs.com

Please put "privacy" or "delete my account" in the subject line so it is not missed.