Jai.

A terminal multiplexer written in Rust, built for running several coding agents at once. Jai keeps your shells alive like tmux does, and adds a sidebar that shows which of your coding agents are working, waiting for you or done. It works with Claude Code, Codex, OpenCode, Pi and Grok.

One session, many agents

See which agent
needs you next.

Jai finds the agents in your windows, groups them by project and lets them send each other messages.

01 / Agent sidebar

Agents, grouped by project.

Start an agent the way you always do and it appears in the sidebar under its project, showing whether it is working, waiting for an answer or done. prefix a takes you to the next agent that needs you, and a desktop notification tells you when one does. See supported agents.

jai agentsstate · project
$ jai agents
NAME         WINDOW  AGENT   STATE        QUEUED  PROJECT      BRANCH
site-claude  1       claude  working      0       public_html  master
jai-claude   2       claude  needs-input  0       jai          main
jai-codex    3       codex   idle         1       jai          review
02 / Start agents

A new agent, one command away.

jai new opens a window running an agent in your current directory, gives it a name and prints it, ready for jai send. Add --on to start it on another machine.

shelljai new
$ jai new claude
started jai-claude (window 2)
$ jai new codex --name reviewer
started reviewer (window 3)
$ jai new pi --on gpu-box
started public_html-pi on gpu-box
03 / Messages

Agents that talk to each other.

jai send hands a message to an agent as soon as it is free. The message says who sent it and how to reply, so agents can work things out between themselves.

shelljai send
# from inside the jai-claude window
$ jai send jai-codex "Review the diff on main"

# what jai-codex receives
[jai] Message from agent 'jai-claude' (another
agent, not the user). Reply with:
jai send jai-claude "<message>"
Review the diff on main
04 / Other machines

Remote windows, in the same sidebar.

jai connect shows another machine's windows and agents next to your local ones, over ssh. Machines are remembered and reconnect by themselves.

shellconnect · hosts
$ jai connect gpu-box
$ jai connect build.lan ~/bin/jai
$ jai hosts
# saved in ~/.config/jai/hosts

For Linux on x86_64, macOS on Apple silicon and Windows on x86_64. Once installed, jai update keeps it current.

# Linux and macOS
curl -fsSL https://michael.sinax.be/jai/releases/install.sh | sh

# Windows (PowerShell)
irm https://michael.sinax.be/jai/releases/install.ps1 | iex

Documentation

Read the docs →

Installing and updating, commands and keys, supported agents, starting agents, notifications, window names, messages, other machines and scrollback.

The project

I built Jai because I kept losing track of which of my agent sessions was waiting on me. It handles the usual multiplexer work (detaching, windows, scrollback) and adds the agent-specific features on top.

Implementation
Rust
Platform
Linux, macOS, Windows
Version
0.1.4
Status
In development