I'm building Kumo, a terminal multiplexer for the AI agent era
Hey! I've been building something in Rust these past few weeks and I wanted to share it. It's called Kumo — that's 蜘蛛, spider in Japanese — and it's a terminal multiplexer built around AI agents. The problem I kept running into I work with AI agents a lot. opencode , claude , tried qwen . I'd have a couple of them working on different parts of a problem, and there was no easy way to keep an eye…
I've been working on building Kumo, a terminal multiplexer, for the AI agent era. Kumo is a Rust-based tool designed to help manage multiple AI agents working on different parts of a problem. The problem I faced was that there was no easy way to keep track of the status of these agents. Some were still running, others were waiting for approval, and some were finished. This led me to create Kumo to provide a better user experience.
There are several other terminal multiplexers available, such as herdr, cmux, amux, tmux, and zellij. However, none of them provided me with the same feeling I get from my own setup of Ghostty + tmux + LazyVim. That setup feels like my terminal, warm and familiar, exactly as I want things to be. So, Kumo was not born as a "better tmux," but rather as an attempt to achieve that familiar feeling while incorporating a few things I wished existed.
Some of the design choices I focused on include usability similar to tmux, an actual UI for easy usage, good defaults that work out of the box, and a completely configurable tool. Kumo lives inside your terminal, which makes it lightweight, works anywhere, and allows you to keep everything in one simple terminal, such as Ghostty.
When using AI agents, I wanted to avoid faking the terminal experience. Each pane in Kumo is a genuine VT/xterm emulator powered by libghostty-vt, which is vendored and compiled at build time. This ensures that shells, TUIs, and full-screen apps behave exactly like in a native terminal. Additionally, Kumo uses portable-pty on the PTY side, allowing for drag-to-select functionality, even inside apps that own the mouse, like opencode's TUI or vim. This enables seamless text selection throughout the application.
One of the biggest challenges I faced was the mouse problem in real terminals. Apps can enable mouse reporting, which means they own the mouse and prevent native selection. To address this, Kumo presents panes as plain xterm-256color, advertising no mouse capabilities. This way, apps don't hijack your mouse unless they really need it, and native selection works as expected.
I also encountered issues with forwarded mouse events and selection being read from a stale cached view, which taught me more about how terminals function.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.