Show HN: We Put Chromium on a Unikernel (OSS Apache 2.0)

github.com

130 points by juecd 3 days ago


We’ve been building infrastructure to spin up browsers for AI agents. Originally, we built[0] it as a pool of warm Docker containers running Chromium, exposing:

- Chrome DevTools Protocol (for Playwright/Puppeteer)

- noVNC (for live view)

We’ve been following the unikernel space for a while, so we decided to see if we could get our image on one. We went with Unikraft Cloud[1]. Here’s how it did:

- Boot-up time: 10–20ms (vs. ~5s for Docker containers)

- Near 0 CPU/memory consumption when idle

- Still ~8GB RAM when active (headful Chromium)

Potential use cases:

- Standby mode during long-running jobs: unikernels can sleep after X sec of inactivity, reducing clock time costs

- Session reuse: auth/session cookies persist for hours/days. Basically as long as the cookies are valid

- Cold start speed: good for low-latency, event-based handling

We open sourced it with Apache 2.0! Feel free to fork or submit an issue / PR. Open to feedback or suggestions. www.github.com/onkernel/kernel-images

==

[0] https://github.com/onkernel/kernel-images

[1] https://unikraft.cloud/

[2] Thanks to the Unikraft Cloud team @fhuici @nderjung @razvandeax for helping us figure this out (we're not affiliated)

[3] (OPs) @rgarcia @juecd

shykes - 3 days ago

This looks excellent, and very fun to play with!

I used this one-liner to run an instance directly from remote source:

  dagger -c 'git https://github.com/onkernel/kernel-images | head | tree | docker-build --dockerfile containers/docker/Dockerfile | up --ports 8501:8501,8080:8080,6080:6080,9222:9222'
Be aware that the initial docker build is quite long... But caching kicks in for subsequent runs.

I look forward to playing with this!

juecd - 3 days ago

(OP) Happy to answer any questions! Some things we're still exploring:

- Mounting persistent storage for file i/o

- Replacing noVNC with a faster alternative

Would love feedback, especially if you’ve worked on fast-cold-start systems or unikernel-based infra.

crowcroft - 3 days ago

This is probably a dumb question from someone who knows almost nothing about system engineering.

How hard would it be to boot a computer to this as an OS?

dbmikus - 3 days ago

When should I use this versus Browserbase or Browserless or Hyperbrowser?

Obviously since this is open source, then I can self host it. What other reasons?

Just curious!

tyre - 3 days ago

This is super cool. We’ve been looking into infra for AI agents. As others have noted, the difference in speed alone between docker and this is a huge win. Having our clients wait around for five seconds really adds up.

Awesome tech, excited to dig deeper for healthcare

capiki - 3 days ago

Cool (and congrats on the demo)! Sounds like a promising approach. I work on browser use agents and one of the most difficult problems now is bot detection. Curious if you know how this impacts bot detection/fingerprinting?

daniel_levine - 3 days ago

This is awesome stuff. I think the biggest thing holding back a bunch agentic use cases is great infra and this is a a great step in the right direction. Love how fast it boots!

shaqbert - 3 days ago

5s for Docker containers vs 20ms now ... holy moly, this is fast

rollcat - 3 days ago

Interesting work. It immediately brought boot2gecko to my mind. If I understand unikernels correctly - do you think it would be viable to run this on real HW?

HyprMusic - 3 days ago

I'm assuming the low latency cold starts are from a paused state, considering chrome itself takes a few seconds to boot? Or have you found some clever way to snapshot a running chrome and fork that?

Either way thanks for sharing.

eyberg - 3 days ago

Maybe you can clarify but this isn't actually using unikraft the kernel is it?

Maybe you can clarify that this is actually running a stripped down linux as unikraft does not have the support to run chrome itself.

LoganDark - 3 days ago

> This unikernel implementation can only be run on Unikraft Cloud

Looking forward to one that'll run on my local machine, if I read this correctly?

gregpr07 - 2 days ago

Wooow man this is crazy!! I wanna chat

moltar - 3 days ago

What’s the size of the image?

Can this run inside a Lambda?

jay-barronville - 3 days ago

Impressive work, @juecd!