LAUNCH OFFER — Pro is $39 one-time $59 · launch price locks forever, no subscription Ends in --d --h --m --s Claim the launch price →
v1 · iPhone simulator · macOS

The iPhone that lives in your terminal.

TermPhone boots a real iOS simulator, streams its screen into your terminal, and lets you — or your AI agent — tap, swipe, type and test without ever opening the Simulator GUI.

$ curl -fsSL https://termphone.com/install.sh | sh

# one command · installs CLI + MCP server · needs macOS + Xcode

Get Pro — $39 See the proof Free tier included — 1 device, no card, no account. Pro is a one-time payment, yours forever.
  • ✓ Live stream, not screenshots
  • ✓ MCP server for AI agents
  • ✓ Offline licence — no phone-home
zsh — termphone watch pro 11.0 fps
$ termphone up pro # iPhone 18 Pro · iOS 27.2 · explicit pairing
✓ booted in 9.4s · stream connected · renderer: half-block
$ termphone act tap "Settings"
✓ tap delivered · screen stamp #a41f verified
Two iPhones rendered side by side inside a terminal by TermPhone: iPhone 18 Pro home screen on the left, iPhone 17e Settings on the right
REAL CAPTURE — dual-watch mode: pro (iPhone 18 Pro) + 17e (iPhone 17e) side-by-side · 13.9 fps with two devices (single-device stream: ~11 fps)
11 fps
Live MJPEG stream — vs 1.6 fps from screenshot polling
7 tools
MCP server — observe, act, sessions and more, built in
2 phones
Side-by-side in one terminal, zero cross-talk
1320×2868
App Store screenshots from a single command

Measured on a Mac mini · iPhone 18 Pro simulator · iOS 27.2 · Xcode 27.2 — real numbers from the v1 build, not marketing math.

Why TermPhone

Built for people who live in the terminal — and the agents that work for them

Every feature below shipped and was verified in the v1 build: booted, tapped, recorded and exported on a real simulator. No vapourware sections.

Core engine

A real video stream, not a screenshot slideshow

TermPhone pipes the simulator's display through an MJPEG stream pipeline and renders it live in your terminal — ~11 fps where naive screenshot polling crawls at 1.6 fps. Watch animations, scroll physics and loading states the way a user actually sees them.

$ termphone watch pro
stream: mjpeg · 80 cols · 11.08 fps avg
renderer: half-block (auto) · kitty / iterm2 available
Reliability

Explicit device ↔ runtime pairing

Other terminal tools break on new Xcode releases with “Incompatible device” errors — they pair devices to the wrong runtime. TermPhone pairs every device to its runtime explicitly, so it boots clean on Xcode 27 / iOS 27.2.

AI agents

An agent layer with a stale-screen guard

observe returns what's on screen; act taps by name — “tap General”, not raw coordinates. Every action carries a screen stamp: if the UI changed underneath, the command stops with STALE_SCREEN instead of tapping blind. Ships with an MCP server (7 tools), so Claude and other agents drive the phone natively.

$ termphone act tap "General" --device pro
✗ STALE_SCREEN — UI changed since observe; re-observe first
Pro

Two phones, one terminal, zero cross-talk

Named sessions — pro (iPhone 18 Pro) and 17e (iPhone 17e) — boot together and render side-by-side at 13.9 fps with labels. Agent commands target a session by name; a tap meant for one phone can never land on the other.

$ termphone sessions
pro  iPhone 18 Pro  Booted  stamp #a41f
17e  iPhone 17e     Booted  stamp #77c2
Pro

Record & replay, verified

Record a flow once — Home → Settings → General → About — then replay it anytime. Verification uses a visual hash, so live values (clock, storage) don't cause false failures.

Pro

Graphics mode + mouse

In kitty / iTerm2, the phone renders as a full-quality image, not blocks. And you drive it yourself: click = tap, drag = swipe, wheel = scroll.

Pro

App Store export, one command

Clean status bar (9:41, full battery) and 1320×2868 screenshots, exported with a manifest. The chore every indie dev hates, reduced to one line.

Proof, not promises

These screenshots came out of TermPhone itself

Captured from the shipping v1 build on a Mac mini. Switch tabs — every frame is a real output of the command named under it.

iPhone 18 Pro home screen booted by the TermPhone CLI — Calendar, Photos, Maps, News, Health, Wallet, Siri and Settings icons

Booted by one CLI command

termphone up pro created the device with an explicit iPhone 18 Pro ↔ iOS 27.2 pairing and booted it to this home screen. No Simulator.app window, no clicking through Xcode — and none of the “Incompatible device” failures that hit other tools on Xcode 27.

From here, termphone watch streams this exact screen into your terminal.

iOS Settings About page reached using only TermPhone agent commands — device name, iOS version and model details

Driven there by an agent, end to end

This About page was reached with zero manual input — only observe and act commands: Home → Settings → General → About. The agent tapped elements by name, and the stale-screen guard re-verified the UI before every tap.

Typing was verified the same way: Spotlight search for “Safari” returned real results.

TermPhone rendering two iPhones side by side in one terminal — iPhone 18 Pro home screen and iPhone 17e Settings

Two phones, one terminal

The actual half-block terminal render: pro on the home screen, 17e inside Settings, both live at 13.9 fps. Test a layout on a big phone and a small phone in the same glance — no window juggling.

Multi-device is a Pro feature — the free tier runs one device.

App Store-ready screenshot exported by TermPhone at 1320 by 2868 pixels with a clean 9:41 status bar

Store-ready in one command

termphone appstore export overrides the status bar to the classic 9:41 / full-battery look and writes 1320×2868 PNGs plus a manifest. This frame is a real export from the v1 build — what you see is literally the file it produced.

The whole workflow

Four command groups. That's the entire learning curve.

Click through — these are the real v1 commands, exactly as they run.

$ curl -fsSL https://termphone.com/install.sh | sh
$ termphone up pro            # boot iPhone 18 Pro (iOS 27.2)
$ termphone watch pro         # live screen in your terminal
$ termphone tap 195 812       # or just click — mouse mode is built in

One install command, one boot command, and the phone is on your screen. Explicit device↔runtime pairing means it still works the day a new Xcode drops.

$ termphone observe --device pro        # elements + screenshot + stamp
$ termphone act tap "Settings"          # tap by name, not coordinates
$ termphone act type "Safari"           # real keyboard input
$ termphone mcp serve                   # 7 tools for Claude & other agents

Hand the phone to your AI agent. The STALE_SCREEN guard means it re-checks the UI before acting — no blind taps on a screen that already changed.

$ termphone up pro 17e          # two named sessions
$ termphone watch --all         # side-by-side, labelled, 13.9 fps
$ termphone act tap "General" --device 17e
✓ delivered to 17e only — pro untouched

Big phone, small phone, same flow. Sessions keep their own screen stamps, so parallel testing never cross-contaminates. Pro feature.

$ termphone record flow.json    # capture a session + video
$ termphone replay flow.json    # re-run it, visual-hash verified ✓
$ termphone appstore export     # 1320×2868, clean status bar, manifest

Record a golden path once; replay it after every change as a smoke test. Then export your store screenshots from the same session. Pro features.

Honest comparison

Why not just use Simulator.app?

You can — for clicking around by hand. TermPhone exists for everything around that: automation, agents, repetition and shipping.

CapabilityTermPhoneSimulator.app GUIScreenshot scripts
Lives entirely in the terminal✓ Yes— GUI windows✓ Yes
Live screen (10+ fps stream)✓ ~11 fps✓ On screen— ~1.6 fps polling
AI agent control (MCP)✓ 7 tools built in— No— DIY
Stale-screen protection✓ STALE_SCREEN guard— n/a— Blind taps
Survives new Xcode releases✓ Explicit pairing✓ Native— Breaks often
Record / replay with verification✓ Visual-hash check— Manual only— No
App Store screenshots, 1 command✓ 1320×2868 + manifest— Manual resizing— DIY
Pricing

Free to start. $39 once to unlock everything. Never a subscription.

Launch pricing: Pro is $39 instead of $59, and the launch price is locked to your licence forever — every v1 update included. When the countdown ends, it ends.

Free

$0

Forever · no card · no account

  • ✓ 1 device session
  • ✓ Live terminal watch (stream pipeline)
  • ✓ Tap, swipe, type, home
  • ✓ Agent CLI — observe / act + STALE_SCREEN guard
  • ✓ MCP server
  • → Multi-device, record/replay, App Store export — in Pro
Launch offer — save $20

Pro · One-time

$59$39

One payment · yours forever · all v1 updates included

Launch price ends in --d --h --m --s

  • ✓ Everything in Free, plus:
  • ✓ Multi-device sessions — phones side-by-side
  • ✓ Record & replay with visual-hash verification
  • ✓ App Store export — 1320×2868, clean status bar
  • ✓ Graphics renderers (kitty / iTerm2) + mouse control
  • ✓ Offline Ed25519 licence — activates once, never phones home
Claim Pro at $39 →

Straight talk: the licence is verified offline with public-key cryptography — no account, no telemetry, no “sign in to continue”. If TermPhone doesn't boot your simulator, write to us within 14 days and the Pro payment comes back. And the free tier is genuinely usable — it's how we run our own demos.

Where this goes

One terminal. Every device.

v1 is iPhone, done properly. The same engine — terminal graphics + agent layer — takes plug-in device modules next. Statuses below are honest, not aspirational.

V1

iPhone simulator

Stream, agent layer, multi-device, record/replay, App Store export, graphics + mouse, licensing.

● Shipping now
V2

Android & Pixel

Emulator module on the same commands — termphone up pixel next to your iPhone sessions.

On the roadmap
V3

Real-device mode

Control a connected physical phone from the terminal. This is the honest route to real calls and eSIM — simulators can imitate a phone, but only real hardware is on a real network.

On the roadmap
V4

Desktop OS modules

macOS, Windows and Ubuntu environments in the same terminal workspace, driven by the same agent layer.

On the roadmap
FAQ

Questions, answered straight

What do I need to run TermPhone?
A Mac with Xcode installed (TermPhone drives Apple's iOS Simulator through simctl + idb). The one-command installer sets up the CLI and the MCP server; termphone up handles device creation and pairing for you.
Is the $39 really one-time?
Yes. One payment, a signed licence key, verified offline on your machine — no subscription, no account, no renewal. The launch price ($39 instead of $59) applies during the launch offer and stays locked to your licence, including all v1 updates.
How does the AI agent control actually work?
Two ways: the JSON CLI (termphone observe / termphone act) and the built-in MCP server with 7 tools. Agents tap elements by name. Before every action, the current screen stamp is checked against the last observation — if the UI moved on, the action stops with STALE_SCREEN instead of tapping the wrong thing.
Why does it survive Xcode updates when other tools break?
The classic failure is a tool pairing a device type with the wrong runtime image, which newer Xcode versions reject (“Incompatible device”). TermPhone creates every device with an explicit device↔runtime pair, which is why v1 boots cleanly on Xcode 27.2 / iOS 27.2.
Can it make real calls or use an eSIM?
No simulator can — that's a hardware and carrier thing, and any tool claiming otherwise is overselling. TermPhone's honest answer is the V3 real-device mode on the roadmap: control a physically connected phone from the terminal, where its own SIM/eSIM and network genuinely work.
What does the free tier actually include?
One device with the full stream pipeline, watch, tap/swipe/type, the agent CLI and the MCP server. Pro unlocks multi-device sessions, record & replay, App Store export, graphics renderers and mouse control — the licence gate is the only difference.
Does the licence phone home?
No. Keys are Ed25519-signed and verified locally with a public key. Tampered, expired or forged keys are rejected offline. Your simulator usage is never reported anywhere.

Your next iPhone is one command away.

Install free in under a minute. Upgrade to Pro at the $39 launch price before the countdown ends — after that, it's $59, still one-time, just less smart.

$ curl -fsSL https://termphone.com/install.sh | sh

macOS · Xcode required · free tier needs no account