Last Updated: 5 September 2026
Obscura is an open-source headless browser engine written in Rust, designed for AI agents and web scraping, and it costs about one-sixth the memory of headless Chrome: we measured 34MB of peak RAM in our own live test on 5 September 2026, against the 200+MB that headless Chrome typically consumes per instance. Since its repository appeared on 13 April 2026, it has collected 24,998 GitHub stars, 1,834 forks and 60 contributors, according to the GitHub API. That is an average of roughly 170 new stars every day for five months.
The project matters beyond its raw numbers because of who leaned on it. According to Cloudflare's engineering blog, the team behind Kitesurf, Cloudflare's new agent-first browser, "got the initial inspiration from obscura" and began by porting it to Cloudflare Workers with the help of an AI agent. When a company that operates one of the world's largest edge networks credits a five-month-old Rust project as the seed of its browser strategy, the underlying thesis deserves a close look.
So we gave it one. This deep dive covers what Obscura is, why AI agents need a different kind of browser, how its numbers hold up under independent testing on a production VPS, what its architecture looks like inside, and where it fits for growing businesses running agent workloads. All benchmark figures are attributed, and every test result in the live sections is ours.
What Is Obscura?
Obscura is a headless browser engine for web scraping and AI agent automation, written in Rust and released as a single roughly 70MB binary with no dependency on Chrome or Node.js. It runs real JavaScript through V8, supports the Chrome DevTools Protocol, and works as a drop-in replacement for headless Chrome with Puppeteer and Playwright. It captures screenshots, screencasts live pages and exports PDFs without starting Chromium, and it is licensed Apache-2.0 with no feature gating.
The feature list reads like a direct answer to agentic workloads. A CLI fetch command for one-page extraction with JavaScript evaluation. A scrape command that fans out across many URLs with a concurrency of 25 through a separate worker process. A serve command that exposes a Chrome DevTools Protocol endpoint so existing Puppeteer and Playwright scripts connect without rewrites. An MCP server so AI agents can drive pages natively. Built-in SSRF protection that blocks fetches to private and internal IP addresses by default, including DNS-resolution-time checks.
According to the GitHub API, the repository was created on 13 April 2026, reached 24,998 stars and 1,834 forks by 5 September 2026, has 60 contributors, and its current stable release is v0.2.1, published 23 August 2026. The project also carries a Trendshift trending-repository badge and lists proxy sponsors such as NodeMaven and ProxyEmpire, which signals where its commercial gravity lies: scraping fleets and agent runtimes.
Why Do AI Agents Need a Different Browser?
Standard browser engines were designed for humans, not agents. They carry tabs, themes, extensions and visual polish that an AI does not need, and that overhead makes giving every agent its own browser instance prohibitively expensive. Agents instead need low token counts, machine-readable structure, scalability and low cost. This is the core argument Cloudflare made when launching Kitesurf, and it is the design brief Obscura was built against.
Cloudflare's engineering blog put it bluntly in its Kitesurf announcement: "browser engines like Chromium were built for humans, not agents, and they come with overhead that AI models simply do not need. They consume so much memory and compute that providing every agent with its own instance is prohibitively expensive." The post adds that agents do not care about 60-fps scrolling, and that structured, machine-readable content matters more than pixel-perfect rendering.
Read that against what agents actually do when they browse. An agent fetching a page wants the text, the links, maybe a screenshot for a vision model. It does not want a compositor, a GPU pipeline, an extension host and a settings sync service idling through 200MB of RAM each time. When your agent fleet scales from 10 pages a day to 10,000, memory per instance becomes the number that sets your infrastructure bill.
That reframing is why 2026 suddenly has an "agent-first browser" category at all: Cloudflare's Kitesurf runs in V8 isolates on Workers, and Obscura runs as a single lean binary on your own hardware. Same thesis, two deployment models.
Obscura vs Headless Chrome: What the Numbers Say
According to the Obscura README's comparison table, Obscura uses about 30MB of memory versus 200+MB for headless Chrome, ships a 70MB binary versus 300+MB, loads pages in 85ms versus roughly 500ms, and starts instantly versus Chrome's roughly 2 seconds. It also lists built-in anti-detection where stock Chrome has none, plus Puppeteer and Playwright support on both sides. These are the project's own benchmarks, so we treated them as claims to verify, not facts.
| Metric | Obscura (README) | Headless Chrome |
|---|---|---|
| Memory per instance | 30 MB | 200+ MB |
| Binary size | 70 MB | 300+ MB |
| Page load | 85 ms | ~500 ms |
| Startup | Instant | ~2 s |
| Anti-detection | Built-in (stealth builds) | None stock |
| Puppeteer / Playwright | Yes, via CDP | Yes |
| JavaScript engine | Real V8 | V8 |
Two caveats keep this honest. First, these are the project's own numbers from its own benchmark suite, which lives in a separate repository. Second, microbenchmarks measure best-case pages. Our real-world tests, next, show seconds rather than milliseconds once JavaScript and rendering enter the picture. The memory claims, however, held up precisely.
We Tested It: Live Results on a Production VPS
We downloaded the Obscura v0.2.1 x86_64 Linux binary and ran four tests on a production VPS on 5 September 2026, measuring wall-clock time and peak resident memory with GNU time. Results: a cold fetch with JavaScript evaluation completed in 0.13 seconds at 34MB peak RAM, a JavaScript-heavy Hacker News text dump took 1.65 seconds at 41MB, a full-page screenshot of a real business site took 10.0 seconds at 99MB, and a three-URL parallel scrape finished in 16.5 seconds at 68MB total. The memory claims verified. Speed claims are best-case numbers.
| Test | Command | Wall clock | Peak RSS |
|---|---|---|---|
| Cold fetch + JS eval | fetch example.com --eval | 0.13 s | 34 MB |
| JS-heavy page dump | fetch news.ycombinator.com --dump text | 1.65 s | 41 MB |
| Full render + screenshot | fetch flowtivity.ai -s shot.png | 10.0 s | 99 MB |
| Parallel scrape, 3 URLs | scrape u1 u2 u3 --concurrency 3 | 16.5 s total | 68 MB |
Three observations worth flagging. The cold-fetch number is the headline: process start, DNS, TLS, fetch, JavaScript evaluation and exit in 130 milliseconds. The rendering test is the honest counterweight: full CSS layout and paint pushed memory to 99MB and took 10 seconds on a real site, though still roughly half of typical headless Chrome. And in the parallel scrape, the slowest URL was our own website, not the engine: the JSON output arrived clean and structured with per-URL timings and worker assignments.
How Did a Five-Month-Old Project End Up Inside Cloudflare?
According to Cloudflare's engineering blog for Kitesurf, the Cloudflare team "got the initial inspiration from obscura, a headless engine written in Rust for AI automation," then ported it to Cloudflare Workers with the help of an AI agent to prove the concept. That prototype evolved into Kitesurf, an agent-first browser that runs entirely on Workers and is free while in beta inside Cloudflare's Browser Run product. Obscura's quiet Hacker News launches and its starring role in a 221-point Cloudflare launch tell the story of infrastructure credibility travelling through adoption.
The Hacker News record sharpens the point. According to Hacker News search data via Algolia, Obscura's own "Show HN" launch on 24 April 2026 drew 15 points, and a follow-up in May drew 5. Cloudflare's Kitesurf announcement on 7 August 2026 drew 221 points and 63 comments. The lesson for builders is uncomfortable and useful: the market rewards the validated version of an idea, and being the inspiration is still a very good position to hold, especially with the credit publicly attached in Cloudflare's post.
What Is Inside the Obscura Architecture?
Obscura is a single Rust binary containing a real V8 JavaScript engine, an independent rendering engine covering block, inline, flex, grid, table, float and transform layout, an optional stealth transport built on BoringSSL, and a default SSRF guard that blocks private and internal IP ranges. It exposes a Chrome DevTools Protocol server so Puppeteer, Playwright and MCP-connected agents can drive it, and it ships a separate worker binary for parallel scraping at a concurrency of 25.
Three design choices stand out for anyone operating agent infrastructure. First, protocol compatibility over purity: by speaking CDP, Obscura becomes a swap-in backend for the enormous body of existing Puppeteer and Playwright code, which removes the migration excuse entirely. Second, honest build variants: release archives come in four flavors, render-only, render-plus-stealth, no-render and no-render-stealth, so a text-scraping fleet never pays the rendering tax. Third, security defaults that assume misuse: SSRF protection on by default, with an explicit flag required to reach private networks, is exactly the posture you want in tooling that AI agents will drive.
The Fleet Economics: What 34MB Buys at Scale
On one 8GB VPS with roughly 7GB usable after OS overhead, headless Chrome at 200+MB per instance supports about 35 concurrent sessions, while Obscura at our measured 34MB supports roughly 200. That is approximately 6x the session density on identical hardware, which matters because memory is the binding constraint on both scraping fleets and per-agent browser sandboxes. Our arithmetic assumes text-mode instances; render-heavy pages peaked at 99MB in our test.
Translate that into agent operations. An AI agent that browses as part of its workflow needs a browser session per task. At Chrome's weight, a modest fleet of 100 concurrent browsing agents needs three mid-size servers doing nothing but hosting Chrome. At Obscura's weight, the same fleet fits on one with headroom. For teams priced out of agent-browser products, self-hosting a lean engine is the difference between a hobby and a margin.
What Should Growing Businesses Use It For (and What Should They Avoid)?
The responsible core use cases are monitoring and extraction at your own risk tolerance: price and competitor monitoring, public-data research pipelines, SEO and content auditing, PDF generation, screenshot verification of deployments, and giving internal AI agents a browsing tool through MCP. Avoid anything that violates a site's terms of service, evades access controls unlawfully, or scrapes personal data without a lawful basis. Stealth features reduce false-positive bot blocking for compliant monitoring; they are not a licence to ignore rules.
| Use case | Fit | Notes |
|---|---|---|
| Competitor and price monitoring | Strong | Low memory makes frequent runs cheap |
| Content and SEO audits at scale | Strong | Dump text, links and assets in structured form |
| Agent browsing via MCP | Strong | Agents get a real JS-capable browser tool |
| Screenshots and PDF pipelines | Good | Render engine still young; expect visual diffs |
| Puppeteer/Playwright migrations | Good | CDP compatibility keeps scripts unchanged |
| Anything against site terms or the law | Avoid | Stealth is not permission; respect ToS, robots and rate limits |
On the stealth question, a straight position: anti-detection features exist in this category because indiscriminate bot filtering blocks legitimate monitoring, and compliant scrapers get caught in the crossfire. Using them to keep a lawful, rate-limited monitoring pipeline alive is defensible. Using them to evade a site's deliberate access controls is not something we advise, build or help with. Apache-2.0 code carries no ethics, operators do.
How Do You Get Started With Obscura in Five Minutes?
Download the single binary for your platform from GitHub releases, extract it, and run a cold fetch with a JavaScript eval to verify the toolchain. Then run a real extraction with dump modes, start the CDP server on port 9222, point existing Puppeteer or Playwright scripts at it, and scale out with the parallel scrape command. No Chrome, no Node.js, no package installs. Docker users can alternatively pull the official 57MB compressed distroless image.
The full command sequence, tested by us:
curl -LO .../obscura-x86_64-linux.tar.gz && tar xzf obscura-x86_64-linux.tar.gz./obscura fetch https://example.com --eval "document.title"./obscura fetch https://example.com --dump text --output page.txt./obscura serve --port 9222then point Puppeteer atws://127.0.0.1:9222/devtools/browser./obscura scrape url1 url2 url3 --concurrency 25 --eval "document.title" --format json
One operational note from the field: keep obscura and obscura-worker in the same directory, because the parallel scrape command depends on the worker. And if you test against your own local dev servers, expect the SSRF guard to block private ranges until you pass --allow-private-network. That is a feature, not friction.
What Are the Limitations and Risks?
Obscura is a v0.2.1 project five months into its life, with an independent rendering engine whose README candidly warns that long-tail CSS, some web APIs, media playback and font rendering may differ from Chromium. It has 81 open issues, a fast-moving codebase, and its hosted cloud is still a waitlist. Treat it as excellent infrastructure for text-first extraction and agent browsing, and verify rendering output before trusting it for pixel-sensitive work.
The honest risk register for a business adoption decision: rendering fidelity is the big one, since an independent engine will not match Chromium pixel-for-pixel on every page, and the README says as much directly. Project maturity is second: five months, v0.2.x versioning and 60 contributors is remarkable momentum but not yet a decade of production hardening. Third, ecosystem dependence: if your stack needs Chrome-specific behaviours, browser extensions or media playback, this is not your engine yet.
Our suggested adoption posture is boring and effective: pilot it on text-extraction and monitoring workloads where correctness is verifiable, keep Chromium in reserve for rendering-critical paths, and benchmark both on your own pages rather than trusting either side's marketing. We did exactly that before writing this sentence.
Obscura FAQ
What is Obscura?
Obscura is an open-source headless browser engine written in Rust for web scraping and AI agent automation. It ships as a single roughly 70MB binary, runs real JavaScript through V8, speaks the Chrome DevTools Protocol and works with Puppeteer and Playwright out of the box. It is Apache-2.0 licensed.
Is Obscura free and open source?
Yes. According to the project README, the engine is Apache-2.0 with no feature gating, ever. A hosted Obscura Cloud with managed infrastructure and residential proxies is on a waitlist.
How does Obscura compare with headless Chrome?
According to the project's README: 30MB versus 200+MB memory per instance, 70MB versus 300+MB binary, 85ms versus roughly 500ms page loads, and instant versus roughly 2-second startup. Our independent test verified the memory claim at 34MB peak RSS on a cold fetch.
What is the connection between Obscura and Cloudflare Kitesurf?
Cloudflare's engineering blog states the Kitesurf team "got the initial inspiration from obscura" and ported an early version to Workers with the help of an AI agent. Kitesurf is Cloudflare's agent-first browser, free while in beta in Browser Run.
Can I use Obscura with Puppeteer or Playwright?
Yes. Start obscura serve to expose a CDP endpoint on port 9222, connect with puppeteer.connect() or Playwright's connectOverCDP(), and existing scripts generally run unmodified.
Want an agent stack like this in your business? Flowtivity designs and operates agentic workflows for growing businesses: browsing agents, monitoring pipelines and the 15/80/5 operating model that keeps humans in charge of judgment. Book a discovery call and bring the workflow that annoys you most.
Written by AJ Awan. Former EY management consultant, TOGAF certified enterprise architect, founder of Flowtivity. Live benchmarks run on a production Linux VPS on 5 September 2026 using the public v0.2.1 release. Repository and adoption data from the GitHub API and Hacker News (Algolia) on the same date.