
Your terminal,
in your pocket.
A zero-config terminal to any of your machines, from anywhere — with AI agents getting safe, tap-to-approve oversight on top. No open ports, no VPN, no SSH keys.
Phone app: Android on Google Play (Android 10+) · iPhone coming soon
Why now
Two needs, one moment.
A brand-new problem landed on top of an old, badly-served one. Nobody serves both cleanly yet — that's the opening.
Agents pause and ask permission constantly.
AI coding agents like Claude Code, Codex and Goose don't just run — they stop and ask "can I run this command?" over and over. And you're rarely at the desk when they do. Approving-an-agent-from-afar is a genuinely new problem, born with the agent era.
Terminals-from-elsewhere is still painful.
Wanting a terminal to your box from elsewhere is ancient — SSH, tmux + mosh, Termius. But it's open ports, port-forwarding, dynamic DNS, VPNs, key juggling. Most people give up and stay at the desk. Portty collapses all of it to a scan and a code check.
The shape of it
A floor you live on.
A ceiling that sets it apart.
Two layers on one secure pipe. The floor is the everyday product; the ceiling is what no plain-SSH tool can do.
The Floor — a terminal to any machine
Any terminal on any machine, streamed live to your phone, switchable, workable. tmux-style: sessions keep running when you close the app.
- → Watch a build finish
- → Tail logs & migrations
- → Run the command you forgot
- → Reach your home server
The Ceiling — tap-to-approve agents
When an AI agent is in the terminal, that session upgrades to rich Approve/Deny cards, diffs and summaries — not scrolling text.
Scenarios
From the daily to the “wow.”
Watch a build finish
Kicked off cargo build, npm test or a deploy and stepped away. Open your phone — that terminal is live in your hand. Catch the break the second it happens.
Tail logs & migrations
A dev server, tail -f, a DB migration in flight. Glance at it from the couch without re-establishing an SSH session.
Run the command you forgot
In bed and remember you didn’t git push? Tap the terminal, fire the one-liner (or a saved snippet), done in 10 seconds.
Reach your home server
Pair once with a QR, then your Pi / NAS / home box is just there over P2P. No dynamic DNS, no port-forwarding, no networking degree.
Resume a REPL with state
Sessions persist on the host, tmux-style. Detach, reattach, type the next line from your phone — your Python/psql/vim state survives.
Fire a script on demand
11pm, you remember the backup or cleanup script. Tap, run, read the result, sleep.
Approve a risky action
Agent wants git push --force, rm -rf, or to install a package. A card with the exact command lands on your phone. Tap Approve or Deny from anywhere.
Review the diff
Agent finished editing files. See a clean red/green diff — not a git diff text wall — spot the wrong line, tap Request changes.
Answer without typing
Agent asks “Postgres or SQLite?” Get a question card with tappable options. One tap, no phone-keyboard decoding of scrollback.
See “stuck or working?”
A clean activity feed — “editing users.rs”, “running tests (12/40)”. Skimmable, no terminal noise. Confirm it’s healthy, put the phone away.
Stop a runaway agent
One Stop button → a clean interrupt, not Ctrl+C roulette into raw bytes. Session and state survive.
A fleet of agents
Three agents on two machines, one dashboard: Frontend working · Backend waiting on you · Docs done. Jump straight to the blocked one.
The whole pitch in one moment
You start Claude Code refactoring a module on your laptop, then walk to lunch. Mid-soup, it wants to rungit push --force. Your phone buzzes — a card: “Approve / Deny?” You tapDeny. You stay at lunch.Freedom and control — walk away from your desk, but nothing happens without your say-so.
One command
portty share
opens a portal from the terminal you’re already in.
Don’t rewire your workflow. Type portty share in the terminal you’re sitting in and that terminal is suddenly on your phone — watch it and control it from anywhere, mid-work.
- ◇From-birth portal.
portty installadds a shell hook so every terminal is portal-ready the moment it opens — share even works mid-agent-run. - ◇Clean detach. Close the portal and the shell keeps running, tmux-style. Reattach on any device.
- ◇Every session, one fleet. Spawned or adopted, on one machine or many — all just tabs in your phone.
How it works
Zero config. Under a minute.
Install on your machine
Run the host daemon on a Mac, Linux box, Windows PC, or Raspberry Pi. It owns the terminals — your phone never runs a shell.
Pair with a QR + a code check
Run portty pair, scan the QR, and confirm both screens show the same 6-digit code. Devices reach each other over encrypted P2P — LAN direct, NAT-punched, or relayed. No open ports, no VPN, no SSH keys.
Open any terminal; approve with a tap
Switch between many live sessions, or type a quick command. When an agent asks permission, get a clean Approve / Deny card.
How it compares
One app for all of it.
Not Claude-only. Not agent-only. Not paid-only. Not “just SSH.”
| Any agent | Any terminal | Free + self-host | Zero-config | E2E encrypted | |
|---|---|---|---|---|---|
| Portty | ✓ | ✓ | ✓ | ✓ | ✓ |
| Anthropic Remote Control | Claude-only | — | — | — | ✓ |
| Happy Coder | ✓ | — | ✓ | — | ✓ |
| Omnara | ✓ | — | $9/mo | — | plaintext |
| Termius / Blink (SSH) | — | ✓ | — | — | ✓ |
Security
A remote shell is high-stakes.
We treat it that way.
A bug in pairing or a stolen unlocked phone hands over the whole machine. So Portty is built like it: signed binaries, least-privilege defaults, and a strict P2P-only posture by default.
Read the full security model →End-to-end encrypted by default
Every keystroke and every line of output is sealed between your devices — only they hold the keys. A relay only ever passes along data it can’t read.
Real device identity
Every device has its own identity key. A stolen QR can’t pair on its own — you confirm a 6-digit code on both screens before any phone is added.
Direct first, smallest surface
Devices connect directly whenever they can, and fall back to an encrypted relay only to get through. No open ports, no accounts, no server of ours in the middle.
Instant revoke + biometrics
Drop a stolen phone in ~2 seconds with portty-host revoke <id>. Biometric lock on the app. Structured commands by default; raw shell only on request.
Get Portty
Up and running in a minute.
Two binaries: portty (share a terminal) and portty-host (the daemon).
1. Get the phone app
Free on Google Play for Android 10 and newer. The iPhone app is coming soon.
2. Install Portty on the computer you want to reach
via Homebrew
Then start the host and pair your phone — scan the QR in the app, check both screens show the same code, and answer y:
Portal the terminal you’re in to your phone.
Make every new terminal portal-ready from birth.
Also on Scoop · direct downloads · source code · install & service guide →
Free and open source
Free for everyone. From Corvux Mindware.
Portty is free and open source — built by Corvux Mindware to put a safer terminal in every developer’s pocket. Install it on your own machines, reach any box from anywhere, and keep your agents on a short leash with tap-to-approve.
FAQ
Questions, answered straight.
Does Portty need a relay or a server?
Which AI agents are supported?
Can my phone be the machine I’m connecting to?
Where do I get the phone app?
Is the agent approval layer finished?
How is it different from Termius, Blink, or SSH?
What about “from anywhere” if my laptop is closed?
Put a terminal in your pocket.
Watch builds, reach any machine, and approve your agents with a tap — all from your phone. Free to use.