HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
embedding-shapes
one-agent-one-browser
Rust2026–2026
embedding-shapes / one-agent-one-browser

one-agent-one-browser

One from scratch browser built by one human and one agent, working hand in hand

4Distinct people
10Mentions
0Explicit recommenders
228GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

One from scratch browser built by one human and one agent, working hand in hand

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by 3-hour interval10 dated mentions

Observed mentions: 2026-01-27 13:44:20 UTC to 2026-01-30 04:22:47 UTC.

0122026-01-27 12:00:00 UTC to 2026-01-27 15:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 27, 12:002026-01-27 15:00:00 UTC to 2026-01-27 18:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-27 18:00:00 UTC to 2026-01-27 21:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-01-27 21:00:00 UTC to 2026-01-28 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-28 00:00:00 UTC to 2026-01-28 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-28 03:00:00 UTC to 2026-01-28 06:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-01-28 06:00:00 UTC to 2026-01-28 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-28 09:00:00 UTC to 2026-01-28 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-28 12:00:00 UTC to 2026-01-28 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-28 15:00:00 UTC to 2026-01-28 18:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-28 18:00:00 UTC to 2026-01-28 21:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJan 28, 18:002026-01-28 21:00:00 UTC to 2026-01-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 00:00:00 UTC to 2026-01-29 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 03:00:00 UTC to 2026-01-29 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 06:00:00 UTC to 2026-01-29 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 09:00:00 UTC to 2026-01-29 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 12:00:00 UTC to 2026-01-29 15:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 15:00:00 UTC to 2026-01-29 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 18:00:00 UTC to 2026-01-29 21:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-29 21:00:00 UTC to 2026-01-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-30 00:00:00 UTC to 2026-01-30 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-30 03:00:00 UTC to 2026-01-30 06:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 30, 03:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 27, 12:002026-01-27 12:00:00 UTC2026-01-27 15:00:00 UTC101
Jan 27, 15:002026-01-27 15:00:00 UTC2026-01-27 18:00:00 UTC202
Jan 27, 18:002026-01-27 18:00:00 UTC2026-01-27 21:00:00 UTC101
Jan 27, 21:002026-01-27 21:00:00 UTC2026-01-28 00:00:00 UTC202
Jan 28, 00:002026-01-28 00:00:00 UTC2026-01-28 03:00:00 UTC000
Jan 28, 03:002026-01-28 03:00:00 UTC2026-01-28 06:00:00 UTC101
Jan 28, 06:002026-01-28 06:00:00 UTC2026-01-28 09:00:00 UTC000
Jan 28, 09:002026-01-28 09:00:00 UTC2026-01-28 12:00:00 UTC000
Jan 28, 12:002026-01-28 12:00:00 UTC2026-01-28 15:00:00 UTC000
Jan 28, 15:002026-01-28 15:00:00 UTC2026-01-28 18:00:00 UTC202
Jan 28, 18:002026-01-28 18:00:00 UTC2026-01-28 21:00:00 UTC000
Jan 28, 21:002026-01-28 21:00:00 UTC2026-01-29 00:00:00 UTC000
Jan 29, 00:002026-01-29 00:00:00 UTC2026-01-29 03:00:00 UTC000
Jan 29, 03:002026-01-29 03:00:00 UTC2026-01-29 06:00:00 UTC000
Jan 29, 06:002026-01-29 06:00:00 UTC2026-01-29 09:00:00 UTC000
Jan 29, 09:002026-01-29 09:00:00 UTC2026-01-29 12:00:00 UTC000
Jan 29, 12:002026-01-29 12:00:00 UTC2026-01-29 15:00:00 UTC000
Jan 29, 15:002026-01-29 15:00:00 UTC2026-01-29 18:00:00 UTC000
Jan 29, 18:002026-01-29 18:00:00 UTC2026-01-29 21:00:00 UTC000
Jan 29, 21:002026-01-29 21:00:00 UTC2026-01-30 00:00:00 UTC000
Jan 30, 00:002026-01-30 00:00:00 UTC2026-01-30 03:00:00 UTC000
Jan 30, 03:002026-01-30 03:00:00 UTC2026-01-30 06:00:00 UTC101

What Hacker News says

10 sources
This 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… - 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/compo…) - If a redraw is needed, the main render logic is at https://github.com/embedding-shapes/one-agent-one-browser/blob/master/src/platform… and calls into `render`
Read the rest
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... 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).
In Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC
> I would pair that with the WhatWG HTML spec I placed some specifications + WPT into the repository the agent had access to! https://github.com/embedding-shapes/one-agent-one-browser/tr... But judging by the session logs, it doesn't seem like the agent saw them, I never pointed it there, and seems none of the searches returned anything from there. I'm slightly curious in doing it from scratch again, but this time explicitly point it to the specifications, and see if it gets better or worse.
In Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC
I 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 If you paste 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.
In Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC
Btw, after I wrote that initial article ("Cursor's latest "browser experiment" implied success without evidence"), I gave it my own try to write a browser from scratch with just one agent, using no 3rd party crates, only commonly available system libraries, and just made a Show HN about it: https://news.ycombinator.com/item?id=46779522 The end result: Me and one agent (codex) managed to build something more or less the same as Cursor's "hundreds of agents" running for weeks and producing millions of lines of code, in just 20K LOC (this includes X11, macOS and Windows support). Has --headless, --screenshot, handles scaling, link clicking and scrolling, and can render basic websites mostly fine (like HN) and most others not so fine. Also included CI builds and automatic releases because why not. The repository itself is here and should run
Read the rest
out of the box on most modern OSes, downloads can be found at the Releases page: https://github.com/embedding-shapes/one-agent-one-browser
In Cloudflare claimed they implemented Matrix on Cloudflare workers. They didn't
This 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/bl... Here's my own screenshot of it rendering my blog - 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 co
Read the rest
ding agent. Turns out I was wrong!
In Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC
I 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
In Show HN: One Human + One Agent = One Browser From Scratch in 20K LOC

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.