PocketTerm

Your computer's coding sessions, in your pocket.

Prompt, steer and answer omp and Claude Code from your iPhone or Android phone, and watch your other terminal windows live. The desktop app on your Mac or Windows PC runs your own PocketTerm server, and your phone reaches it over your own Tailscale network. Everything between them is end-to-end encrypted. There is no PocketTerm cloud.

Leave an agent working, walk away, and get a push when it finishes or needs you. Its questions and approvals take a tap.

1.0.0 coming soon · test build 0.1.6 on GitHub · macOS 13 or later · Windows 10 (1809) or 11, x64 · MIT

Illustration of the phone's Terminal tab for a MacBook Pro: three coding sessions grouped by project, one done, one that needs you and one working, then two other terminal windows, next to the app's mark, a phone showing a terminal prompt tucked into a denim pocket.
Illustration of the phone's Terminal tab · sample sessions

What it does

The phone app's Terminal tab lists the computer's omp and Claude Code sessions by project, and its other terminal windows below them. The sessions keep running on the computer; the phone shows and drives them.

  • Sessions as conversations

    Answers stream in as Markdown and tool calls show as cards. Prompt, steer or queue, stop a run, and type / for slash commands. Queued prompts wait on the computer, where you can edit, reorder or pause them from the phone.

  • Images and files

    Up to 10 per message from the camera roll, the clipboard or the phone's files, up to 20 MB each. The agent gets them as if you were at the computer: saved there and named in the prompt.

  • Questions and approvals

    When the agent needs you, answer its question, approve its tool call or review its plan from the phone, with a tap.

  • Live screens

    Any other terminal window, in color where the terminal provides it. Type into it and press keys like the arrows and Esc.

  • New sessions

    Start your agent, or a shell, in any of your projects without taking the computer's focus. New project… makes the folder first. Swipe a row to end a session or close a window.

  • Ask about your sessions

    An omp session on the computer that can see the others: it lists them, reads their conversations, and prompts or stops one when you ask.

  • Voice prompts

    Say a prompt in English or Croatian. Speech is recognized on the phone itself.

  • Pushes

    Opt-in pushes when a run finishes or the agent needs you, plus a Live Activity on iPhone and an ongoing notification on Android for the sessions you follow.

  • Several computers

    One server, several Macs and Windows PCs on your tailnet. Pick one on the phone. Try the demo shows made-up sessions without any computer.

In the app

The phone's Terminal tab and a session, and the desktop app's setup checklist and Settings.

Phone on its Terminal tab in demo mode for a MacBook Pro: sessions under garden-api and pocketterm-site, each with its terminal, model, context and cost, one working in tmux in Ghostty and one in WezTerm that needs you, then other windows zsh, nvim and omp, with an Ask about your sessions bar and a plus button

Sessions by project

Each session shows its terminal, its state, the model and how full its context is. Other windows follow, and + starts a new session.
Phone showing the Claude Code session Fix the pricing table on small screens: the prompt, Read and Edit tool-call cards, Claude's answer, and Claude needs you: Approve Bash? npm run build, with Deny and Approve, above a composer with attach and microphone buttons

A session as a conversation

Tool calls as cards, the answer as Markdown, and an approval the agent waits for, answered with a tap.
Desktop setup, On this computer: a checklist with Tailscale installed, running, signed in, HTTPS certificates on and its HTTPS port free, a note that the phone needs the Tailscale app on the same account, and a Start button

Setup over Tailscale

The desktop app checks Tailscale, then Start runs the server built into the app.
Desktop Settings, Terminals tab: five things need attention, where new sessions open and how they are placed, kitty needing setup, tmux, WezTerm, iTerm2 and Ghostty, and a button to start new Ghostty windows in tmux

Settings

Which terminals are ready, and where the sessions the phone starts open.

Screenshots of the real apps, on made-up data

Getting started

  1. InstallDownload the desktop app for your Mac or Windows PC. Install Tailscale on the computer and your phone, signed in to the same account; the free Personal plan is enough. The phone app is in TestFlight and Google Play internal testing for invited testers.
  2. Start the serverOpen PocketTerm on your computer. Its checklist checks Tailscale (installed, signed in, HTTPS on), then Start runs the server built into the app. It shows every command before it runs anything. Another computer joins with Join another computer's PocketTerm… and the link from Settings › Account › Add a computer… on the first.
  3. Get the computer readyThe checklist installs PocketTerm into omp and Claude Code, fixes up your terminals and offers your project folders.
  4. Scan the codeIn the phone app, scan the QR code the checklist shows (later: Settings › Phone › Add a phone…). It signs the phone in once, for 10 minutes, and carries the computer's key: show it only to your own phone.

PocketTerm lives in the menu bar on the Mac and in the tray on Windows. Quit PocketTerm in Settings › Account stops it.

Terminals

What the phone can do with a window depends on the terminal it runs in.

TerminalPlatformWhat works from the phone
kittymacOSEverything: sessions, live screens in color, keys and answers, closing windows
WezTermmacOS, WindowsEverything
iTerm2macOSEverything, with screens shown without colors
tmux, in any of thesemacOSEverything
Ghostty 1.3 or latermacOSWith tmux, everything. Without it, sessions and keys but no screen; answer questions on the computer
  • macOS: kitty needs one click in Settings › Terminals › Set up. iTerm2 and Ghostty need macOS's Automation permission. With tmux installed (brew install tmux), the sessions the phone starts in Ghostty run inside tmux and get full control, and Start new windows in tmux does the same for windows you open yourself.
  • Windows: only WezTerm windows are listed, because it is the only Windows terminal another program can read and type into. The setup checklist and Settings › Terminals offer to install it.
  • Claude Code needs version 2.1.287 or later. Any other program in a supported terminal shows as a live screen.

Your computer has to be awake, with PocketTerm running and Terminal from phone on. While it is on, PocketTerm keeps the computer from idle sleep, but a closed lid without an external display, sleep you start yourself or shutting down ends it, and the phone then says the computer isn't answering. A push goes out only when nobody has touched the computer for 60 seconds.

Your server, not mine

Your PocketTerm server runs inside the desktop app on your computer. It serves only your devices, and I have no access to it. Details, adding computers and how to remove everything: SELF_HOSTING.md.

On your computer
Built into the desktop app and free. It listens only on the computer itself, and Tailscale gives it a private HTTPS address that only your own devices reach, at home or away. It isn't reachable from the internet.
Tailscale
On the computer and the phone, signed in to the same account; the free Personal plan is enough. Tailscale sees which of your devices connect and when, not what they send.
Several computers
One computer runs the server. Others join it with the link from Settings › Account › Add a computer…, and the phone picks between them.
End-to-end encrypted
Each computer makes its own key, which reaches a phone only inside that computer's QR code. Sessions, prompts, screens, keystrokes, images, files and notification text are sealed with it, so your server can't read them. There are no PocketTerm accounts: a computer signs in with your server's setup link, a phone by scanning a code from a signed-in computer.
Encrypted pushes
Opt-in. My relay passes the sealed notification to Apple or Google and stores nothing. iPhone Live Activity updates can't be encrypted, so they carry only a session's state.
No tracking
No analytics, advertising or tracking SDKs in the apps. Read the privacy policy.

Status

Version 1.0.0
Coming soon. The first native release: SwiftUI on the Mac and iPhone, WinUI 3 on Windows, Jetpack Compose on Android, with the server built into the desktop app and Tailscale as the only way to reach it. This page describes 1.0.0. It isn't published yet.
Mac
Test build 0.1.6 until then. A notarized PocketTerm-0.1.6.dmg on GitHub Releases that updates itself. Its setup also offers a VPS or Supabase; choose On this computer, the setup 1.0.0 keeps. macOS 13 or later.
Windows
Test build 0.1.6 until then. PocketTerm-0.1.6-setup.exe on GitHub Releases. It isn't code-signed yet, so SmartScreen warns: More info, then Run anyway. It installs for your user only, and Settings shows a link when a new version is out. Windows 10 (1809) or later, or Windows 11, x64.
iPhone
TestFlight, for invited testers only. Not in the App Store yet. iOS 17 or later.
Android
Google Play internal testing, for invited testers only. Not public on Google Play yet. Android 8.0 or later.
Not a tester?
You can build the phone app from source with your own signing identity.
License
Open source under the MIT license. Issues and pull requests are welcome on GitHub.

Support

I'm Danijel, the developer. For questions, setup trouble or ideas, email me and I'll get back to you, or open an issue on GitHub. Setup problems are often covered by the troubleshooting table.

Found a security problem? Please report it privately through GitHub's vulnerability reporting, not in a public issue.