This is awesome! I was thinking it would be neat to have something like abduco but on a more reliable foundation, like libghostty-vt.
For my agent management scripts I use zellij since it is more ergonomic than tmux. Abduco sounded good in principle, but implementation is too limited. However, zellij is quite huge in the order of tens of thousands LOC and I am using only small part of it. It looks like zmx might implement just the right amount of features for this use case, I am going to try it. It is always nice to achieve same functionality with leaner tools.
Do you also think about dvtm part alternative? I wonder if once libghostty proper gets finished it would open possibility to level up textual multiplexing and unlock some cool features with graphical UIs.
I have thought about writing a separate tool that resembles dvtm but I’m not exactly sure how I would build it.
I don’t want to maintain a monster project like terminal multiplexing. Zmx is basically a single file with 1500 LoC and is “production grade” with just a few quirks I haven’t figure out yet.
I would want something of similar scope.
With zmx I created two commands you might be interested in: zmx run and zmx history. Run lets your execute commands inside the PTY and history lets you read from the session history.
What do you mean by snapshots? There’s a “zmx history” command which will print whatever is stored in libghostty as plain text, or with ansi escape codes, or even html
I'm rendering a few dozen terminals in a website, and for all of the inactive ones i render and serve a jpg of the "current screen" of ansi escape codes from kitty.
I've found this to be a difficult thing to get. abduco doesn't have current state, and I dont want all of the complexity of tmux. I also don't want the entire scrollback history (until i click into a given terminal and connect with xterm).
Works pretty well if you don’t need a window manager in your terminal