7 ms·
Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC
Related: https://simonwillison.net/2026/Jan/27/one-human-one-agent-one-browser/ https://simonwillison.net/2026/Jan/27/one-human-one-agent-on...
- embedding-shape 10mo agoI set some rules for myself: three days of total time, no 3rd party Rust crates, allowed to use commonly available OS libraries, has to support X11/Windows/macOS and can render some websites. After three days, I have it working with around 20K LOC, whereas ~14K is the browser engine itself + X11, then 6K is just Windows+macOS support. Source code + CI built binaries are available here if you wanna try it out: https://github.com/embedding-shapes/one-agent-one-browser https://github.com/embedding-shapes/one-agent-one-browser
- jacquesm 10mo agoThose are excellent constraints.
- chatmasta 10mo agoDid you use Claude code? How many tokens did you burn? What’d it cost? What model did you use?
- embedding-shape 10mo agoCodex, no idea about tokens, I'll upload the session data probably tomorrow so you could see exactly what was done. I pay ~200 EUR/month for the ChatGPT Pro plan, prorating days I guess it'll be ~19 EUR for three days. Model used for everything was gpt-5.2 with reasoning effort set to xhigh.
- soiltype 10mo agoThank you in advance for that! I barely use AI to generate code so I feel pretty lost looking at projects like this.
- forgotpwd16 10mo ago>I'll upload the session data probably tomorrow so you could see exactly what was done. That'll be dope. The tokens used (input,output,total) are actually saved within codex's jsonl files.
- storystarling 10mo agoThat 19 EUR figure is basically subscription arbitrage. If you ran that volume through the API with xhigh reasoning the cost would be significantly higher. It doesn't seem scalable for non-interactive agents unless you can stay on the flat-rate consumer plan.
- embedding-shape 10mo agoYeah, no way I'd do this if I paid per token. Next experiment will probably be local-only together with GPT-OSS-120b which according to my own benchmarks seems to still be the strongest local model I can run myself. It'll be even cheaper then (as long as we don't count the money it took to acquire the hardware).
- mercutio2 10mo agoWhat toolchain are you going to use with the local model? I agree that’s a Strong model, but it’s so slow for be with large contexts I’ve stopped using it for coding.
- embedding-shape 10mo agoI have my own agent harness, and the inference backend is vLLM.
- storystarling 10mo agoCurious how you handle sharding and KV cache pressure for a 120b model. I guess you are doing tensor parallelism across consumer cards, or is it a unified memory setup?
- embedding-shape 10mo agoI don't, fits on my card with the full context, I think the native MXFP4 weights takes ~70GB of VRAM (out of 96GB available, RTX Pro 6000), so I still have room to spare to run GPT-OSS-20B alongside for smaller tasks too, and Wayland+Gnome :)
- oneneptune 9mo agoThanks in advance, I can't wait to see your prompts and how you architected this...
- ASalazarMX 9mo ago> I'll upload the session data probably tomorrow so you could see exactly what was done. I've been very skeptical of the real usefulness of code assistants, much in part from my own experience. They work great for brand new code bases, but struggle with maintenance. Seeing your final result, I'm eager to see the process, specially the iteration.
- bhadass 10mo agovery impressive! it's amazing how far we've come in 20 years. i was a (very minor) contributor to khtml/konqueror (before apple got involved w/ webkit) in the early 2000s, and back then it was such a labor intensive process to even create a halfway working engine. like, months of work just to get basic rendering somewhat correct on a very small portion of the web (which was obv much smaller) in addition to agentic coding, i think for this specific task having css-spec/html-spec/web-platform-tests as machine readable test suites helps a LOT. the agent can actually validate against real specs. back in the day, despite having gecko as an open source reference, in practice the "standards" were whatever IE was doing. so you'd spend weeks implementing something only to discover every site was coded for IE's quirks lmao. for all of their other faults, google/apple and other contributors helped bring in discipline to that.
- embedding-shape 10mo ago> i think for this specific task having css-spec/html-spec/web-platform-tests as machine readable test suites helps a LOT You know, I placed the specs in the repository with that goal (even sneaked in a repo that needs compiling before being usable), but as far as I can see, the agent never actually peeked into that directory nor read anything from them in the end. It'll be easier to see once I made all the agent sessions public, and I might be wrong (I didn't observe the agent at all times), but seems the agent never used though.
- bhadass 10mo agooh interesting, so it just... didn't use them? lol. i guess the model's training data already has enough web knowledge baked in that it could wing it. curious if explicitly prompting it to reference the specs would change the output quality or time to solution. very excited to see the agentic sessions when you release them.. that kind of transparency is super valuable for the community. i can see "build a browser from scratch" becoming a popular challenge as people explore the limits of agentic coding and try to figure out best practices for workflows/prompting. like the new "build a ray tracer" or say nanogtp but for agents.
- simonw 10mo agoThis is a notably better demonstration of a coding agent generated browser than Cursor's FastRender - it's a fraction of the size (20,000 lines of Rust compared to ~1.6m), uses way fewer dependencies (just system libraries for rendering images and text) and the code is actually quite readable - here's the flexbox implementation, for example: https://github.com/embedding-shapes/one-agent-one-browser/blob/master/src/layout/flex.rs https://github.com/embedding-shapes/one-agent-one-browser/bl... Here's my own screenshot of it rendering my blog - https://bsky.app/profile/simonwillison.net/post/3mdg2oo6bms2o https://bsky.app/profile/simonwillison.net/post/3mdg2oo6bms2... - it handles the layout and CSS gradiants really well, renders the SVG feed icon but fails to render a PNG image. I thought "build a browser that renders HTML+CSS" was the perfect task for demonstrating a massively parallel agent setup because it couldn't be productively achieved in a few thousand lines of code by a single coding agent. Turns out I was wrong!
- vidarh 10mo agoI think the human + agent thing absolutely will make a huge difference. I see regularly that Claude can totally off piste and eventually claw itself back with a proper agent setup but it will take a lot of time if I don't spot it and get it back on track. I have one project Claude is working on right now where I'm testing a setup to attempt to take myself more out of the loop, because that is the hard part. It's "easy" to get an agent to multiply your output. It's hard to make that scale with your willingness to spend on tokens rather than with your ability to read and review and direct. I've ended up with roughly this (it's nothing particularly special): - Runs a evaluator that evaluates the current state and assigns scores across multiple metrics. - If a given score is above a given threshold, expand the test suite automatically. - If the score is below a given threshold, spawn a "research agent" that investgates why the scores don't meet expectations. - The research agent delivers a report, that is passed to an implementation agent. - The main agent re-runs the scoring, and if it doesn't show an improvement on one or more of the metrics, the commit is discarded, and notes made of what was tried, and why it failed. It takes a bit of trial and error to get it right (e.g. "it's the test suite that is wrong" came up early, and the main agent was almost talked into revising the test suite to remove the "problematic" tests) but a division sort of like this lets Claude do more sensible stuff for me. Throwing away commits feels drastic - an option is to let it run a little cycle of commit -> evaluate -> redo a few times before the final judgement, maybe - but it so far it feels like it'll scale better. Less crap makes it into the project. And I think this will work better than to treat these agents as if they are developers whose output costs 100x as much. Code so cheap it is disposable should change the workflows. So while I agree this is a better demonstration of a good way to build a browser, it's a less interesting demonstration as well. Now that we've seen people show that something like FastRender is possible, expect people to experiment with similarly ambitious projects but with more thought put into scoring/evaluation, including on code size and dependencies.
- rahimnathwani 10mo agoThis is awesome. Would you be willing to share more about your prompts? I'm particularly interested in how you prompted it to get the first few things working.
- embedding-shape 10mo agoYes, I'm currently putting it all together and will make it public via the blog post. Just need to go through all of it first to ensure nothing secret/private leaks, will update once I've made it public.
- jacquesm 10mo agoThis post is far more interesting than many others on the same subject, not because of what is built but because of how it it is built. There is a ton of noise on this subject and most of it seems to focus on the thing - or even on the author - rather than on the process, the constraints and the outcome.
- embedding-shape 10mo agoThanks, means a lot. As the author of one such article (that might have been the catalyst even), I'm guilty of this myself, and as I dove deeper into understanding what Cursor actually built, and what they think was the "success", the less sense everything made to me. That's why taking a step back and seeing what's actually hard in the process and bad with the output, felt like it made more sense to chase after, rather than anything else.
- jacquesm 10mo agoI think the Cursor example is as bad as it gets and this is as good as it gets. FWIW I ran your binary and was pleasantly surprised, but my low expectations probably helped ;)
- embedding-shape 10mo agoI'm glad I could take people on a journey that first highlighted what absolutely sucks, to presenting something that seemingly people get pleasantly surprised by! Can't ask for more really :)
- jacquesm 10mo agoWhat is interesting is that yours is the first example of what this tech can do that resonates with me, the things I've seen posted so far do not pass the test for excitement, it's just slop and it tries to impress by being a large amount of slop. I've done some local experiments but the results were underwhelming (to put it mildly) even for tiny problems. The next challenge I think would be to prove that no reference implementation code leaked into the produced code. And finally, this being the work product of an AI process you can't claim copyright, but someone else could claim infringement so beware of that little loophole.
- rvz 10mo ago> I'm going to upgrade my prediction for 2029: I think we're going to get a production-grade web browser built by a small team using AI assistance by then. That is Ladybird Browser if that was not already obvious.
- simonw 10mo agoLadybird (a project I deeply respect) had a several year head start.
- dewey 10mo agoFor the curious, they have a reasonable AI policy: https://github.com/LadybirdBrowser/ladybird/blob/master/CONTRIBUTING.md#on-usage-of-ai-and-llms https://github.com/LadybirdBrowser/ladybird/blob/master/CONT...
- mwcampbell 10mo agoImpressive work. I wonder if you've looked into what it would take to implement accessibility while maintaining your no-Rust-dependencies rule. On Windows and macOS, it's straightforward enough to implement UI Automation and the Cocoa NSAccessibility protocols respectively. On Unix/X11, as I see it, your options are: 1. Implement AT-SPI with a new from-scratch D-Bus implementation. 2. Implement AT-SPI with one of the D-Bus C libraries (GLib, libdbus, or sdbus). 3. Use GTK, or maybe Qt.
- QuadmasterXLII 10mo agoThe rendering is pretty chaotic when I tried it- not that far off from just the text in the html tags, in some size, color, and placement on the screen. This sounds like unfairness, but there is some motte-and-bailey where if you claim to be a browser, I get to evaluate on stuff like links being consistently blue and underlined ( as is, they are sometimes blue and sometimes underlined, without a clear pattern- if they were never formatted differently from standard text, I would just buy this as a feature not implemented yet). It may be that some of the rendering is not supported on windows- the back button certainly isn't. I guess if I want to make my criticism actually legitimate I should make a "one human and no agent browser" post that just regexes out stuff that looks like content and formats it at random. The binary I downloaded definitely overperforms at the hacker news homepage and simonw's blog.
- embedding-shape 10mo agoIt's a really basic browser. It's made less as an independent thing, and more as a reply to https://cursor.com/blog/scaling-agents https://cursor.com/blog/scaling-agents, so as long as it does more or less the same as theirs, but is less LOC, it does what I set out for it to do :) > I get to evaluate on stuff like links being consistently blue and underlined Yeah, this browser doesn't have a "default stylesheet" like a regular browser. Probably should have added that, but was mostly just curious about rendering the websites from the web, rather than using what browsers think the web should look like. > It may be that some of the rendering is not supported on windows- the back button certainly isn't. Hmm, on Windows 11 the back button should definitively work, tried that just last night. Are you perhaps on Windows 10? I have not tried that myself, should work but might be why.
- QuadmasterXLII 10mo agoIt is both extraordinarily impressive in an absolute sense, and fairly disappointing specifically comparing my result on a a random smattering of other no-js websites, to the expectation I had from the simonw screenshot (which to be clear is not an expectation you had control over, as you are not simonw). I'm familiar with this pattern from all the rest of my trying frontier ML results! Yep, I ran it on an old windows 10 VM I had puttering about. I think it must have a default link styling somewhere, as some links are the classic blue that as far as I know I intentionally styled to be black- but this could be css spaghetti in tufte.css finally coming to haunt me.
- storystarling 10mo agoHow did you handle the context window for 20k lines? I assume you aren't feeding the whole codebase in every time given the API costs. I've struggled to keep agents coherent on larger projects without blowing the budget, so I'm curious if you used a specific scoping strategy here.
- simonw 10mo agoGPT-5.2 has a 400,000 token context window. Claude Opus 4.5 is just 200,000 tokens. To my surprise this doesn't seem to limit their ability to work with much larger codebases - the coding agent harnesses have got really good at grepping for just the code that they need to have in-context, similar to how a human engineer can make changes to a million lines of code without having to hold it all in their head at once.
- storystarling 10mo agoThat explains the coherence, but I'm curious about the mechanics of the retrieval. Is it AST-based to map dependencies or are you just using vector search? I assume you still have to filter pretty aggressively to keep the token costs viable for a commercial tool.
- simonw 10mo agoNo vector search, just grep.
- nurettin 10mo agoYou don't load the entire project into the context. You let the agent work on a few 600-800 line files one feature at a time.
- storystarling 10mo agoRight, but how does it know which files to pick? I'm curious if you're using a dependency graph or embeddings for that discovery step, since getting the agent to self-select the right scope is usually the main bottleneck.
- augusteo 10mo ago[flagged]
- Yoric 10mo agoErm... security?
- simonw 10mo ago(This relates to my note at the end of https://simonwillison.net/2026/Jan/27/one-human-one-agent-one-browser/ https://simonwillison.net/2026/Jan/27/one-human-one-agent-on... ) The things that make me think this is still a huge project include: 1. JavaScript and the DOM. There's a LOT there, especially making sure that when the DOM is updated the page layout reflows promptly and correctly. 2. Security. Browsers are an incredibly high-risk environment, especially once you start implementing JavaScript. There are a ton of complex specs involved here too, like CORS and CSP and iframe sandbox and so on. I want these to be airtight and I want solid demonstrations of how airtight they are. 3. WebAssembly in its various flavors, including WebGPU and WebGL 4. It has to be able to render the real Web - starting with huge and complex existing applications like Google Maps and Google Docs and then working through that long tail of weird old buggy websites that the other browsers have all managed to render. I expect that will keep people pretty busy for a while yet, no matter how many agents they throw at it.
- augusteo 10mo agosimonw replied to me! Achievement unlocked! Big fan! And yes there's definitely still a lot to do. Security is def a big one. Very exciting time to be alive.
- croisillon 10mo agoare all your comments written by AI? jfc
- penic 10mo agodude these people are deranged it's unreal
- pulkas 10mo agoThe Mythical Man-Month, revisited
- lelele 10mo agoWhat do you mean?
- embedding-shape 10mo agoI think it means they'd like to have a baby with me, and the more agents we can add, the faster the baby can incubate. Usual stuff :)
- Imustaskforhelp 10mo agoI feel like I have talked to Embedding-shape on Hackernews quite a lot that I recognize him. So it was a proud like moment when I saw his hackernews & github comments on a youtube video [0]about the recent cursor thing It's great to see him make this. I didn't know that he had a blog but looks good to me. Bookmarked now. I feel like although Cursor burned 5 million$, we saw that and now Embedding shapes takeaway If one person with one agent can produce equal or better results than "hundreds of agents for weeks", then the answer to the question: "Can we scale autonomous coding by throwing more agents at a problem?", probably has a more pessimistic answer than some expected. Effectively to me this feels like answering the query which was being what if we have thousands of AI agents who can build a complex project autonomously with no Human. That idea seems dead now. Humans being in the loop will have a much higher productivity and end result. I feel like the lure behind the Cursor project was to find if its able to replace humans completely in a extremely large project and the answer's right now no (and I have a feeling [bias?] that the answer's gonna stay that way) Emsh I have a question tho, can you tell me about your background if possible? Have you been involved in browser development or any related endeavours or was this a first new one for you? From what I can feel/have talked with you, I do feel like the answer's yes that you have worked in browser space but I am still curious to know the answer. A question which is coming to my mind is how much would be the difference between 1 expert human 1 agent and 1 (non expert) say Junior dev human 1 agent and 1 completely non expert say a normal person/less techie person 1 agent go? What are your guys prediction on it? How would the economics of becoming an "expert" or becoming a jack of all trades (junior dev) in a field fare with this new technology/toy that we got. how much productivity gains could be from 1 non expert -> junior dev and the same question for junior -> senior dev in this particular context [0] Cursor Is Lying To Developers… : https://www.youtube.com/watch?v=U7s_CaI93Mo https://www.youtube.com/watch?v=U7s_CaI93Mo
- simonw 10mo agoI don't think the Cursor thing was about replacing humans entirely. (If it was that's bad news for them as a company that sells tools to human developers!) It was about scaling coding agents up to much larger projects by coordinating and running them in parallel. They chose a web browser for that not because they wanted to build a web browser, but because it seemed like the ideal example of a well specified but enormous (million line+) project which multiple parallel agents could take on where a single agent wouldn't be able to make progress. embedding-shape's project here disproves that last bit - that you need parallel agents to build a competent web renderer - by achieving a more impressive result with just one Codex agent in a few days.
- forgotpwd16 10mo agoImpressive. Very nice. (Let's see Paul Allen's browser. /s) Can say is Brooks's law in action. What one human and one agent can do in 3d, one human and hundreds of agents can do in few weeks. A modern retake of the old joke. >without using any 3rd party libraries Seems to be an easier for coding agents to implement from scratch over using libraries.
- avmich 10mo agoNext thing would probably be an OS. With different APIs, the browser could be not constrained by existing standards. Generation of a good set of applications making working in the OS convenient - starting with GNU set? And then we can approach CPU architecture - again, without constraint to existing languages or instruction sets. That should be interesting to play with.
- forgotpwd16 10mo agoSomeone has already done this: https://github.com/viralcode/vib-OS https://github.com/viralcode/vib-OS Also, someone made a similar comment not too long ago. So people surely are curious if this is possible. Kinda surprised this project's submission didn't got popular.
- happytoexplain 10mo agoWhat kind of time frame do you ballpark this would have taken you on your own? I know it's a little apples-and-oranges (you and the agent wouldn't produce the exact same thing), but I'm not asking because I'm interested in the man-hour savings. Rather, I want to get a perspective on what kind of expertise went into the guidance (without having to read all the guidance and be familiar with browser implementation myself). "How long this would have taken the author" seems like one possible proxy for "how much pre-existing experience went into this agent's guidance".
- simonw 10mo agoI have a fun little tool which runs the year-2000-era sloccount algorithm (which is Perl and C so I run it in WebAssembly) to estimate the time and cost of a project here: https://tools.simonwillison.net/sloccount https://tools.simonwillison.net/sloccount If you paste https://github.com/embedding-shapes/one-agent-one-browser https://github.com/embedding-shapes/one-agent-one-browser into the "GitHub Repository" tab it estimates 4.58 person-years and $618,599 by year-2000 standards, or 5.61 years and $1,381,079 according to my very non-trustworthy 2025 estimate upgrade.
- pizlonator 10mo agoI pasted a subset of the Fil-C source code into your tool and it says 6 person years. I just pasted the compiler pass and the obvious parts of the runtime. Note that I started the project in Nov 2023 and can only work on it maybe 1-2 hours a day because it's just a side project. So I think your tool either estimates based on very bad programmers, or it's just wrong. Or maybe 10x programmers are real and I am him
- simonw 10mo agoHere's more about the COCOMO model it uses: https://dwheeler.com/sloccount/sloccount.html#cocomo https://dwheeler.com/sloccount/sloccount.html#cocomo
- 10mo ago
- barredo 10mo agoThe binaries are only around 1 MB for Linux, Mac and Windows. Very impressive https://github.com/embedding-shapes/one-agent-one-browser/releases/tag/0.1.0 https://github.com/embedding-shapes/one-agent-one-browser/re...
- embedding-shape 10mo agoFun fact, not until someone mentioned how small the binaries did I notice! Fun little side-effect from the various constraints and requirements I set in the REQUIREMENTS.md I suppose.
- userbinator 10mo ago"only around 1MB" is not particularly impressive in absolute terms... there are a few browsers which are the same or smaller, and yet more functional. https://tinyapps.org/network.html https://tinyapps.org/network.html Of course, "AI-generated browser is 1MB" is neither here nor there.
- embedding-shape 10mo agoTried building with some other arguments/configs, went from 1,2M on X11 to 664K, which seems to place it under Lynx (text-only, 714k) but above OffByOne (full HTML 3.2, 409k). Of course, my experiment barely implements anything from a "real" browser, so unfair comparison really. Neat collection of apps nonetheless, some really impressive stuff in there.
- simonw 10mo agoDo any of those handle CSS and SVG?
- hedgehog 10mo agoThis looks pretty solid. I think you can make this process more efficient by decomposing the problem into layers that are more easily testable, e.g. testing topological relationships of DOM elements after parse, then spatial after layout, then eventually pixels on things like ACID2 or whatever the modern equivalent is. The models can often come up with tests more accurately than they get the code right the first time. There are often also invariants that can be used to identify bugs without ground truth, e.g rendering the page with slightly different widths you can make some assertions about how far elements will move.
- embedding-shape 10mo ago> There are often also invariants that can be used to identify bugs without ground truth, e.g rendering the page with slightly different widths you can make some assertions about how far elements will move. That's really interesting and sounds useful! I'm wondering if there are general guidelines/requirements (not specific to browsers) that could kind of "trigger" those things in the agent, without explicitly telling it. I think generally that's how I try to approach prompting.
- hedgehog 10mo agoI think if you explain that general idea the models can figure it enough to write into an implementation plan, at least some of the time. Interesting problem though.
- embedding-shape 10mo ago> that general idea the models can figure it enough to write into an implementation plan I'm not having much luck with it, they get lost in their own designs/architectures all the time, even the best models (as far as I've tested stuff). But as long as I drive the design, things don't end up in a ball of spaghetti immediately. Still trying to figure out better ways of doing that, feels like we need to focus on tooling that lets us collaborate with LLMs better, rather than trying to replace things with LLMs.
- deleted 10mo ago[deleted]
- sosodev 10mo agoThe browser works shockingly well considering it was created in 72 hours. It can render Wikipedia well enough to read and browse articles. With some basic form handling and browser standards (url bar, history, bookmarks, etc) it would be a viable way to consume text based content.
- embedding-shape 10mo agoI can't say my fingers (codex's fingers) haven't been itching to add some small features which would basically make it a viable browser for myself at least, for 90% of my browsing. But I think this is one of those experiments that I need to put a halt to sooner rather than later, because the scope can always grow, my mind really likes those sorts of projects, and I don't have the time for that right now :)
- GaggiX 10mo agoIt would be really cool if it was able to render Wikipedia correctly, I really like the idea of a browser with minimal dependencies having the ability to navigate most static websites, this one for now compiles instantly and it's incredibly small.
- embedding-shape 10mo agoYeah, my mind battled with what websites to use as examples for adding support, Wikipedia should have been an obvious one, that's on me! You're not the only one to say this, maybe there is a value in a minimal HTML+CSS browser that still works with the modern (non-JS using) web, although I'm not sure how much. Another idea I had, was to pile another experiment on top of this one, more about "N humans + N agents = one browser", in a collaborative fashion, lets see if that ends up happening :)
- GaggiX 9mo agoMaybe you can divide the task into verifiable environments like an HTML5 parser environment where an agent is going to build the parser and also check the progress against a test suites (the https://github.com/html5lib/html5lib-tests https://github.com/html5lib/html5lib-tests in this case) and then write the API into a .md, the job of the human is going to be at the beginning to create the various environments where the agents are going to build the components from (and also how much it can be divided into standalone components).
- fabrice_d 10mo agoThis is a cool project, and to render Simon's blog will likely become the #1 goal of AI produced "web browsers". But we're very far from a browser here, so that's not that impressive. Writing a basic renderer is really not that hard, and matches the effort and low LoC from that experiment. This is similar to countless graphical toolkits that have been written since the 70s. I know Servo has a "no AI contribution" policy, but I still would be more impressed by a Servo fork that gets missing APIs implemented by an AI, with WPT tests passing etc. It's a lot less marketable I guess. Go add something like WebTransport for instance, it's a recent API so the spec should be properly written and there's a good test suite.
- Dave3of5 10mo ago100% agree this isn't a browser. It's better than the previous attempt but fails to render even basic html websites correctly and crashes constantly. The fact that it compiles is better the the cursor dude. "It Compiles" is a very low bar to working software.
- embedding-shape 10mo agoI think what I wanted to demonstrate here was less "You can build a browser with an agent", and more how bullshit Cursor's initial claim was, that "hundreds of agents" somehow managed to build something good, autonomously. It's more of a continuation of a blog post I wrote some days ago (https://emsh.cat/cursor-implied-success-without-evidence/ https://emsh.cat/cursor-implied-success-without-evidence/), than a standalone proof of "agents can build browsers". Unfortunately, this context is kind of implicit, I don't actually mention it in the blog post, which I probably should have done, that's my fault.
- deadbabe 10mo agoThis is not that impressive, there are numerous examples of browsers for training data to reference.
- embedding-shape 10mo agoDamn, ok, what should I attempt instead, that could impress even you?
- anonymous908213 10mo agoActually good software that is suitable for mass adoption would go a long way to convincing a lot of people. This is just, yet another, proof-of-concept. Something which LLMs obviously can do, and which never seems to translate to real-world software people use. Parsing and rendering text is really not the hard part of building a browser, and there's no telling how closely the code mirrors existing open-source implementations if you aren't versed on the subject. That said, I think some credit is due. This is still a nice weekend project as far as LLMs go, and I respect that you had a specific goal in mind (showing a better approach than Cursor's nonsense, that gets better results in less time with less cost) and achieved it quickly and decisively. It has not really changed my priors on LLMs in any way, though. If anything it just confirms them, particularly that the "agent swarm" stuff is a complete non-starter and demonstrates how ridiculous that avenue of hype is.
- embedding-shape 10mo ago> Actually good software that is suitable for mass adoption would go a long way to convincing a lot of people. Yeah, that's obviously a lot harder, but doable. I've built it for clients, since they pay me, but haven't launch/made public something of my own, where I could share the code, I guess might be useful next project now. > This is just, yet another, proof-of-concept. It's not even a PoC, it's a demonstration of how far off the mark Cursor are with their "experiment" where they were amazed by what "hundreds of agents" build for week(s). > there's no telling how closely the code mirrors existing open-source implementations if you aren't versed on the subject This is absolutely true, I tried to get some better answers on how one could even figure that out here: https://news.ycombinator.com/item?id=46784990 https://news.ycombinator.com/item?id=46784990
- tonyhart7 10mo ago>one human >one agent >one browser >one million nvidia gpu
- embedding-shape 10mo agoNext time I'll do it on my GPU, then it'll be using just a 10K GPU, that's fine right?
- deleted 10mo ago[deleted]
- TalkWithAI 10mo ago[dead]
- madmaniak 10mo agoBut when I install Firefox or Chrome it's much faster, much better and also someone else's code. Also copied and pasted by machine. Just I don't claim it's mine.
- aix1 10mo agoFunctionality aside, I'd find it very interesting to see a security audit of a code base like this. I searched for "security" and "vuln" in both the article and this discussion thread, and found no matches. I guess the code being in Rust helps, but to what exent can one just rely on guarantees provided by the language? (I know practically nothing about Rust.)
- embedding-shape 10mo agoHah, yeah, zero regards to security, don't run this without sandbox and load arbitrary websites :) I don't think Rust helps much except preventing some very basic issues, for example, I don't think it even checks that URLs aren't referencing local files on disk, who knows how the path handling works, might be able to put absolute paths on remote pages and load local content? Unsure, but wouldn't surprise me. Might be a bit safer due to no JS engine, so even if someone did what I outlined before, they couldn't really exfiltrate anything, there is no POST/PUT requests or forms or anything :) I'm sure if someone did a proper audit they'd find double-digit high severity issues, at least.
- dvrp 10mo agoIt's interesting to think that—independently of what you think of Cursor's browser implementation being truly "from scratch" or not—the fact that people are implementing browsers from scratch with agents happened because of Cursor's post. In other words, in a twisted and funny way, this browser exists because of Cursor's agent. This is how we should be thinking about AI safety!
- embedding-shape 10mo agoI mean I wanted to demonstrate further how wrong and misleading I think their initial blog post was so yeah, I made this because of what they said and marketed :)
- socalgal2 10mo agoI'm having a hard time imagining how 20k lines of code gets a browser with no libraries. Just zlib by itself is 12k lines. freetype is 30k lines, or stb_truetype is 5k lines. Something doesn't seem like it's adding up. Am I missing something? Is this just calling into the OS for rendering?
- embedding-shape 10mo agoNo Rust dependencies. Commonly available system libraries/frameworks are used for the actual drawing. The README of the repository outlines exactly which ones are being used on what OS.
- senko 10mo agoOn Linux, there are 78 dynamically linked libraries, such as for X11, vector graphics, glib/gobjectlibgobject, graphics formats, crypto, encryption, etc.
- mdavid626 10mo agoWhat’s the point of this?
- embedding-shape 10mo agoWhat's the point of anything really? A more real answer: Read the first 6 words of the submission article.
- mdavid626 10mo agoIt feels like this mentality is taking over the world. Porn instead of sex, short videos instead of real life interactions, AI generated code instead of software engineering, sugar/chemicals instead of food and so on... All, just to have fun. Very sad.
- embedding-shape 10mo ago> AI generated code instead of software engineering This is exactly what's wrong with Cursor's approach, and why we need better tools for collaborating, so we don't loose the engineering part of software development. I, just like you, am fucking tired of all the slop being constantly pushed as something great. This + my previous blog entries are all about pushing back on the slop.
- mdavid626 9mo agoThis is exactly the problem. People use AI to generate projects and expect, that other people will celebrate and value them as they value similar human written projects. They fail to see where the value really is. They try to cheat the system, get admiration of others, but without putting in any value.
- nenadg 10mo ago>(no JS tho) this is a feature
- jFriedensreich 10mo agoMy community and me are waiting for browserBench for a while now and happy to see it finally starting. Browsers are arguably one of the most complex and foundational piece of software, the ability to create something like this from scratch will be an important evaluation as limits of what is possible are harder and harder to find.
- micimize 10mo agoAn obvious nice thing here compared to the cursor post is the human involvement gives some minimum threshold confidence that the writer of the post has actually verified the claims they've made :^) Illustrates how human comprehension is itself a valuable "artifact" we won't soon be able to write off. My comment on the cursor post for context: https://news.ycombinator.com/item?id=46625491 https://news.ycombinator.com/item?id=46625491
- polyglotfacto 9mo agoThis one's really nice. - clear code structure and good architecture(modular approach reminiscent of Blitz but not as radical, like Blitz-lite). - Very easy to follow the code and understand how the main render loop works: - For Mac: main loop is at https://github.com/embedding-shapes/one-agent-one-browser/blob/master/src/platform/macos/windowed.rs#L74 - You can see clearly how UI events as passed to the App to handle. - App::tick allows the app to handle internal events(Servoshell does something similar with `spin_event_loop` at https://github.com/servo/servo/blob/611f3ef1625f4972337c247521f3a1d65040bd56/components/servo/servo.rs#L176) - If a redraw is needed, the main render logic is at https://github.com/embedding-shapes/one-agent-one-browser/blob/master/src/platform/macos/windowed.rs#L221 and calls into `render` of App, which computes a display list(layout) and then translates it into commands to the generic painter, which internally turns those into platform specific graphics operations. - It's interesting how the painter for Mac uses Cocoa for graphics; very different from Servo which uses Webrender or Blitz which(in some path) uses Vello(itself using wgpu). I'd say using Cocoa like that might be closer to what React-Native does(expert to comfirm this pls?). Btw this kind of platform specific bindings is a strength of AI coding(and a real pain to do by hand). - Nice modularity between the platform and browser app parts achieved with the App and Painter traits. How to improve it further? I'd say try to map how the architecture correspond to Web standards, such as https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model https://html.spec.whatwg.org/multipage/webappapis.html#event... Wouldn't have to be precise and comprehensive, but for example parts of App::tick could be documented as an initial attempt to implement a part of the web event-loop and `render` as an attempt at implementing the update-the-rendering task. You could also split the web engine part from the app embedding it in a similar way to the current split between platform and app. Far superior, and more cost effective, than the attempt at scaling autonomous agent coding pursued by Fastrender. Shows how the important part isn't how many agents you can run in parallel, but rather how good of an idea the human overseeing the project has(or rather: develops).
- embedding-shape 9mo agoHey, thanks a bunch of the review of the code itself! Personally I hadn't really looked deeply at it yet myself, especially the Windows and macOS code, interesting to hear that it as a slightly different approach for the painter, to me that's slightly unexpected. Agree with your conclusion :) Would be interesting to see how the architecture/design would change if I had focused the agent on making as modular and reusable code as possible, as currently I had some constraints about it, but not too strict. You bring up lots of interesting points, thanks again!