Show HN: Rmux – A programmable terminal multiplexer with a Playwright-style SDK (github.com)
132 points by shideneyu 6 hours ago
Author here. RMUX started from a frustration: I've used tmux for years and got tired of scraping output with grep and sleeps to automate anything. So I rebuilt the multiplexer from scratch in Rust, with a programmable layer on top.
Two surfaces: a tmux-compatible CLI (~90 commands, your keybindings just work), and a typed async Rust SDK on the same daemon — stable pane IDs, structured snapshots, locator-style waits. The idea is Playwright-style automation, but for terminals.
Native on Linux, macOS, Windows (real ConPTY, no WSL).
Demos and docs at rmux.io. Happy to answer questions about the daemon protocol, ConPTY, or the SDK design.
eddyaipt 3 hours ago
The Playwright-style snapshot/wait layer is the interesting part to me. A lot of agent terminal automation still breaks because the tool can send keys but can't prove which pane or terminal state it actually reached. Stable pane IDs plus explicit waits should make replay and debugging much saner than the usual grep+sleep loops.
shideneyu 44 minutes ago
Yes exactly. And it enables integration testing too. I hope it will foster the release of more cool TUIs.
pama 4 hours ago
Congrats on the launch. If emacs was unavailable and I needed tmux, I would try it. I am old school, and use emacs daemons for all shell multiplexing. The agents dont need explanations and know how to use emacsclient to create, read, or send inputs to named buffers that run the shells. Elisp is powerful, so manipulating windows is a breeze. Lots of people on tmux would benefit from this design though.
sroerick 2 hours ago
I didn't know you could do this with Emacs
scottyeager an hour ago
It's just too bad Emacs doesn't also include a decent text editor, right?
florianist 5 hours ago
The paragraph on the website inviting us to switch to rmux from tmux claims that tmux is programmed in C++. tmux is made in C.
shideneyu 5 hours ago
wupsy ! thanks, I just fixed it
kloud 4 hours ago
Cool project, I like the idea of having tmux-compatible CLI. I used Zellij to get better UX, but many agent tools integrate with tmux. This way agent tools can still integrate tmux as a defacto standard for programmatic interface while having better interface for users.
But I wonder if tmux/rmux design is suboptimal since it couples session persistence and window management together. Do you have an opinion the design which separates the responsibilities? An example that pioneered this approach is abduco, and libghostty-based zmx being a modern implementation.
shideneyu 4 hours ago
I thought I was too zealous because I created 11 crates respecting single responsibility principles.. I would have been all in to risk it further and separating responsibilities for session and window management but it would have diverged too much from tmux. I wanted a 1-1 port for now
kloud 3 hours ago
Fair point, given it is more unconventional design, it is a riskier way in order to get something that works.
btown 3 hours ago
Very cool! I think the hype around “agents are so good that you never actually need to see the underlying commands they are running or interact with the terminal session that they’re running” misses out on a lot of very important use cases, particularly around long running processes that may be shared across multiple agents. This will be very cool to see how best practices evolve!
shideneyu 3 hours ago
Same ! TUI are becoming more and more mainstream so there is a need for automated multiplexing , not used by humans but by programs (and agents)
Sirental 6 hours ago
The website is a little too obviously made by Claude. The first thing I noticed is the classic "pill with pulsing green dot that says something is active or live" claudism.
shideneyu 6 hours ago
The video of the front page is assisted by AI, I am not a vfx artist; please check rmux code architecture instead, I put a lot of efforts on it
saghm 2 hours ago
FWIW, I did suspect AI was probably used when looking through the README, but it also didn't really impact my opinion much because the value proposition of "I can use a Rust library to control this through the same primitives the tool itself uses instead of writing a bunch of shell scripts" far outweighs that. I haven't had a chance to try it out yet but plan to later today, and ultimately the experience I have is going to matter a lot more to me than what tools you used to generate the README visuals.
I've tried out plenty of things that seemed promising but turned out to have sloppy implementations before the LLM days, and I've also used some things that are ostensibly vibe-coded but had shockingly high quality of UX compared to the alternatives because the creators put in time and effort into polish beyond what people who make software the "traditional" way tend to, so to me, the important signal is what level of care went into the creation of the software. I'm hoping that this project turns out to be one of the good ones, and if it is, the people who dismiss it because of vibes (pun intended) will be the ones missing out.
powvans 2 hours ago
For what it's worth I genuinely loved your landing page. I casually clicked through and got an immediate unexpected chuckle at the giant animated crab.
It's obviously AI assisted but I interpreted it as a nod to itself on that and really appreciated it.
shideneyu 2 hours ago
ookblah 5 hours ago
"site made by ai" is the new "bootstrap template" criticism that honestly gets tiring after a while. just read the content.
shideneyu 43 minutes ago
And the site is actually quite cool I believe , I put a lot of efforts in the design.
redrove 6 hours ago
I’m genuinely interested in what you find to be the problem with that?
It’s a landing page.
cultofmetatron 5 hours ago
commonlisp (sbcl) is one of the best sleeper techs out there. one of those if you're in the know type industry secrets. part of it is because their website looks like something out of the 90's. clearly having a nice website and some level of marketing is necessary to get adoption. Im more than happy to see devs use AI to automate that so they have more time to focus on their creations.
alcasa 5 hours ago
Isn't lisp getting advertisement every couple months here or so. After so many decades I don't believe the reason lisp doesn't have traction is just marketing.
saghm 2 hours ago
Oras 5 hours ago
and why this is a problem? I found the landing page covering exactly what the product does, with nice demos and examples.
stefanfisk 5 hours ago
Not to mention those absolutely horrible scroll animations.
shideneyu 5 hours ago
you don't like parallax effects ? maybe I'm too 2010 for you
backwardsponcho 2 hours ago
perseusai 2 hours ago
As someone new to this site, I understand wanting to keep the AI Slop at bay, but for some of us, it's been a boon to get our ideas into an actual working application. I have decades of IT/Network/Enterprise experience, but creating and writing a complex tool would have been well beyond my abilities or patience. I had a friend say that AI is a "scourge on the intellectually lazy" and I couldn't really refute that, but I had to add that it is a boon to a lazy intellectual, which I consider myself to be.
jarym 5 hours ago
So?
shideneyu 5 hours ago
@jarym what don't you like with the homepage ? I am curious how I can improve
FergusArgyll 4 hours ago
joch an hour ago
Very nice!
I created `ygg`[0] a while back to easily spawn a new worktree when working with Claude/codex, and it also spawns that in a dedicated zellij tab. I think making the terminal multiplexer pluggable, so it would be easy to integrate something like this.
cultofmetatron 6 hours ago
a week ago I was using cmux but its osx only and doen't work on remote terminals. then I switched to herdr which is great so far except its not s great at managing panes. I can't move them around or change ordering. now another terminal multiplexer. I'm getting whiplash.
all that said, none of the existing solutions are perfect and rust codebases are nice. how easy is it to reorder panes? is there a cli that lets me control the panel layout via a skill file and allow my opencode session to target and send data to other panes?
qudat 4 hours ago
I built https://zmx.sh to make it easier to interact with your terminal sessions programmatically. 1 window = 1 session which might feel like a negative but it makes programmatic access easy and agents can use it just by pointing it at the zmx help command. Basically, an agent just needs 2 commands (run and write) for full control and the commands are synchronous so you don’t need to do any polling.
Oras 5 hours ago
I started using cmux a month ago and it had made my life a lot easier. Finally I have a pane with all my projects open all the time, I can switch between them, have multiple terminals for each one.
What do you mean by remote terminals?
cultofmetatron 5 hours ago
my plan is to eventually move my entire workflow to a remote workmachine over ssh. with kernal, I can automate all my smoketests entirely from a headless machine rendering my laptop overkill to run agentic workflows. I'd rather be using it to watch movies, learn new stuff or hand code in my downtime. if your workflow requires cmux, you're stuck running your agents on your local machine.
To be clear, That doesn't make cmux bad. if you WANT to do everythign on your mac, cmux is fantastic. its just not designed with the remote ssh control use case in mind.
lawrencechen 4 hours ago
shideneyu 5 hours ago
no skill file, you get the same 90 commands of tmux. and if you build a rust app you can have many more cool stuff like "wait for" some text to appear, asyncly
cultofmetatron 5 hours ago
well it looks great so far but Its a no go for me for now until you have at least a cli that a coding harness can use to drive it. thats going to be the killer feature going forward for all these multiplexers. last week I vibecoded a plugin that lets me open a line specific input box that sends the context of my code along with my prompt into my opencode session running on a seperate pane. its a game changer when it comes to moving faster.
excited to check back in on the progress as you work on it though! I think these kinds of tools are going to be much more relevant going forward as we all move to agentic workflows.
shideneyu 5 hours ago
0x1ceb00da 4 hours ago
Getting this error when installing from git bash:
$ curl -fsSL https://rmux.io/install.sh | sh rmux install: unsupported OS: MINGW64_NT-10.0-26200
luizfwolf 6 hours ago
I found the project quite interesting but what's the advantage over just using tmux with a hotkey to send keys?
saghm 2 hours ago
Writing shell scripts to orchestrate things is not a particularly great experience. "Shell scripts are annoying to write compared to the programming languages we use for other things" isn't a universal opinion, but it's not exactly uncommon; I've heard plenty of people talk about switching to Python as soon as anything gets even moderately complex. (I often tend to go with the lines "my bar for when to switch to a real programming language is as soon as I have to write an if statement" and "the number of times I've had to write a for loop in bash is the same as the number of times I've had to google the syntax for a for loop in bash", which are only slight exaggerations). Having an actual library for interactions that isn't just a wrapper around the CLI seems like it would be a huge improvement for anything that isn't a one-off interaction.
shideneyu 5 hours ago
windows support, and the sdk. native async "wait until" something appears on your terminal, so you don't spam send-keys
notorandit 4 hours ago
Scriptable terminal multiplexer?
Interesting portable scripting thingy. But it would only work with portable tools, not just everything. Especially with Windows tools.
shideneyu 4 hours ago
I wrote it for rust apps in mind, same usecase as for Ratatui. You’re right maybe I need to expose more tools with the cli
cat-whisperer 4 hours ago
I used to use ghostty's applescript and built that into a claude skill. It worked like a charm. But this feels super interesting for programmability
kosolam 6 hours ago
Hey, I automate tmux all the time with send keys and capture.. how is your project improves vs tmux or zellij?
shideneyu 5 hours ago
rmux is much faster than tmux or zellj, I did some internal benchmark and it's promising. rmux is a multiplexer engine, meaning that you can rewrite entirely zellij using rmux.. I created a mini zellij in a few hundred lines of rust. You can check the demoes on the repo
kosolam 5 hours ago
But wait, I’m a user of tmux or zellij which for me was basically another tmux and I went back to tmux eventually. I’m not looking to develop another tmux or something. Is this project more of a library to create tmux like apps?
shideneyu 5 hours ago
Galanwe 5 hours ago
I don't get it as well, everything mentioned in the readme is already trivially possible with tmux or zellij
shideneyu 5 hours ago
windows support + async + public sdk. You can rewrite zellij with rmux, but not the opposite. rmux is a multiplexer engine
noodletheworld 6 hours ago
I mean, the obvious immediate answer is “windows”, which tmux flat out doesn't support (except via WSL and a shared mount).
small_model 6 hours ago
Never had the need to do playwright automation for tmux, so not sure why I would use this above tmux which works well.
shideneyu 6 hours ago
with rmux you can finally do acceptance/integration tests on your terminal user interfaces. tmux is made for humans, rmux is made for both humans and machines
yes_but_no 4 hours ago
Floating panes seems not possible, or are they?
shideneyu 4 hours ago
Not part of the current version, it’s on my roadmap :)
DeathArrow 4 hours ago
1. ask Claude to rewrite X in Rust
2. ask Claude to make a website and claim R is better than X because it's Rust
3. advertise on HN, X and Reddit
4. ???
5. profit!
miroljub 4 hours ago
If the tokens are already burned, it's better for the environment to share the result for everyone to use it.
elromulous 5 hours ago
Can someone describe the pros/cons vs zellij?
shideneyu 5 hours ago
You can rewrite Zellij entirely with rmux , that's the main difference. I put a demo on the repo. Because rmux is an engine. I wrote it to be the multiplexer of multiplexers