もしもし × mosh — Your servers, on call.

The iOS terminal that never drops your session.

SSH & Mosh, built natively. Roam across Wi-Fi and 5G, auto-reconnect after sleep, and bring native tmux navigation to your thumb.

Moshi tmux session switcher
Why Moshi

A real terminal that survives the real world.

📡

Mosh roaming

Sessions survive network changes & sleep. Auto-reconnects on return — no lost scrollback, no re-typing.

Native tmux

A tap-friendly breadcrumb for sessions / windows / panes. One full-screen pane at a time, the way a phone wants it.

🔆

Vibe Island

Watch your coding agent in the Dynamic Island — working · needs you · done — and tap to jump straight back to its pane.

⌨️

Built for thumbs

Pinch-zoom, swipe scrollback, tappable links, an arrow joystick, customizable shortcuts, 10 coder fonts.

Moshi home with live session tree
Moshi window switcher
tmux, natively

Switch sessions, windows & panes in a tap.

  • Breadcrumb navigation. Session ▸ window ▸ pane right at the top — tap any segment to switch.
  • Live session tree. See every session and its windows on the home screen; expand several at once.
  • One pane, full screen. Moshi shows a single pane and restores your layout for desktop clients on the way out.
  • Attach, never disturb. Moshi attaches your existing sessions and never creates or restyles them behind your back.
Vibe Island

Watch your coding agent from the Lock Screen.

Run Claude Code, Codex or any agent in a tmux pane. Moshi mirrors its status into the Dynamic Island & a Live Activity, and a tap jumps you straight back to the right pane.

working needs you done

SET UP — the easy way (recommended)

1

Connect with tmux

Open a tmux session on your host through Moshi.

2

Settings → Install agent hooks

Tap Run in terminal. Moshi installs the hook into your shell — backed up, idempotent, safe to re-run.

3

Run your agent

Start Claude Code in a pane. The island lights up with its live status.

SET UP — manually

Vibe Island reads precise status from tmux pane options that your agent's hooks stamp. Without hooks it still works from an output heuristic — hooks just make it exact (incl. needs you for permission prompts).

1 · helper script — ~/.moshi/moshi-stamp.sh

#!/bin/sh [ -n "$TMUX" ] || exit 0 tmux set -p -t "$TMUX_PANE" @moshi_state "$1" 2>/dev/null tmux set -p -t "$TMUX_PANE" @moshi_agent "${2:-agent}" 2>/dev/null tmux set -p -t "$TMUX_PANE" @moshi_since "$(date +%s)" 2>/dev/null

2 · Claude Code hooks — ~/.claude/settings.json

{ "hooks": { "UserPromptSubmit": [{ "hooks": [{ "type":"command", "command":"sh ~/.moshi/moshi-stamp.sh working claude" }] }], "PreToolUse": [{ "matcher":"*", "hooks": [{ "type":"command", "command":"sh ~/.moshi/moshi-stamp.sh working claude" }] }], "Notification": [{ "matcher":"*", "hooks": [{ "type":"command", "command":"sh ~/.moshi/moshi-stamp.sh attention claude" }] }], "Stop": [{ "hooks": [{ "type":"command", "command":"sh ~/.moshi/moshi-stamp.sh done claude" }] }] } }

Codex & others: point the same helper at any agent that can run a shell command on prompt / tool / stop events — the read side is agent-agnostic.

Under the hood

How Moshi stays connected.

Two transports

Plain SSH with keepalive, or Mosh over UDP that roams across Wi-Fi / 5G and survives sleep. Lost the link? Moshi reconnects on its own when you return.

tmux control mode

Moshi speaks tmux -CC, so sessions / windows / panes are first-class — a native breadcrumb and switcher, not screen-scraping. It attaches your existing sessions and never restyles them.

Hook bridge

Agent hooks stamp @moshi_state onto the live pane; Moshi reads it over the same tmux channel — no extra port, no daemon — and drives the Dynamic Island.

Your SSH keys can live in the Secure Enclave and never leave the chip. Host keys are pinned on first use (TOFU).

Pricing
One‑time · no subscription

Buy it once, own it. Mosh roaming, Vibe Island and the full toolkit unlock forever.

SSHMoshtmux Secure Enclave keysTOFU host keysEN / 中文 / 日本語
FAQ

Good to know.

Is Mosh required?

No. Moshi works over plain SSH with keepalive and auto-reconnect. Mosh (UDP) adds seamless roaming across networks and survives sleep — it kicks in when the host has mosh-server; otherwise Moshi degrades to SSH and tells you.

Which agents does Vibe Island support?

Anything that can run a shell command on its lifecycle events. Claude Code is one-tap from Settings; Codex and others work by pointing the same moshi-stamp.sh helper at their hooks. No hooks? You still get a status heuristic from pane output.

Are my SSH keys safe?

Yes. Keys can be generated in the Secure Enclave and never leave the device — signing happens on-chip. Passwords / imported keys are stored in the iOS Keychain. Host keys are pinned the first time you connect (trust-on-first-use).

Does it handle multiple sessions & panes?

Fully. The home screen shows a live tree of every tmux session and its windows; the breadcrumb switches session / window / pane in a tap, and Moshi always presents one full-screen pane, restoring layouts for your desktop clients when you leave.

What does it cost?

A one-time purchase — no subscription. Everything (Mosh, Vibe Island, fonts, shortcuts) unlocks for good.