Terminal multiplexer
Workspaces, tiling splits, draggable dividers, drag-and-drop panes, workspace colors. xterm.js with Bun.spawn PTYs — no node-pty.
I liked cmux. I love vibe coding.
So I tried to make a vibe-coded clone —
as professional as vibe coding can get.
”Just a personal project.”
τ-mux is a desktop terminal emulator that keeps the PTY text layer untouched while layering floating canvases, live process telemetry, and structured channels for scripts on top of it. It is keyboard-driven, mouse-friendly, and entirely scriptable from the shell via the ht CLI.
Terminal multiplexer
Workspaces, tiling splits, draggable dividers, drag-and-drop panes, workspace colors. xterm.js with Bun.spawn PTYs — no node-pty.
Canvas panels
Floating SVG, HTML, image, and canvas2d overlays driven by extra file descriptors (fd 3/4/5). Independent DOM elements — draggable, resizable, interactive.
Live process metadata
A 1 Hz observer built on libSystem (sysctl + proc_pidinfo, ~2 ms/tick) surfaces cwd, ports, CPU%, RSS, and full argv for every descendant of every shell — falling back to ps/lsof if the kernel ABI ever shifts. Chips, sidebar, and CLI all feed from one pipeline.
`ht` CLI
Spawn panes, send keys, manipulate layouts, open ports in a browser, send signals, inspect trees. Ships as a standalone binary inside the .app.
Built-in browser
WebKit panes alongside terminals with ⌘⇧L. Address bar, smart URL detection, and 40+ scriptable commands via ht browser.
Web mirror
The entire native UI mirrored over WebSocket to anything on the LAN. Token auth, origin checks, resume-on-reconnect.
Claude Code, deeply integrated
Live session phase, cost, context and rate limits in the sidebar; permission prompts answered from a modal, from Telegram, or automatically; the native task list mirrored into the plan panel; and a first-class Claude Code pane.
Coding-agent panes
The pi agent and Claude Code run as real panes — amber identity, streamed transcripts, tool cards, approvals — beside your shells.
Extension apps
A Bun backend plus a Vite frontend in an iframe, driving every τ-mux control surface through a typed SDK. Fully trusted code — install what you would pipe to a shell.
Telegram bridge
A chat pane, notification forwarding, and answer-from-your-phone ask-user prompts, with a SQLite log and a fail-closed allowlist.
Editor & file explorer
CodeMirror editor panes and an inline file tree on the workspace card.
Install τ-mux
Learn the architecture
Drive it from a shell
Render structured content
Bun.spawn with terminal option (no node-pty)ps + lsof fallback (no tmux, no shell integration)License: MIT.