Termpolis Remote
Your terminals, on your phone
Check on the agents already running on your computer, read what they have printed, and type back — from anywhere, end to end encrypted.
Free to install, iPhone on iOS 16.4 or later. The desktop app it pairs with is free and open source on Windows, macOS and Linux.
Termpolis Remote needs the desktop app. It runs no agent, holds no model credentials and does nothing on its own. You need Termpolis running on a Mac, Windows or Linux machine, with Allow phones to connect ticked in Settings › Remote. The phone is a viewer and a keyboard for that machine; close it and the work carries on without it.
What it costs
The app is free to install. One thing in it is not free, and it is the one thing it does.
$4.99 per month, auto-renewing
First week free for new subscribers.
Relay access. Your phone does not reach your desktop directly — it goes through a relay that we run and pay for, so that the two of them can find each other across networks, carrier NAT and a locked-down office Wi-Fi. That relay is what the subscription covers. It is also the part that can never read anything: it sees IP addresses, a room id and the size and timing of each message, and forwards sealed bytes it cannot open.
The desktop app stays free and open source, forever. Nothing on your computer is behind this. There is no free tier on the phone and nothing withheld from subscribers either — relay access is the whole product, so it is the whole price.
Billed through your Apple ID. It renews each month unless you turn auto-renew off at least 24 hours before the month ends, and you can cancel at any time in iOS Settings › your name › Subscriptions. Cancelling during the free week costs nothing. Terms of use: Apple's standard EULA.
What you actually do with it
Six things, and they are the six that matter when the machine with the work on it is somewhere else.
Watch an agent work, live
- Output streams from the desktop as it is printed — not a snapshot you pull.
- Colour comes through, and the desktop works out cursor moves and redraws before it sends, so a progress bar shows its latest state and a diff keeps its colours.
- The terminal list shows your terminals on that desktop. Open one and a line above the output says what its agent is doing: thinking, working, or waiting for you.
Answer it
- A keyboard that types into the real session. When an agent stops to ask a question, you answer it from wherever you are.
- Send types your text into the session and presses Enter, the way the desktop does, and a multi-line paste goes in as one. There are no special keys — no Esc, Ctrl+C or arrows — so a menu that needs one waits for the desktop.
- This is the whole reason the app exists: a run that would have sat blocked for three hours gets unblocked in ten seconds.
Start something new
- New AI terminal starts Claude, Codex or Gemini on the desktop, in a folder you pick by browsing the desktop's folders, on any of its drives.
- The picker shows folder names only, and only to a phone the desktop has allowed to start terminals.
- An agent started this way runs the way Termpolis runs swarm workers, without stopping for permission prompts, so allow it only on a phone you trust as much as the desktop.
Carry up to 16 desktops
- A work laptop, a home desktop, a Linux box in a cupboard — pair each one once.
- Every pairing has its own key and its own name. Nothing is shared between them.
- Switch from the terminal list. Forgetting one leaves the other fifteen exactly as they were.
The desktop stays in charge
- Read output, start terminals, type, close terminals — four permissions, granted per phone, on the desktop. Only reading is ticked when you pair.
- Every request is checked again on the desktop when it arrives. The phone can report what it has been allowed; it cannot grant itself anything.
- Revoke from either end, at any time, and the channel does not reopen.
Verifiable, not just claimed
- Eight safety words on both screens after pairing. Matching words mean the two devices derived a key nothing in between could.
- They do not change while the pairing lasts, so you can compare them again next week, not only on the day.
- The wire format is published, and both implementations of it are tested against each other on every push.
Setting it up
Two minutes, once per computer.
- Turn Remote on, on the desktop Settings › Remote › Allow phones to connect. The same panel is where you choose what a phone is allowed to do: read output, start terminals, type, close terminals. Only reading is ticked to begin with.
- Scan the code the desktop shows Click Pair a device and point the phone at the QR code. It works once, within 90 seconds, for whoever scans it first, so don't pair during a screen share. Pairing needs the camera: the desktop shows the code only as a picture.
- Compare the eight words Both screens show the same eight words, derived from the two devices' keys. If they match, nothing is sitting in between. If they do not, tap They do not match — unpair on the phone, revoke the phone on the desktop, and pair again. The words do not change while the pairing lasts, so they can be compared again at any time.
- Pair the next machine, if you have one Up to 16. A work laptop, a home desktop, a Linux box in the corner. Each pairing has its own key and its own name, and you switch between them from the terminal list.
What it does, and what it does not
It does
- List your terminals on the paired desktop. Swarm workers are not included.
- Show what an agent has printed, live, and what it is doing.
- Type into a terminal, and send.
- Start Claude, Codex or Gemini in a folder you pick on the desktop.
- Switch between the desktops you have paired, and forget any one of them.
It does not
- Run an agent, or hold a conversation of its own. Nothing executes on the phone.
- Store your transcript. Output is held in memory while the app is open, never written to disk.
- Ask you to make an account. There is no sign-in; the subscription goes through your Apple ID.
- Collect anything. No analytics, no crash reporter, no advertising identifier.
- Grant itself permissions. Every request is checked again on the desktop.
Why it is safe to point at your own machine
The relay in the middle is built so that trusting it is not required.
Encrypted end to end
- X25519 key agreement, HKDF-SHA256, ChaCha20-Poly1305.
- Private keys are made on each device and never leave it. Every connection derives fresh session keys, so traffic recorded today can't be decrypted later.
- The relay sees IP addresses, a room id, when each side connects, and each message's size, timing and unencrypted header. Not one byte of what you type or what your terminals print.
- TLS on the way to the relay, and inside it a sealed payload the relay can't open.
Kept on the device
- One private key per paired desktop, in the iPhone's Keychain.
- Available only while the device is unlocked, and not restored onto another device.
- Unpairing erases that desktop's key and record — and works whether or not the relay is reachable.
- Either end can revoke. The channel cannot be reopened without both.
The wire format is published in full, and the desktop and phone implementations of it are tested against each other on every push. The rest of the detail lives in the privacy policy.
Support
Something not working, or a question this page does not answer? Either route reaches the same person.
[email protected]
Best for anything you would rather not put in public — a pairing problem with your own machine names in it, or a security report. Please say which phone, which desktop operating system, and which app version (Settings, at the bottom).
GitHub issues
Best for bugs and feature requests. Public, searchable, and it is where fixes get tracked to a release. Termpolis is Apache 2.0 and developed in the open.
Troubleshooting
The handful of things that actually go wrong.
The phone cannot find the desktop
The desktop app has to be running, with Allow phones to connect ticked in Settings › Remote — the phone talks to it through the relay, not to a server that holds anything for you. If the machine is asleep or the app is closed, there is nothing at the other end of the room. The desktop's Settings › Remote panel shows the connection state and the phones that are paired. If the desktop's relay address was changed, or it has not heard from this phone in 30 days, pair the phone again.
The camera will not read the pairing code
Pairing needs the camera, because the desktop shows the code only as a picture. If the app never asks for it, or it was turned off, turn it on in iOS Settings › Termpolis Remote › Camera. The code expires after 90 seconds: if the countdown ran out, close the dialog and click Pair a device again. The camera is used for this one thing; frames are decoded on the phone and thrown away.
The eight safety words do not match
Do not continue. Matching words mean the two devices hold each other's real keys; words that differ mean something is in between. Tap They do not match — unpair on the phone, revoke the phone in Settings › Remote on the desktop, and pair again where nobody else can see the desktop's screen. Worth reporting to [email protected] if it happens again.
There is nowhere to type, or no New AI terminal button
Those are permissions, and they are granted on the desktop, not on the phone: Settings › Remote, in this phone's row under Paired devices. The app hides what it is not allowed to use, and its Settings screen lists what the desktop currently allows. The phone can only report them — it cannot grant itself anything, by design. If the box is there but Send is greyed out, the desktop is offline; while it is, the New AI terminal button is hidden too, and after the app opens neither control appears until the desktop answers.
The terminal list is empty
The list shows the terminals in that desktop's sidebar. Swarm workers, and agents started from the phone once you have left them, are not listed. If none are open, start one there, or use New AI terminal if the desktop has granted that permission. If you have paired several computers, check you are looking at the right one — the desktop's name is in the title bar, and Desktops switches between them.
Output stops updating
The app disconnects whenever it leaves the screen and reconnects by itself when you come back. If it says the desktop is offline, check that the desktop is awake with Termpolis running. Output printed while you were away is sent on, up to 262,144 characters; if iOS closed the app, reopening a terminal brings back its last 32,768 characters. The full scrollback stays on the desktop.
I want this phone off my machine entirely
Either end is enough to cut it off. On the phone: Settings › Desktops › Remove, which erases that desktop's key on the phone. On the desktop: Settings › Remote, Revoke in this phone's row. Doing both is tidiest, because the desktop only hears about an unpair when it is online and on the phone's screen. Other pairings are untouched either way. Deleting the app on its own is not enough: iOS can keep an app's Keychain entries after it is deleted, so unpair first.
Requirements
Phone
- iPhone on iOS 16.4 or later. An Android build follows.
- A network connection. The phone and the desktop do not have to be on the same one.
- A relay access subscription — $4.99 a month, first week free.
Desktop
- Termpolis on Windows, macOS or Linux — free download.
- Allow phones to connect ticked in Settings › Remote, plus the permissions you want this phone to have.
Privacy
Short version: the app collects nothing, there is no account, and the relay we run passes your terminal along sealed, without being able to read it. The dependency list is short on purpose and is checked by a test on every push, so that claim cannot drift quietly. The full policy — desktop, phone and relay — is at termpolis.com/privacy.html.