HomeBlog › Double-Escape: one keystroke between your shell and your AI
Blog

Double-Escape: one keystroke between your shell and your AI

Jul 19, 20265 min readBy the Rysh team

Every rysh pane has two input modes — shell and prompt. Esc Esc flips between them. That tiny toggle removes the copy-paste bridge you've become.

Count how many times you do this tomorrow: run a command, read the error, switch to a browser tab, paste the error into a chat box, wait, read the answer, switch back, type the fix.

Each switch is small. The sum is your afternoon.

The problem isn't the model. It's placement. Your shell and your AI live in different windows, and you are the copy-paste bridge between them.

One pane, two modes

In rysh, every pane is two things at once:

You flip between them with Double-Escape. Press Esc twice: the input line switches from shell mode to prompt mode. Press it again: back to shell.

That's it. That's the feature. It's also the entire thesis of rysh compressed into one keystroke: the distance between doing and asking should be zero.

What it feels like

$ go test ./internal/actors/
--- FAIL: TestPaneSnapshotRestore (0.02s)
    pane_test.go:143: expected 3 panes, got 2
FAIL

Esc Esc. The status bar flips to prompt.

why did TestPaneSnapshotRestore fail? fix it.

Notice what you didn't do: you didn't paste the error, didn't explain which repo you're in, didn't describe the file layout. The agent is in the pane. It reads the test file, greps for the snapshot logic, re-runs the failing test itself, and proposes an edit — shown as a coloured diff you approve before anything touches disk.

Esc Esc back to shell mode. go test ./.... Green.

You never left the pane. You never left the keyboard.

Why a mode, and not a magic prefix?

Plenty of tools bolt AI onto a terminal with a special prefix character: start your line with some sigil and it goes to the model. That works for one-off questions. It falls apart the moment the AI becomes a colleague instead of a lookup table.

A mode is sticky, and it's per pane. That matters more than it sounds:

The mode is part of the pane's state, not the UI's. It's persisted with the pane (rysh stores per-pane state in an embedded JetStream KV bucket), so when you detach a session and reattach tomorrow, every pane wakes up in the mode you left it in.

What actually happens underneath

Rysh isn't a chat wrapper with a terminal skin. Everything is an actor talking over an embedded NATS bus.

When you hit Enter, the TUI publishes a typed message to the session's workspace subject. The workspace actor routes it straight to the pane's actor. From there:

Here's the detail I like most: shell output and AI output are published on separate topics, then merged into one stream, interleaved by arrival time. So your pane's transcript reads like an actual conversation — command, output, question, answer — instead of two logs fighting over a scrollback. Model responses are rendered as markdown right in the pane.

The honest part

Rysh runs on Claude. Bring your own Anthropic API key and it talks to the Messages API directly; no key, and it falls back to shelling out to the claude CLI. Same model you already use. We didn't train anything smarter — nobody offering you a terminal did.

What's different is placement and plumbing: the model sits inside a real PTY with tools, cross-pane context, approval gates on dangerous operations, and a keystroke — not a browser tab — between you and it. And it's self-hostable: your machine, your keys, your data.

The toggle is a gateway

Double-Escape looks like a convenience feature. It's actually the first domino.

Once shell and AI share a pane, you start wanting more panes — and then panes that are agents, stacked like a deck of cards. Then panes that listen to other panes' output. Then sessions that keep running after you close the laptop, that you can poke from a plain shell with rysh send.

That's the rest of rysh. It starts with pressing Escape twice.


Rysh is early — and that's a feature, not an apology. We're recruiting design partners: teams who want agents inside their real workflow and a direct line to the founders. → rysh.ai/design-partner

Related: Every pane is a conversation · Sessions that survive

Try Rysh

Every pane is a shell and an AI agent — install takes one command.

Get started free →