{"slug": "i-m-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era", "title": "I'm building Kumo, a terminal multiplexer for the AI agent era", "summary": "A developer has built Kumo, an open-source terminal multiplexer written in Rust and designed specifically for managing AI coding agents. The tool features a sidebar that lists running agents with status indicators, native text selection via a custom VT emulator, and audio alerts when agents block or finish. The project aims to provide a familiar terminal experience similar to Ghostty plus tmux while adding agent-specific workflow enhancements.", "body_md": "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.\n\nI work with AI agents a lot. `opencode`\n\n, `claude`\n\n, tried `qwen`\n\n. I'd have a couple of them working on different parts of a problem, and there was no easy way to keep an eye on them all. Are they still running? Blocked waiting for my approval? Finished?\n\nI was switching between windows, squinting at terminals, losing track of who was doing what.\n\nSo I built one.\n\nTo be fair, the multiplexer space is in great shape right now. There's **herdr**, **cmux**, **amux**, and friends, plus classics like tmux and zellij that people swear by. And then there's [superlogical](https://www.superlogical.com/), Mitchell Hashimoto's new company — the same Mitchell who made Ghostty. I'm a fan of their work.\n\nI've tried a bunch of these and they're all good at what they do. It's just that I never felt 100% at home with them — none of them gave me that *feeling* I get from my own setup of **Ghostty + tmux + LazyVim**. That combo just feels like *my* terminal, you know? Warm, familiar, exactly where I want things to be.\n\nSo Kumo wasn't born as a \"better tmux.\" It started as an attempt to get that same familiar feeling, plus a couple of things I wished existed. A few design choices I ended up caring a lot about:\n\nQuick primer: by \"agents\" I mean AI coding agents — the CLIs you run in a terminal, like `opencode`\n\nor `claude`\n\n, that edit files, run commands, and every so often *stop* to ask permission before doing something. That's what \"blocked\" means here.\n\nThe basics are all there: split panes, sessions, tabs, real text selection. But the heart of it is the **sidebar**, which lists every running agent with its workspace and a status dot:\n\nWhen an agent blocks or finishes, Kumo pings you with a sound — a distinct chime for each. Blocked agents float to the top and their pane glows orange, so you only get pulled in when you're actually needed.\n\nI didn't want to fake the terminal. Each pane is a genuine VT/xterm emulator powered by **libghostty-vt** — Ghostty's headless terminal core, vendored and compiled at build time. Shells, TUIs, full-screen apps behave exactly like in a native terminal. With **portable-pty** on the PTY side, drag-to-select works even inside apps that own the mouse, like opencode's own TUI or vim.\n\nIt's one Rust binary, one TUI on **ratatui**.\n\nHere's the weirdest rabbit hole of the whole project — and honestly, the biggest pain in my ass. Real terminals have a quiet war going on over your mouse. Apps can enable something called **mouse reporting** — when they do, they own the mouse. Drags are meant for *their* text selection, not yours. It's why selecting text in `vim`\n\nor `less`\n\nfeels different from selecting it in a plain shell.\n\nI wanted native selection everywhere: drag, select, copy on release, like a real terminal. So Kumo does both:\n\nAnd the sneaky trick that makes it all work: panes present themselves as plain `xterm-256color`\n\n, advertising **no mouse capabilities** at all (a tiny custom responder). So apps don't hijack your mouse unless they really need it, and native selection just works.\n\nThe bugs were fun too. Forwarded mouse events kept arriving with a trailing reset escape that apps would choke on — one character to fix, one afternoon to find. And selection was being read from a stale cached view instead of a fresh viewport snapshot, so the highlight wouldn't hug the text like a real terminal. Little things like that, but each one taught me something about how terminals actually think.\n\nHonestly? A big chunk of this was vibe-coded — me describing what I wanted to DeepSeek V4 Flash and reading every line it produced as it went. But the real goal was never the product. It was learning:\n\n`SIGWINCH`\n\n— building Kumo meant touching all of it.That's the middle ground I've settled into: not trusting it blindly, not writing every byte by hand. Enough understanding to review, enough trust to let it write the first draft.\n\nBut the main idea is done: a product I feel comfortable using every day, and a way to keep learning while I develop it. That's the whole point for me.\n\nIt's early days and very opinionated. Right now opencode and claude have full lifecycle detection; other agents are auto-detected but shown as idle. Keybindings are hard-coded (remapping is on the roadmap), and a detach/re-attach server is coming.\n\nIf that sounds interesting, check out the repo at [github.com/marcrdgz/kumo](https://github.com/marcrdgz/kumo).\n\nI'm sharing this because building it has been genuinely fun, and I'd love for you to try it too.", "url": "https://wpnews.pro/news/i-m-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era", "canonical_source": "https://dev.to/marcrdgz/im-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era-383e", "published_at": "2026-08-10 20:38:06+00:00", "updated_at": "2026-08-10 20:47:07.550180+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-products"], "entities": ["Kumo", "Ghostty", "tmux", "LazyVim", "opencode", "claude", "DeepSeek V4 Flash", "Mitchell Hashimoto"], "alternates": {"html": "https://wpnews.pro/news/i-m-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era", "markdown": "https://wpnews.pro/news/i-m-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era.md", "text": "https://wpnews.pro/news/i-m-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era.txt", "jsonld": "https://wpnews.pro/news/i-m-building-kumo-a-terminal-multiplexer-for-the-ai-agent-era.jsonld"}}