Prospero: A new coding harness for a more civilized age
Posted by fovc 1 day ago
Comments
Comment by brainless 1 day ago
I often want click a part of the wall of text (from agent) and search for related text, open them up on the side or so. I want to open a linked file. I want to answer multiple questions in an async manner, even come back and continue answering the next day.
There are many prompt level features I want too - orchestrate with subagents, but only the tasks I select - how do I select when there is no checkbox. Or maybe delegate a subagent to dig into (read only) one portion of the chat response. Maybe codify (write) only one task in a list of tasks. So many many other small things.
As a full-time user of coding agents, the TUI barely works for me. I think splitting text, searching in text, merging text are more important in agent driven development than ever before. It is all text, all the way. This is what I am building myself, with my own gui framework.
Comment by julesrms 1 day ago
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.
Comment by subsection1h 1 day ago
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?
Comment by atombender 1 day ago
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.
Comment by julesrms 23 hours ago
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.
Comment by atombender 15 hours ago
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.
Comment by brainless 1 day ago
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
Comment by chicagobuss 1 day ago
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/
Comment by natsucks 1 day ago
Comment by filoeleven 1 day ago
Comment by LeFantome 1 day ago
Comment by 0xcafefood 1 day ago
Comment by 34679 1 day ago
Comment by natebc 1 day ago
On looking at Prospero it's ... simpler than this is so maybe not robust enough for your wants.
Comment by johnny5211 1 day ago
Comment by brainless 1 day ago
Comment by flufluflufluffy 1 day ago
Comment by julesrms 1 day ago
Agent UIs are all markdown, HTML, big scrolling lists, text flow, unicode chars, and all the other stuff that C++ frameworks are terrible at, but which is a doddle in HTML/CSS/JS.. You are a brave man!
Comment by nico 1 day ago
This is very interesting. I know that coding string-related stuff with C/C++ can be incredibly tedious and error prone (even hard security-wise). But all the stuff in the web-related stacks/libraries in other languages, is either already somehow being transcompiled to C to execute, or could be relatively easily ported/reused by directing an LLM/agent to do it
Do you think that could work to make C/C++ better at this? What things would you import/copy from elsewhere?
Comment by julesrms 1 day ago
The hard bit is when you have complex, responsive layouts involving text. (And styling it)
Something seemingly trivial like an agent-style chat containing markdown text blocks, where it's expandable and smoothly scrollable is insanely difficult. The only frameworks that do this well are browsers, and the amount of horrible, horrible logic hidden inside them to make it look easy is hard to believe.
And since in many agents you're also going to want to display actual HTML, unless you're going to embed a browser engine in your C++ library, that's just not doable.
Comment by nico 1 day ago
> And since in many agents you're also going to want to display actual HTML, unless you're going to embed a browser engine in your C++ library, that's just not doable.
I guess this is the main issue. Either you end up reimplementing a browser (which will def have a ton of issues), or you embed a browser and you end up with bloat anyway
Comment by joshheitzman 1 day ago
Comment by joshheitzman 1 day ago
Comment by nico 1 day ago
Many times, while they are doing something, I’ll be typing a prompt, and then all of a sudden I get a question with Y/N options, and by accident, I’ll type Y/N as part of a word thus “answering the question”, many times either steering in the wrong direction or stopping the agent
Neither Claude code nor Codex solve this. The only way I’ve found to prevent it is to type somewhere else and then paste, but it’s super annoying
Edit: ^^ the above is especially annoying now that Codex popups the prompts/questions within other agents' sessions
Also, when I want two agents in different sessions to talk to each other, it’s kinda janky, I have to talk to both and act as a messenger for a couple of turns before they properly coordinate. I wish I could just sort of click somewhere, and link unlink two or more sessions
Does Próspero solve the things above?
Any pans for “swarm”/group control of agents?
Comment by plonq 1 day ago
Comment by conception 1 day ago
Comment by bel8 1 day ago
There's no question popup, when the LLM wants to ask me something it just asks and waits for my answer as the next prompt.
Comment by haukebri 1 day ago
Comment by contingencies 1 day ago
Comment by nico 1 day ago
Comment by sgt 1 day ago
Comment by nico 1 day ago
But I don’t think you have it always listening, you probably tab the space bar to talk and send a prompt, walkie-talkie style, push to talk
Comment by contingencies 22 hours ago
It depends what kind of work you are doing. It's certainly not quicker for general discourse, even if you are a fast typer.
Comment by OleksandrC 1 day ago
Comment by vunderba 1 day ago
Some feedback but it might be worth calling out how your harness differs from other relatively light-weight ones like Pi. I assume its got a much smaller memory footprint given yours is C versus Pi's. There are so many agentic harnesses out there that a comparison table might be a nice thing to have on the landind page.
Note: Just to be clear, I'm not accusing you of trying to hide it, given that the GitHub account for Hax is basically identical to your HN account.
Comment by OleksandrC 1 day ago
If you are familiar with pi, then some of the key features listed on the GitHub page (and website) already illustrate substantial differences: hax is much smaller in footprint (I wouldn't even call pi "light-weight", really - heavy js runtime with a lot of dependencies), hax preserves native terminal scrollback (pi uses alt-screen fullscreen, or clears in some cases in differential mode), hax uses normal XDG dirs (pi uses ~/.pi), hax is extended out-of-process (pi suggests in-process plugins).
There are other differences in presentation, and in features (for example, hax has background bash invocation out-of-the-box). Not practical to list all of them.
Comment by vunderba 1 day ago
And of course, “lightweight” does have a lot of interpretations where harnesses are concerned (memory footprint, binary size, performance, system prompt, etc).
Comment by sivers 1 day ago
Feels so much better, so lightweight. Compiles instantly. Almost no dependencies. Like something Suckless would make. And unlike all the rest, runs easily on OpenBSD.
And as minimal as it is, it even has nice features like showing me after every prompt how much that last task cost me.
When I saw the post here about a new coding harness, I clicked in thinking, "Could anything be better than Hax?" Still no.
Oleksandr, I'm a fan.
Comment by eleventen 1 day ago
Comment by ithkuil 1 day ago
Not a big deal since most of my sessions were parked so I just found a way to have them exit without losing the screen content (I took a screen dump from herdr) and a simple wrapper script that waits until hit enter to resume the session.
I don't _ have _ to switch to a lighter weight harness, but I'm not oblivious to memory usage
Comment by sidpan2011 1 day ago
Comment by OleksandrC 1 day ago
Even on 64 GB RAM machines you could easily get memory pressure on the system when trying to work with a chonky local model. Consider also resource-constrained cases like small VPS servers or SBC computers (like Raspberry Pi).
Ergonomics and features are included too here. The point is that these can coexist with small resource footprint.
Comment by bensyverson 1 day ago
Comment by Rabbit504030201 1 day ago
Do not worry about vendor lock-in. Standing against big corporations was never easier in this century.
Do it. You know you can.
Comment by bensyverson 1 day ago
Comment by whoanoway 1 day ago
Comment by fabioz 1 day ago
At least that's what I'm using in https://beolis.com (so, you can use the actual harness you like and just have a proper UI to manage agents over it).
Comment by bensyverson 1 day ago
Comment by KetoManx64 1 day ago
Comment by rendaw 1 day ago
This is what I'm doing too, and it's so much better. No more blocking copy/paste, no more stuck title bars, it actually sends notifications only when I need to give it input, it feels snappy, it doesn't destroy the scrollback buffer, messages are timestamped, I can copy my prompt out without spaces being added, it automatically bumps the agent to check when background processes run too long, and I added a sandbox that actually provides a modicum of security.
Comment by thekuanysh 1 day ago
Comment by mapontosevenths 1 day ago
AFAIK - Of the big three only OpenAI explicitly allows third party harnesses without paying exorbitant API rates. It's one of the primary reasons I still use them.
To avoid these problems some folks use tools like herdr which operate like tmux or via the SDK to drive the official harness, rather than speaking directly to the API routes.
Comment by fcarraldo 1 day ago
Comment by NorthSouthNorth 1 day ago
Comment by rbehrends 1 day ago
Whether and under what circumstances they actually enforce this these days, I do not know. Regardless, if your preferred harness does not support that authentication flow (which most don't), then it doesn't really help you even if you could. For what it's worth, I do not consider the Claude Code ACP adapter an adequate solution.
Comment by NorthSouthNorth 1 day ago
Comment by brandonhorst 1 day ago
Comment by shepherdjerred 1 day ago
Comment by thekuanysh 1 day ago
Comment by keyle 1 day ago
I did mine as well and that takes 4% the resources of opencode and in a similar tui style.
I think it's great and everyone should make their own.
Comment by netsroht 1 day ago
What's yours called? Is it also open source?
Comment by keyle 7 hours ago
note: not tested on linux yet.
Comment by netsroht 50 minutes ago
Comment by jbvlkt 1 day ago
Comment by rsolva 11 hours ago
Comment by eric15342335 1 day ago
Comment by x3haloed 1 day ago
But I don't like how opinionated it is: "Therefore Prospero prime design principle: Never wait forever. Every operation has a deadline. This decision influences everything."
I respect that opinion, but I don't share it, and therefore an entire coding harness developed around that opinion is not helpful for me.
Comment by zzunkie 1 day ago
Comment by gapo 1 day ago
Love to see such a strong tasteful take on software heralding back to the age of solid desktop apps.
Comment by ggsp 1 day ago
Comment by gapo 1 day ago
Comment by lowbloodsugar 1 day ago
Comment by gapo 1 day ago
Comment by shepherdjerred 1 day ago
But I will agree besides intentionally choosing C++ for a project presumably written by an agent, this project does look nice and thought out
Comment by thehamkercat 1 day ago
App-server protocol: https://learn.chatgpt.com/docs/app-server
Opencode: https://opencode.ai/docs/server/
Comment by mickeyp 1 day ago
GUI in your browser. Tiling window manager.
Comment by bigbuppo 1 day ago
Way to cause confusion.
This is like starting a new country and calling it France.
Comment by morbicer 15 hours ago
Comment by indigodaddy 1 day ago
Comment by bigbuppo 1 day ago
Comment by indigodaddy 1 day ago
Comment by saejox 1 day ago
Comment by sadilek 1 day ago
Comment by Surac 16 hours ago
Comment by PreciousH 22 hours ago
Comment by stickfigure 1 day ago
Comment by lowbloodsugar 1 day ago
Comment by BewareTheYiga 1 day ago
Comment by post-it 1 day ago
How come?
Comment by smashed 1 day ago
They want you to use and get accustomed to only their own tools. If other coding harnesses were allowed, it's far too easy to switch providers.
They can't allow that, because they only have a few months of head start.
So everyone accepts Claude code which is required for these sweet subsidized tokens.
Comment by well_ackshually 1 day ago
Comment by smashed 1 day ago
> Unless previously approved, Anthropic does not allow third party developers to offer claude.ai login [..] for their products.
ref: https://code.claude.com/docs/en/agent-sdk.md
Yes there is a huge gray area. Yes people are getting away with it. That does not mean it's allowed. Anthropic could clarify their terms any day and they don't, on purpose.
Comment by post-it 1 day ago
Comment by Zambyte 1 day ago
Comment by shepherdjerred 1 day ago
Comment by bendowlingdev 1 day ago
Comment by indymike 1 day ago
Claude behaves in Claude Code somewhat differently vs other coding harnesses (sometimes it's a remarkable improvement) connected directly via api. Also, it cost more than the subscription. There's quite a bit of baked in tooling and assumptions in Claude code that may be good for you, or unhelpful based on what you are doing.
Comment by neuronexmachina 1 day ago
Comment by thih9 1 day ago
Comment by post-it 1 day ago
T3 does it this way.
Comment by joeyoung111 1 day ago
Comment by kosolam 1 day ago
Comment by esafak 1 day ago
Comment by d0mine 1 day ago
Comment by devmor 1 day ago
Reading through the whole post, this sounds like an thoughtfully and intentionally designed product. One with strong opinions and the developer’s real lessons behind it. In the current era of slopware- especially around AI tooling - this is giving me damn near an emotional reaction. I am happy to see this.
Comment by Rabbit504030201 1 day ago
Comment by chiengineer3 1 day ago
Comment by dominotw 1 day ago
I dont know if i am unique here but i often work in exploratory mode where i persue a chain of thought in a specific direction, then backtrack up and go down again arbitrarily.
Comment by brador 1 day ago
Comment by lifeisloving 1 day ago
But right above this statement, on the Professional Edition purchase page, it says its only for Windows and Mac..
Comment by HexDecOctBin 1 day ago
Comment by laughing_snyder 1 day ago
Comment by jrm4 1 day ago
Comment by laughing_snyder 1 day ago
Comment by jrm4 1 day ago
and
FIVE megabytes. Wow. What are we doing everywhere else.
Comment by laughing_snyder 1 day ago
Comment by patrick_rtk 1 day ago
Comment by arbor-group 1 day ago
Comment by steven_burg 1 day ago
Comment by msarda_23 1 day ago
Comment by sick_of_slop 1 day ago
Comment by neuroelectron 1 day ago
Comment by pron 1 day ago
Comment by neuroelectron 1 day ago
I don't know why you needed a paragraph to say that 1000% memory inflation is a trade-off to optimize dev costs and we can just ignore JS because our goal is to support a browser as the gui.
It's a bunch of nonsense and yet you call what I said nonsense while all you do is provide opinion that it's OK because trade-off or something. What you said is purely opinion so you can't say my take is nonsense. There's nothing "pure engineering perspective" about it.
Comment by pron 1 day ago
Because that's not what I said. My point was more that a "1000% memory inflation" is not a meaningful cost metric to begin with (to use just one toy example, perhaps you'd agree that going from 10% RAM to 100% has a very different impact than going from 1% to 10%, even though both are a "1000% inflation").
Memory (at least on a personal computer) is not rented by the hour on a per-MB basis; you buy it in bulk. What matters isn't how much memory you could have used but what you'd use the "saved" memory for. Also, when you buy a resource like RAM or CPU as a package, nominal values matter less than under what conditions one of these would reach 100% and your experience may be degraded.
For example, if you have 16GB of RAM and you only ever run one program at a time, it doesn't matter to you at all if it uses 3GB or 3MB: you've paid for 16 and the total savings of the 3MB app are zero and in this hypothetical case, there's no tradeoff at all. Now, the average user on the average hardware doesn't use only one GUI app at a time, but they're also not using 200. The only relevant question pertaining to waste is what is the value of 3% memory to your users (integrated over all of them)? In many situations (again, not all), the answer is not much. (And BTW, some developers seem to care about 3% memory more than they do about 3% CPU, even though CPU is much more expensive).
When it comes to agent harnesses, the analysis is clearer. On the one hand, people using coding agents are more likely than others to put even a little extra free RAM to some good use, but on the other hand, the cost of using the models themselves is so high that it makes the cost of RAM for the GUI negligible.
Saying that a number going up by 1000% is bad is not good engineering. Good engineering requires thinking about the actual value and cost of that number. It varies over time, over app type, over different types of users, and over different kinds of deployments (i.e. how RAM is packaged and paid for).
Comment by neuroelectron 1 day ago
I'm entertaining this nonsense because I want to clarify, that I use a 20 year old web gui and it consistently eats 8 gigs of ram in Webkit because it uses CSS to update the forms. Webkit is the only option on iPads and yet it can't handle a 20 year old website because it doesn't do things in the standard ways. It's ridiculous to say "why doesn't it target web" especially after someone presents new coding harness that went out of its way to run well without it.
Comment by pron 1 day ago
No, that's not the conclusion. If using models costs you, say, $10 an hour, and a GB of RAM costs you, say, $0.0001 an hour, then clearly you shouldn't spend your time on reducing the insignificant cost if you want your work to deliver the most value to users.
But again, "less RAM" is more or less meaningful whether you're reducing the RAM usage from, say, 5% to 1% or from 80% to 40%. The latter is more valuable even though it's a lower relative reduction. That's because what the users care about is in what conditions they reach 100% of either CPU or RAM, and the second 2x reduction, therefore, offers more value than the first 5x one. This is similar to how a 10% discount on a car offers far more value than a 99% discount on a pack of chewing gum. This is still the case if you're buying 100 packs, but maybe not 10,000, and the same goes for software: it may also matter how many copies of the app the user is expected to run concurrently. The point is that you can't assign a value to a 10x reduction if that's all you know.
> I'm entertaining this nonsense because I want to clarify, that I use a 20 year old web gui and it consistently eats 8 gigs of ram in Webkit because it uses CSS to update the forms.
And I'm entertaining this nonsense because you're clearly not a very experienced engineer and you may learn something. In the ninetees, when nearly all GUI apps were written in C or C++, we had plenty of examples where a C++ GUI app consumed 50% RAM. That doesn't mean that C++ is worthless, only that some software has serious resource bugs, and it sounds like that web page you're referring to is a case of that. Most web-based GUI apps today do not consume a higher portion of RAM than their C++ counterparts did 30 years ago. Today's browser-based MS Word consumes less (relative) RAM than the C++ version did in 1998, and it certainly has a far smaller negative impact on concurrently using other apps on the machine.
And, of course, there are buggy/leaky programs now just as there were then. It's silly to say that the existence of such programs means that the approach is bad, because that would apply to any sufficiently-popular language or toolkit.
Anyway, our job is to offer the most value to our users, and reducing RAM consumption by 3% or even 5% (of available RAM) is usually not where you'd find much value.
Comment by neuroelectron 1 day ago
Comment by pron 1 day ago
Comment by neuroelectron 16 hours ago
Comment by pron 15 hours ago
VS Code might be using close to 1GB with nothing loaded, but it doesn't go much higher with stuff loaded, at least not that I've noticed. I do have 16GB because that's what you get in a laptop these days, and I'm always running at least three Electron apps concurrently, a browser with about 200 open tabs, and then another one or two browser with a few tabs each (plus an email client, and of course, agents and compilers running in the background). The only time I notice an issue is when a program leaks memory.
But again, I try not to look at numbers unless I know exactly what their effect is, and I rarely if ever notice any ill effects caused by well-behaving Electron apps, and unless I notice an actual problem I try not to look at numbers, because they can lead you down the wrong path and distract you from what actually matters. Overall RAM in particular, especially when combined with low-CPU (which makes swapping cheap), is a very misleading metric because it's not easily translatable to value without lots of other pertinent information (such as how many copies of the program the average user is expected to run concurrently, how many other programs the user is expected to run and what the CPU utilisation is).
In the nineties and early oughts, I, like many other developers, obviously focused a lot on reducing RAM because it mattered a lot under the conditions back then. Over the years, it started mattering less and less, to the point that you need a very clear justification to optimise it (in fact, you need a clear justification to optimise anything, or you'd end up wasting your time on optimising the wrong thing at the expense of the right thing). These days, I too often see developers trying to reduce RAM without being able to point at an actual (not hypothetical) user-experience problem they're solving.
Comment by umeshc7 6 hours ago
Comment by nabeards 1 day ago
Comment by neuroelectron 1 day ago
Even optimizing for specific hardware platforms is now trivial yet we act like everything has to be done through the browser, even though we know it's impossible to secure or do effectively because of the forest of constantly changing, proprietary tech.
Comment by khalic 1 day ago
Comment by keepo404 1 day ago
Comment by jrm4 1 day ago
Can't wait to try it.
Comment by jrm4 1 day ago
It just opened. Instantly. Every button and thing happens instantly. what are we doing everywhere else. I'd forgotten that things can be this fast.
Comment by smashed 1 day ago
I thought it meant the license was missing on GitHub but, no, it's an actual license called the Unlicense.
But then there is the Community and Pro edition so which is which on GitHub? Is the pro version hidden somewhere?
Plus a c++ code base in 2026. I think modern c++ can be made quite safe but I need some claims that it's taken seriously which I don't see.
I'm confused.
edit: I'm getting down voted here and no-one is telling me what I said wrong. These are my first impressions on the project. I think it's valuable feedback. Please reply and explain why I'm wrong instead of just down voting.