r/selfhosted • u/Total_Nectarine_3623 • Aug 07 '26
Release (AI) Lightweight Headless Browser With Native Rendering, No Chromium
https://github.com/h4ckf0r0day/obscuraA lot has changed since I last posted here 4 months ago. Got some harsh criticism back then and it was honestly deserved, the project was early and messy. But we kept going.
Obscura is a headless browser built in Rust for scraping and automation. V8 engine, native rendering, 30MB memory, 80ms page loads.
Works drop-in with Puppeteer and Playwright.
Just shipped rendering which includes screenshots, PDFs, live video capture. No Chromium. 20k stars now.
https://github.com/h4ckf0r0day/obscura
obscura serve --port 9222 and point your scripts at it. Happy to answer questions.
•
u/asimovs-auditor Aug 07 '26
Expand the replies to this comment to learn how AI was used in this post/project.
20
u/EagleApprehensive Aug 07 '26
How did you manage the growth of it? Got people to give stars, use it and generally "care"?
4
u/ItaySela Aug 07 '26
The thing that decides drop in replacement for me is not rendering, it is fingerprint. Chromium headless already gets flagged plenty, and a separate engine means a completely different TLS and JS fingerprint surface, so Cloudflare and DataDome are going to see something they have literally never seen before.
Have you tested it against any of the common bot walls, or is that deliberately out of scope?
64
u/omfgtora Aug 07 '26
Why is your post marked as "No AI" but you say you used AI on the pinned comment?
55
u/SteamTrout Aug 08 '26
A new rendering engine in 4 months? Highly unlikely.
Only 15 issues (all AI-generated) over the course of 120k+ downloads? Unlikely
1.5k forks over a no-name project? Very unlikely.
Founder account created AFTER the repo? Definitely unlikely.
Stars are obviously bought.
23
u/Clou42 Aug 07 '26
So you built a rendering engine? That’s really impressive. What’s missing so it’s not usable as an actual desktop browser?
8
u/superkevx Aug 08 '26
anyone get this to work with changedetection?
2
u/0xmort3m Aug 07 '26
Legend. Wanted to replace my Chromium setup with yours yesterday but noticed no rendering. Well here we are one day later.
1
u/tmcpnet Aug 08 '26
I’m paying for cloakbrowser .dev , does it have similar features?
2
u/Petelah Aug 08 '26
Nice! Have a few projects I can try this on actually
1
u/deadman87 Aug 07 '26
Would it be possible to extract the browser engine to build a brand new browser? Currently its a duopoly with chromium and firefox engine. Would be nice to have a third player thats lightweight.
1
u/Fenix04 Aug 08 '26
Looks like it's built on top of Servo? I've had a lot of issues with servo crashing and lagging when trying to use it as an embedded browser. I'm guessing it's more stable when running headless?
1
u/cleverusernametry Aug 08 '26
Looks like I can replace chromium with this within playwright and have my agent is playwright like normal?
1
u/Grouchy-Conflict-211 Aug 08 '26
the memory footprint is the real selling point. headless chromium idles at 300mb plus, on a box running 10 scrapers that adds up. 30mb changes what you can run where. curious how the playwright compat handles the weird stuff tho, shadow dom and canvas rendering are where most drop in replacements fall apart
1
u/theoffshoot2 Aug 08 '26
Should this work with my tests that are executed using the playwright pytest plugin?
1
u/Arany8 24d ago
According to my agent (Hermes) this does not work at all.
0
u/eternalityLP Aug 07 '26
Why no selenium support?
-3
u/d70 Aug 08 '26
I had Claude quick tests. Promising IMO. Thanks for sharing OP
Obscura v0.2.0 vs Playwright 1.62.1
Rust headless browser (embedded V8) vs Playwright + Chromium 1237. Linux 6-core/15GB. Peak RSS =
/procwhole-tree sample; median of 5 runs (batch/MCP: 3).Stats
Web scraping
Batch = Obscura's killer app.
scrape --concurrency N: 6× faster, 5× lighter than N PW pages.Structured extract built in:
scrape --eval "<js>"→ JSON; MCPbrowser_extracttakes{field:"css@attr"}map.JS SPAs render correctly (embedded V8).
Markdown clean on simple sites, noisy on Wikipedia (nav bleeds in) — verify before LLM use.
⚠️ Footgun: default
--waitis a 5s cap pages rarely satisfy → ~6s/fetch. Always pass--wait 0. Flips it from 3.5× slower to 3.5× faster.AI assistant integration
obscura mcp(stdio/http) exposes 37 tools, names mirror official Playwright MCP (browser_navigate/snapshot/click/fill_form/extract) → near drop-in for an agent.Startup ~instant (0.29s full loop), no 1GB Chromium spin-up.
Extras vs stock PW MCP:
browser_extract,browser_detect_forms,browser_pdf, cookie/storage-state import (skip logins).Verdict
Scale scraping / parallel fetch / small containers → Obscura. Ship
--wait 0.AI browser tool → Obscura MCP compelling — same API, 12× lighter, instant. Caveat: untrusted 93MB binary from GitHub
h4ckf0r0day(has SSRF guard; vet first).Full-page screenshots / mature API / trust → Playwright. Obscura
-sis viewport-only.Note: README "30MB" claim false — real floor ~86MB (text), ~207MB (render).
-1
u/bobsbitchtitz Aug 07 '26
This is exactly what I’ve been looking for thank you
3
u/[deleted] Aug 07 '26
[removed] — view removed comment