Skip to content

Latest commit

 

History

243 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatMux — every coding agent, one command deck: Oh My OpenAgent, Codex, Claude, Gajae Code, Cursor, OpenCode, and Oh My Pi sessions multiplexed into one self-hosted interface

English · 한국어 · 日本語 · 简体中文

One interface for Claude Code, Codex, OpenCode, and more —
already running in your tmux.

GitHub release AGPL-3.0 license Supported Node versions tmux runtime

You run coding agents — Oh My OpenAgent, Gajae Code, Claude Code, Codex, Cursor CLI, OpenCode, Oh My Pi — inside tmux, like always. ChatMux finds them by itself and shows every session in one browser page, from your desktop or your phone.

  • Zero registration: Agents already running in tmux just appear in the sidebar. Nothing to wrap, wire, or restart.
  • Multi-provider: Every provider in a single drag-sortable list, with RUN, READY, and ERROR badges for live state.
  • Chat or terminal: Recognized transcripts read as conversations; everything else is a real attached terminal. Input only ever reaches a pane whose identity ChatMux has verified.
  • Phone-ready: Installable PWA over Tailscale or a LAN password — the full roster, conversations, and the real TUI with a key bar.
  • tmux stays the boss: Restart or remove ChatMux any time; your tmux sessions keep running untouched.

ChatMux does not bundle any AI subscription. Install and log in to each agent CLI as the same OS user that runs ChatMux.

Getting started

curl -fsSL https://github.com/devswha/chatmux/releases/latest/download/install.sh | bash

Requires Linux x86_64 (glibc 2.35+) with tmux, user-level systemd, and curl/tar/sha256sum.

The installer downloads the canonical release archive, verifies its SHA-256, starts a user-level service, and prints your addresses — plus a QR code for the phone. chatmux status shows them again any time.

install.sh output: download and verification, the local and Tailscale phone addresses, and a QR code to open ChatMux on the phone

Pinned versions, access modes, updates, rollback, and recovery are covered in the installation guide.

In the browser

Open the printed Local address — running tmux agents appear in the sidebar by themselves. Sessions with a recognized transcript render as a structured conversation with a composer:

ChatMux on desktop: the sidebar shows seven live coding agents, with Oh My OpenAgent first, followed by GJC, Codex, Claude, Cursor, OpenCode, and Oh My Pi, each with RUN or READY status

The CLI output tab of the same session is the real TUI running inside tmux, rendered in the browser — answer menu prompts, watch raw output, or take over with real keystrokes:

The CLI output tab of the same session: the real Codex TUI running inside tmux, rendered in the browser

On the phone

Turn on Tailscale on the phone, scan the QR code from the install output, and use the in-app Install app button to keep ChatMux as a PWA:

Mobile sidebar showing seven live coding agents, with OMO first, activity badges, and drag handles
The full session roster
Mobile conversation view showing a real prompt and response from a Codex session
Conversation view
Mobile CLI output view showing the same real conversation in the Codex TUI with the terminal key bar
Real TUI with a key bar

Agent support

All listed agents are discovered automatically, accept direct input, and can be launched from ChatMux. Indexed histories render as conversations; live CLI output is always available.

Agent Chat view
Claude Code After history is indexed
Codex CLI After history is indexed
Cursor CLI After history is indexed
OpenCode After history is indexed
Oh My OpenAgent (omo) After history is indexed
Oh My Pi After history is indexed
Gajae Code (GJC) Native

SSH tmux and local shells are also supported as terminal-only connections.

Cursor sessions use the documented agent command; the legacy cursor-agent alias remains supported for older installations.

Remote access

With Tailscale logged in, the installer configures Tailscale Serve automatically: approved tailnet accounts use the private HTTPS address with no separate password, and everyone else is denied. Without Tailscale, installation enables password access on the LAN with a one-time owner password:

chatmux access password             # rotate/recover (signs out all sessions)
chatmux access enable tailscale     # switch modes after Tailscale is available

User allowlists, longer sessions, VPN mode, SSH tunnels, and public TLS options are covered in the remote access guide.

CLI

The chatmux command manages the installed service:

chatmux status                  # version, addresses, data locations
chatmux access users            # allowed Tailscale accounts
chatmux access allow user@example.com
chatmux sandbox ~/my-project    # run inside a Docker sandbox

Security and data boundaries

  • ChatMux links tmux process ancestry to native transcript identifiers. A matching working directory alone is never enough to authorize a destructive action, and the tmux session identifier is rechecked before relay or termination.
  • The backend binds to loopback. Tailscale mode trusts Serve identity headers only from loopback on the expected HTTPS origin; the installer never enables Funnel or a public listener, and unapproved users fail closed.
  • Password mode uses HttpOnly, SameSite=Strict cookies with persistent logout revocation.
  • State and indexes live below ~/.chatmux. Back up ~/.chatmux/data before migration or upgrade.

Development

git clone https://github.com/devswha/chatmux.git
cd chatmux
npm ci
npm run dev

Open http://127.0.0.1:5173. Development requires Node.js 22.22.2+ on the 22.x line or 24.15.0+ on the 24.x line, npm, Git, tmux, and Rust 1.85+. npm run verify runs the full release gate: audit, typecheck, Rust checks, tests, lint, identity checks, and a production build.

Documentation

License

AGPL-3.0 · built for people who live in tmux

About

ChatMux — provider-agnostic tmux chat web-terminal for coding agents (GJC/Codex/Claude/Cursor/OpenCode)

Resources

Contributing

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages