Waitlist open

A Mac terminal for coding agents.

Run Claude Code, Codex, OpenCode and pi in as many tabs as you like. Ottermo shows you which one needs you, keeps them all running when you quit, and lets you answer from your iPhone.

One email to confirm, one when you’re in. That’s it.

Built-in hooks for

  • Claude Code
  • Codex
  • OpenCode
  • pi

Other agents work too, through the bell and standard terminal notifications.

Needs you

The tab that needs you comes first.

Each tab shows its agent and one line about what it’s doing: the question Claude is asking, Codex’s summary, the command that failed. Tabs that need you move to the top of the sidebar, most urgent first, and stay there until you type into them. Glancing at one doesn’t clear it.

  • ⌘JNext tab that’s waiting
  • ⌃TabBack to where you were
  • ⌘KAny tab by title, branch, path or program

Needs you

An agent asked a question or wants permission, 1Password is waiting for approval, or something rang the bell. You get a sound and a Dock badge.

Error

A command failed or an agent stopped on an error.

Done

An agent finished, and its last message becomes the note. Any command that ran for more than 10 seconds counts too.

Working

Busy. Nothing for you to do yet.

Hooks you can read first

The hooks tell each agent which pane it’s in and ask it to name the tab after its task. Before anything is installed, you see the exact change to the agent’s config. We keep a backup, and you can undo it.

Knows who asked 1Password

1Password only says “Terminal wants to use a key.” Ottermo’s tab names the command that asked, like 1Password · git push origin main, so you know which agent it was.

Notifications that take you there

Click one and you’re in that tab. The Dock menu lists everything that’s waiting, and triggers can run a command of your own on any event.

Sessions

Quit the app. Your sessions keep running.

Every shell lives in a small server that’s separate from the app. Quit Ottermo, or let it crash, and your agents carry on. Open it again and everything is where you left it, down to the scrollback. Updates swap the app in place without stopping anything.

Restarting your Mac does stop them. Your tabs, splits and folders come back as fresh shells, and old commands aren’t run again. Claude Code, Codex, pi and OpenCode pick up their conversations where they left off.

iPhone and iPad

Answer from your phone.

The iPhone app shows your Mac’s tabs and what each one is waiting for. When an agent asks something, the question and its answers appear on your Lock Screen. Tap one to reply, or open the full terminal when you need more.

  • Whatever needs you comes first, in the app, in a widget and in a Live Activity.
  • Finds your Mac by its key, at home or across the internet, with no Remote Login or VPN to set up. The key never leaves the Secure Enclave.
  • Notifications are encrypted for your phone before they leave your Mac. Our relay can’t read them. It only sees your Mac’s name and how many tabs are busy.
  • Checking in from your phone doesn’t resize anything on your Mac. On iPad you get the full layout: sidebar, splits and ⌘K.

Remote hosts

Every machine you can ssh to.

Connect to any Mac or Linux box, including the ones on your tailnet. The first time, Ottermo copies a single static binary to ~/.termo. No root, no package manager. Your ssh config, keys, ProxyJump and agent work as they are, and so does 1Password.

Sessions on a host keep running while your Mac sleeps or the Wi‑Fi drops. Their tabs dim, and pick up where they were when you’re back.

Coming laterOttermo Team

Pair on a live terminal.

Share one session, and your team can watch from their Mac or iPhone. You choose who can type, one person at a time. Guests see that session and nothing else: not your other tabs, your machines or your files.

It’s end-to-end encrypted. Cloudflare carries the traffic but can’t read it. Team will be a paid plan, and you’ll need an account for it.

Performance

0.61sto cat a 100 MB log. The macOS PTY’s own limit is 0.60.
0.0%CPU when nothing’s happening. Idle means idle.
170msfrom launch to your first pane.
0.1msfor a key to go through the server and back.

Measured on a MacBook Pro with an M4 Max, running macOS 26.

The details

Everything else you’d want from a terminal.

Built on libghostty-vt

The same terminal core as Ghostty, drawn by Ottermo’s own Metal renderer in a native AppKit window. No Electron, no web view.

Quick terminal

A hotkey slides a terminal down over whatever you’re doing, even in full-screen apps. It keeps running while it’s hidden.

Splits that behave

Drag a pane by its header, pick a tmux layout, snap dividers to ½, ⅓ and ⅔. Your shell gets one resize, not thirty.

Themes that reach your agents

14 built-in themes, and every Ghostty theme works too. Matching themes for Claude Code, Codex, pi and OpenCode switch between light and dark along with the app.

Scriptable

Use termo send, capture, wait and prompt --wait to hand work from one agent to another. Anything the app can do, a script can do too.

Drop a file on a pane

Ottermo types its path in, so the agent can read it. That works for screenshots too. Kitty inline images and ligatures are supported.

Secure Keyboard Entry

Turns itself on at password prompts, so nothing else on your Mac sees what you type there.

Your keybinds

Ghostty’s syntax, plus tmux-style prefixes, modes and global hotkeys. You can change or turn off every binding.

No tracking

No analytics, no crash reports, no account. Ottermo checks for a new version once a day. Your phone’s notifications pass through our relay, and so does its connection to your Mac when the two can’t reach each other directly, encrypted end to end. That’s all we hear from it.

Common questions.

When can I try it?

We’re letting people in a few at a time. Join the waitlist, confirm your email, and we’ll write again when your invite is ready.

Do I need an account?

No. The terminal, remote hosts, the iPhone app and its notifications all work without one. You only need one for the paid parts: Ottermo Team, to share sessions with other people, and Holt cloud machines.

What will it cost?

Two parts are paid: Ottermo Team, with a 14-day trial, and Holt, our cloud machines for you and your agents, which you pay for as you use them. Everything else in Ottermo is free.

Which agents does it work with?

Claude Code, Codex, OpenCode and pi have built-in hooks. With them, Ottermo shows their questions, permission prompts and summaries, and puts the answers on your phone as buttons. Installing the hooks is up to you. You see the diff first, and you can undo it.

Other agents, like Gemini, aider or goose, are recognized by name and get their status from the bell and standard terminal notifications (OSC 9, 777, 133 and 7501). You see when they need you or finish, but without answer buttons on your phone.

What do I need?

A Mac with macOS 14 or later, and macOS 26 for Liquid Glass. The iPhone and iPad app needs iOS 26. Remote hosts can be any Mac or Linux machine you can ssh to.

Is there a Windows or Linux app?

No. Ottermo is a Mac app. Linux machines work as remote hosts, and their tabs show up next to your Mac’s.

How does the iPhone reach my Mac?

You pair it once, by scanning a code on your Mac and confirming there. After that they find each other by key: directly when they can, on the same Wi-Fi, over Tailscale or across the internet, and through our relay when they can’t. The connection is encrypted end to end either way, so the relay only sees that two devices are talking and how much. There’s no Remote Login or VPN to set up.

Is it built on Ghostty?

Partly. It uses libghostty-vt, the terminal core inside Ghostty, with its own renderer and interface on top. Ghostty theme files and keybind syntax work as they are. Ottermo is made by Nordbeam, not by the Ghostty project.

Can I use it with tmux?

You can, but you may not need to. Sessions already outlive the app, splits and layouts are built in, prefix keys work like tmux’s, and termo attach opens any pane from another terminal, over plain ssh too.

Get in early.

We’re letting people in a few at a time. Leave your email, confirm it, and we’ll write again when it’s your turn.

No spam. Leave any time with one click.