You're not alone - I also revolted against the TUI crowd and created my own GUI-centric harness juggler (https://github.com/juggler-ai/juggler). Might be up your street. If you're not too involved in your own project, maybe help out on mine :)
Honestly, I just don't get the TUI obsession, other than the fact that people are multiplexing many remote sessions over ssh. So my aim with juggler was to have an architecture that could do all the multi-client remote sessions with a GUI/websockets/Y.js sync etc.
> I just don't get the TUI obsession
TUIs can be run on minimal VMs that lack window systems. Using minimal VMs rather than heavyweight VMs allows a dev to run more VMs.
Do you not sandbox agents on VMs?
You could separate the backend and frontend, run the backend on a minimal vm, then connect to it from the frontend.
Ha, your columns look a lot like why I made my own as well - https://github.com/chicagobuss/crusteo
I loved the utility of paseo but like the OP didn't want to build on web frameworks, so I re-wrote all of it in rust with zed's ui framework for the frontend desktop client.
More on my personal blog about it here: https://chicagobuss.dev/blog/my-setup/
Hi, I tried Juggler a few months back, and while it's technically impressive as a one-person product, I found it super stressful to use. It emits so much output and activity, in various nested forms.
Where Claude Code and Codex have made progress recently, I feel, is with sharpening the interactivity. For example, Codex will emit a lightweight ream of "thinking", then on completion it will erase this and only show the final, coherent answer. It doesn't show much detail about which commands it runs, either. You can still drill into that, but it's usually the least important thing. Claude also does sub/side-sessions that can talk to the other sessions. So if a session finds an unrelated, pre-existing bug, it can start an adjacent session for the bug fix, and keep abreast on when the fix lands. If you start a side session to do research, it can message the other session with new findings.
I don't know if Juggler is still like it was, but I strongly recommend making it less verbose. I just couldn't deal with the noise.
Thanks - that's really interesting feedback!
I guess my schtick with it has always been that I wanted to see all the hidden stuff that claude and others try to hide away inside their "made a bunch of tool calls" type opaque messages. And I've heard from other people who appreciate it for that reason, but really interesting to hear that you found it stressful! I'll definitely go away and have a think about that.
I did add a feature a few weeks ago which lets you toggle whether it folds groups of commands into a single summary item (in juggler style the column view works really well here because you can still browse into those groups and see the tool calls if you want). I've found myself not using that mode because I like to see all the detail, but your comment makes me wonder if that should be the default, and if maybe I should add other "less detail" modes.
People work in different ways, of course. From my perspective, agents have gotten so good that there is no reason whatsoever to look at what they are doing while they're doing it.
I think we are moving in the direction where agents work a lot more autonomously. Most of my work these days is done by cooperative teams of remote, autonomous agents. They can work for hours and periodically reach out to humans with questions and updates. But there's rarely any point in looking at their work (mostly diagnostic or auditing purposes). So for me, at least, the days of staring at the agent's output are long gone.
But I still use local harnesses for some tasks, and I'm not happy with OpenCode's desktop app. I'd be nice to have a viable alternative.
Thanks Julian, I just checked it and it looks lovely and ticks quite a few of the boxes in my mental model. I will clone and dig in.
Also, I don't remember how but I have heard of JUCE before and I immediately recognized it even though I have never used it. I think I spend too much time on github :D
Using TUI is also architecturally simpler. I don't want to rely upon third-party mappings of the CLI/MCP to the GUI, which are potentially incomplete or buggy.
If you think those are buggy, you should see the first-party mappings of the CLI to the GUI!
I was doing dark magic on my Linux distro the other day and borked it terribly. I had no desktop. I knew my system would reboot. But I was able to get into a TTY and, from there, I was able to run OpenCode. With a little AI help, I get my desktop back and fully recovered. I did not even have to reboot.