coding-agents

Rysh puts a Claude or Codex agent in every terminal pane

Claude News

coding-agents

Rysh puts an LLM agent behind every terminal pane: typing ##claude into each pane of a three-pane stack gives one window three independent Claude sessions, and ##codex does the same for Codex. The Apache-2.0 CLI is written in Go and documented on Github.

At a glance

  • Each pane cycles four input modes with a double Esc: shell on a real PTY, prompt to the LLM, rysh for multiplexer commands, and chat with no tools.
  • A session runs as a daemon rather than a terminal, so stopping it and starting it again brings both Claude and Codex conversations back unprompted, each resuming the thread it held before.
  • SecretNAT is enabled by default and swaps secrets for tokens in the request body before it leaves the machine, with ##snat get returning the real value locally in the pane.

Terminal multiplexers have been stable ground for two decades, and rysh keeps the surface familiar while changing what sits underneath: the pane is a process the agent lives in, not a window an agent is pasted into. For daily Claude Code users that reads as an attempt to make multi-agent work ordinary rather than exotic, with orchestration handled by the same tool that already handles splits. The daemon model appears to be the load-bearing part.

A tab holds lanes, a lane holds stacks, and ##new grid 2x3x4 spans two tabs at once

Panes stack Zellij-style: one expanded, the rest collapsed to a title bar showing [N/M]. ##new grid 4 stacks four panes in the active lane, ##new grid 3x4 builds three lanes of four, and ##new grid 2x3x4 spreads that across two tabs. ##move pane up, down, left or right reorders a stack or crosses into the next lane, and ##move pane to-lane relocates a live pane.

Each pane cycles four modes with a double Esc, and ##mode list shows what a pane has while ##mode new adds the rest. First run goes through rysh onboard --provider anthropic --key-env ANTHROPIC_API_KEY, which validates the key, writes a project-local rysh.config.yaml and opens the session; Ctrl+S and a digit moves between panes in a stack.

A hidden Claude pane routes messages between agents and refuses stale requests

##board open opens the agents board, ##board post publishes a milestone and ##board reply answers a thread. An agent posts from inside its pane with rysh board post --as $RYSH_PANE without stealing focus, and reads back with rysh board tail --limit 20. ##board agent up starts the board agent; ##board agent visible draws it without moving focus, and ##board agent invisible puts it away while it keeps running.

A fleet is a named group of panes with a board of its own, and ##fleet register epic-07 --board epic-07 opens no panes. The fourth narrated walkthrough, 2:29 long, shows a Claude roadmap agent setting the goal, a Codex fleet-manager splitting it into work orders, two workers building in parallel and the manager sending a correction back before signing off. They ship a browser todo manager with no backend and no build step.

go install needs Go 1.25.3, and rysh and ry are not interchangeable

The source build comes from go install github.com/rysh-ai/rysh-cli-code/cmd/rysh@latest, which lands in GOPATH/bin and requires Go 1.25.3 or newer, the floor declared in the module's go.mod. A prebuilt Apache-2.0 binary installs through the script at packages.rysh.ai/install-rysh.sh, resolving the newest release at run time unless RYSH_VERSION pins one or RYSH_INSTALL_DIR changes the target directory.

The packaged distribution ships a separate binary called ry, which this repository does not produce, and rysh version or ry version tells the two apart. Development against both modules happens in rysh-cli-parent, which carries the Makefile, the Go workspace and CI and wires the CLI to a local checkout of rysh-cli-shared. Internally the workspace, tab, pane and agent actors run on proto.actor over NATS, with terminal emulation on a vt10x fork with scrollback.

Where ConPTY support stands

GOOS=windows GOARCH=amd64 go build ./... succeeds against this source, and the release archive is named cli-only for that reason, but platform.PTYSupported is false on Windows and every session-opening command is refused up front with WSL guidance. The pane-less set still works, including rysh send, exec, prompt, list-sessions, install, eval and doctor against a session running in WSL. No timetable for a ConPTY implementation is given.

Comments

No comments yet. Be the first.

Join the conversation

Sign in with Google to leave a comment. Your name and avatar come from your Google profile, and the comment appears after moderation.

We only use your name and avatar from Google. We never store your email address.