It has been a short cycle this time. One feature, the one the last post ended on.
Landing: https://umux.pages.dev
GitHub: https://github.com/CrystalPlatforms/umux
umux is a free, open-source terminal workspace manager for Linux, Windows and macOS. One workspace per project, tabs inside it, every tab splitting into as many panels as you need. The idea the app is built around: umux reads the completion signals that AI CLIs emit when a long task finishes, and turns them into a desktop notification.
v1.7.0 moved the sessions out of the window: a daemon owns them, so closing the app no longer ends the work. One hole stayed open. The OS itself could still end everything, because a machine that falls asleep takes its agents with it. v1.7.5 closes that hole. The switch is umux Core, the Always-On device. The name used to belong to the daemon in its early days; the daemon is Storestation now, and the feature took the name back.
The switch
Core lives in Settings, off by default, and off means exactly what it meant before. Switch it on and the daemon holds the machine awake. The screen may still sleep and lock. Locking a screen stops nothing, so what stays up is the machine: the enemy is the suspend, and the suspend is what killed the agent.
The daemon is the same one that already owns the sessions, and that choice is the feature. A hold owned by the app would die with the windows, and the whole point is windows being closed. Owned by the daemon, it survives every window closing, comes back on its own after a restart, and needs no app anywhere in the loop.
What each system admits
This is the part I care about most. A sleep-blocker that does its job in silence is worse than no switch at all, because you plan an evening around a promise that was never made. So every limit ships in words, in Settings and in umux status --json, on every platform.
On macOS the hold is the strong kind: machine up, lid closed included, while plugged in. On battery the system may refuse it, so umux says exactly that. On Windows the hold stops idle sleep; the lid-close action belongs to the power plan, a system setting an app has no business rewriting, so umux shows you where it lives instead. Linux is the same shape: the session inhibitor stops idle suspend, the lid stays the system's own business, and status says so. Three platforms, three different refusals.
One rule carries all of it: when the promise has a hole, umux names the hole.
The hold dies with its holder
The block is not a flag parked somewhere in the system. It lives inside the daemon's process, so ending that process ends it. Toggle Core off and it releases. Stop the daemon and it releases too. Kill the process outright and the OS takes the hold back on its own, because there was never a second copy of it anywhere. There is no path to a machine kept awake by a ghost.
Shipping
It rides in the five regular installers: the .deb, the .AppImage, the .rpm, the NSIS installer and the universal .dmg. Switching Core on never means a second download, and an app update replaces it together with the app. Free, MIT, no accounts.
The honest list
macOS on battery is best effort: plug in for the real promise. The lid on Windows and Linux stays the system's setting, and umux points at it rather than touching it. Import from cmux still does not work on Windows. X11 sessions are untested; Wayland is the reference.
Landing: https://umux.pages.dev
GitHub: https://github.com/CrystalPlatforms/umux
Top comments (0)