Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Web-App Verification (Obscura)

When an agent builds you a web app, this feature lets it functionally verify that the app actually works before it says it is done, using Obscura, a lightweight Rust headless browser, instead of installing full Chrome. The agent gets one tool that checks the page loads, elements exist, forms accept input, and no console errors appear.

What it is

Status: shipped — available to all users. The verify tool activates once you install Obscura (Settings → "Set it up for me").

When you have an Omniscio coding session build you a web app, this feature lets the agent functionally verify that the app actually works before it says "done" — the way a careful developer would click through their own work. It does this with Obscura, a lightweight Rust headless browser, instead of installing full Chrome/Chromium.

The agent gets a single tool, verify_web_app, that opens the running app in Obscura and checks things like: does the page load, is the login button present, does clicking it go to the right place, do forms accept input, are there any JavaScript errors in the console.

Where to find it

Obscura is opt-in and installed on demand through the toolchain "Set it up for me" flow, and the capability itself is enabled at Settings → Lab (Web-app verification). After that there is no button per run: the agent gets the tool on a web-app project and uses it by itself.

How it behaves

What it is NOT

Obscura has no rendering/layout engine (it runs JavaScript and builds the page in memory, but never draws pixels). So this is a functional test tool, not a visual one:

  • ✅ It checks: page loads, elements exist, text is present, navigation works, forms accept input, no console errors.
  • ❌ It cannot: take screenshots, do visual/pixel comparison, or judge how the page looks. Asking it for a screenshot returns a clear "functional-only" message rather than silently passing.

"Like Playwright" is achieved by literally using Playwright (playwright-core) and pointing it at Obscura over the Chrome DevTools Protocol — so the checks run through the real Playwright engine, just against a lighter browser.

How it works (under the hood)

  1. Omniscio detects the project is a web app (Next.js, Vite, SvelteKit, Nuxt, Astro, Remix, Gatsby, Angular).
  2. If Obscura is installed and you've enabled the capability, Omniscio adds a built-in webapp-verify tool server to that session — all three conditions must hold (shouldMountWebappVerify).
  3. The agent starts the dev server itself (e.g. npm run dev) and learns its URL.
  4. The agent calls verify_web_app({ url, checks }).
  5. Omniscio launches Obscura on a private loopback port, connects playwright-core, runs each check, and returns a structured pass/fail report (plus any console errors). A green run posts a visible "✓ Verified working" row.

The checks

Check Asserts
loads the app reaches the URL without crashing
selectorPresent an element matching a CSS selector exists
textContains the page body contains some text
clickNavigates clicking an element leads to an expected element/page
fill a form field accepts a value
noConsoleErrors no console.error or uncaught errors occurred

Setup

Obscura is opt-in and installed on demand (it is not bundled with Omniscio):

  1. Install it via the toolchain "Set it up for me" flow — Omniscio downloads the pinned Obscura release for your OS and verifies its SHA-256 checksum before use.
  2. Enable Web-app verification in Settings → Lab.

Proactive nudge: the first time you build a web app without Obscura installed, Omniscio drops a single dismissible inbox card offering one-click setup (once per install, never nags). It only appears once the feature is visible to you, so a still-in-development build never markets it broadly.

For agents

Key code

  • src/main/services/webapp-verify/ — the engine: check-types.ts (Zod schema, enforces functional-only), check-runner.ts (pure check logic), obscura-process.ts (launch Obscura on an ephemeral port + health wait), obscura-harness.ts (connectOverCDP glue), gate.ts (shouldMountWebappVerify), is-web-app-project.ts, checksum.ts.
  • src/main/services/webapp-verify-mcp-server/ — the built-in stdio MCP server exposing the single verify_web_app tool.
  • Setting: (retired 2026-09-19 with the rest of the per-session MCP composition) — the webAppVerifyEnabled toggle and the webapp-verify MCP server are gone from sessions. The webapp-verify feature id stays in UNRELEASED_FEATURES marked retired (hidden for everyone), and the engine + server source stay in the tree, unwired.

Design + plan: docs/superpowers/specs/2026-06-16-obscura-webapp-testing-design.md, docs/superpowers/plans/2026-06-16-obscura-webapp-verify.md.

Related

MCP Servers covers how a built-in tool server like this one is mounted into a session and managed. Running Apps covers the preview surface for the dev server an agent starts before it verifies the app.

Last verified 2026-09-23