Remix.run Logo
Kitesurf: Agent-first browser that runs in V8 isolates(blog.cloudflare.com)
108 points by m3h 9 hours ago | 27 comments
nicoburns 5 hours ago | parent | next [-]

This is built on top of Blitz (https://github.com/dioxuslabs/blitz): a new modular (open source) browser engine that I've been building for the last 2.5 years.

(I wasn't involved in building kitesurf, but I am informed that they intend to open source and upstream their patches)

HaloZero 33 minutes ago | parent | next [-]

Are you effectively building a separate renderer outside of Webkit?

Just curious on your thoughts about how Webkit was architected then, I guess it's not a modular system where you can separate out things like "Localstorage" support?

nicoburns 10 minutes ago | parent [-]

> Are you effectively building a separate renderer outside of Webkit?

Yes, it's new engine separate to Webkit/Blink/Gecko/Servo/Ladybird/etc

> Just curious on your thoughts about how Webkit was architected then, I guess it's not a modular system where you can separate out things like "Localstorage" support?

Honestly, I'm not super-familiar with Webkit's architecture. It's a huge codebase, and it's also C++ which is always pretty intimidating. I believe Webkit is more modular than most of the others, but Blitz goes quite extreme into modularity:

- The core is not coupled to the HTML parser

- The core is not coupled to the networking

- The core is not coupled to the rendering backend

- The core is not coupled to the windowing/input layer

- The core is not coupled to the JS/scripting engine

- The style engine (Stylo) is mostly implemented as a library which can be used independently

- The layout engine is mostly implemented in two libraries which can be used independently of the rest of the engine (Taffy for Flexbox/Grid/Block layout and Parley for Text/Inline layout)

So, yes I'd hope that it will be possible to individually opt-in to features like localstorage (once we implement them), but it goes a bit further than that.

hugs 5 hours ago | parent | prev [-]

any plans to support webdriver bidi for automation? (i'd be happy to help!)

[edit: for others reading who don't usually nerd out on browser automation protocols: webdriver bidi is the new-ish w3c cross-browser standard inspired by CDP - the main magic was the upgrade to websockets and also to standardize the capture of network-level traffic. there are still feature gaps between CDP and BiDi (in spec and implementation), but long term, i believe we should bet on web standards, not proprietary protocols controlled by one company.

(disclosure: i started the selenium and appium projects.)]

nicoburns 4 hours ago | parent | next [-]

> Long term, i believe we should bet on web standards, not proprietary protocols controlled by one company.

Totally agree.

Not sure if you're involved in the development / spec process for WebDriver Bidi, but the big limitation atm is that it has almost no support for the devtool inspection use cases served by the Chrome Devtools Protocol (CDP) and the Firefox Devtools Protocol (FDP).

The Servo and Ladybird browsers both have FDP implementations (and Blitz has an in-progress CDP implementation) for this reason. But we'd all love to switch to a single standardised protocol if it had the requisite support.

hugs 4 hours ago | parent [-]

thanks for the extra context. i'm friendly with devs working on the protocol, but looking for ways to get them more support.

nicoburns 4 hours ago | parent | prev [-]

It's definitely on the list of "things that would be nice to have eventually". It hasn't been very high up my personal list of priorities to build myself, but if you want to build it then I imagine we'd accept the patches (though I'd ideally like to see an implementation plan first).

(if kitesurf does upstream their patches then presumably we'll get a CDP-based automation API as part of that)

hugs 4 hours ago | parent [-]

ok, cool. looks like i should chat with the fine people at cloudflare, too.

QuantumNomad_ 6 hours ago | parent | prev | next [-]

From the page https://developers.cloudflare.com/browser-run/ linked to from this article:

> Run headless Chrome on Cloudflare's global network for browser automation, web scraping, testing, and content generation.

Does Cloudflare the CDN allow these browser instances to bypass their own anti-bot mechanisms? Or will Cloudflare the CDN block them the same as if someone was running scraping bots from a different provider?

Will Kitesurf in Cloudflare workers get special bypass privileges to content protected by Cloudflare the CDN?

buremba 6 hours ago | parent [-]

No it doesn't and it's simply useless. They have been trying to enable publishers to charge scrapers so that's why they're pushing this path hard.

Hexcles 42 minutes ago | parent | prev | next [-]

It's nice to see wpt.fyi was used to help with the verification of this new browser! Also BiDi can't come fast enough.

cautiouscat 4 hours ago | parent | prev | next [-]

Can someone give me examples of where you use agents in your browser? I’ve heard executive leaders tout that “people use agents to buy things for them” but I haven’t actually seen that.

nozzlegear 4 hours ago | parent | next [-]

> I’ve heard executive leaders tout that “people use agents to buy things for them” but I haven’t actually seen that.

My wife really dislikes building up the shopping cart for our weekly grocery delivery, so I built an agent... thing with earendil's npm libs. It takes the menu my wife has decided on, confers with her about the ingredients (if it hasn't seen a recipe before), and then uses Chrome's devtools protocol to head to Walmart and add everything to the shopping cart.

It works fairly well and uses the local models I have running on my Mac Studio.

arosier10 an hour ago | parent | next [-]

Does walmart keep prompting you with "Press and hold" anti bot requests? I have a similar project and keep getting these on walmart.

diarrhea 2 hours ago | parent | prev [-]

> uses the local models

That is fantastic. Last I checked models capable of running on commodity (anything below a dedicated GPU rack) hardware were very lackluster.

nozzlegear 16 minutes ago | parent [-]

Yeah, they're excellent. I use a small Qwen3-4B-Instruct as the "actor" agent which goes out to the website, searches for a batch of items, decides which best matches the criteria, and puts them in the cart. Then I have Qwen3.6-35B-A3B as the "orchestrator" agent (it's just what I use for my daily driver), it's responsible for chatting with my wife about the menu, recipes and ingredients, and tells the smaller agent what to put in the cart with our brand preferences, dietary restrictions, etc. in mind.

I could probably drop the smaller Qwen at this point, but when I was first building this I was having an issue with search results and cart data filling up the main agent's context.

fulafel 7 minutes ago | parent | prev | next [-]

Web scraping is the age old pre-LLM way to implement scratch-your-own-itch automations on the web. Anything you do manually with a web browser. Also used in corporate settings to interface with bad "enterprise" software, it's called RPA there. This kind of thing is the logical AI progression of those.

tldr; to workaround the lack (or shortcomings) of public m2m APIs in web apps

arjie an hour ago | parent | prev | next [-]

It’s usually incidental. Costco’s receipts aren’t easy to get. You go to a particular page listing them all and then for each date you click view receipt and look for the thing you want. You can’t really search because the thing will be labeled SHWR103 or something.

I didn’t “use an agent to find a receipt” in the sense that I purpose built one. I just asked my existing agent that I talk to on telegram by photographing the thing I wanted to know if we could return and while I changed the baby it chugged along and by the time we were ready to go it could tell me whether we did buy it at Costco and when so I know if I can return it.

buskerrrrrr 3 hours ago | parent | prev | next [-]

I often use it to browse sites to get web/app design inspiration, then make moodboards based off it and send it to me. saves me a lot of manual browsing time

OroPla 4 hours ago | parent | prev | next [-]

I would use them to solve captchas if that was a thing.

digidecode 4 hours ago | parent [-]

lol

hugs 4 hours ago | parent | prev [-]

i've been tempted to use an agent to help me find non-horrible seats to see the 70mm imax version of the odyssey. but that's also the kind of thing that is heavily guarded by anti-bot detectors.

fukaiall 3 hours ago | parent | prev | next [-]

Seems like Cloudflare only writes Rust these days…

Hexcles 39 minutes ago | parent | prev | next [-]

Now that OpenAI basically abondoned Atlas, which had a truly novel architecture, let's see if this more obvious technical route (not saying this to diminish the achievement!) would gain traction.

zuzululu 4 hours ago | parent | prev | next [-]

wish it was open source so it can be run locally

a welcome addition although it'd be very easy for websites to fingerprint and block

donpark an hour ago | parent [-]

From the final notes section of their announcement blog post:

> One last thing: we're going to open source Kitesurf once we're ready — hopefully soon. Our goal is to let any customer deploy their own version of Kitesurf on their own accounts, if they want to.

LetsGetTechnicl 5 hours ago | parent | prev [-]

Ugh