The story

An end-to-end test rarely fails because the product is broken. It fails because a button moved, a class was renamed, or a page took 300ms longer than it used to. So I watched tests get narrower until they checked almost nothing, or watched someone spend a day a week keeping them alive.

A test written against selectors has no idea what it’s looking at. It knows there is an element at .btn-primary. It doesn’t know there’s a button that says Continue. A person testing the same page never has that problem, because a person reads the screen.

The product

You ask Domia for something in plain language and it drives the application. There are no recorded steps, and it’s the same loop for a web page or an Electron app. I built it as a TypeScript monorepo: an agent layer over any LLM provider, a Playwright tool layer, an Electron desktop app and a CLI.

Calling the model is the expensive part, so it happens last. A deterministic pass over a site’s files, headers and HTML settles whatever it can in pure functions: twenty findings in about a fifth of a second, with no model and no browser. The agent only picks up what is left. Every run is recorded as a tree and replays from its own tape without calling the model again.

What it prints

The sweep runs on a clean checkout with no API key:

$ domia audit https://example.com --sweep-only

▶ sweep: https://example.com  (deterministic pass — no model)

  11 requests in 215ms → 20 findings

  ▲ serious  security       No Content-Security-Policy
    verified · security.csp-missing · fix (S): Ship a CSP, starting in report-only mode.
  ▲ serious  security       No HSTS
    verified · security.hsts-missing · fix (S): Send HSTS with a long max-age once https is confirmed.
  ● moderate files          No robots.txt
    verified · files.robots-txt · fix (S): Publish /robots.txt.
  ● moderate seo            No meta description
    verified · seo.description-missing · fix (S): Add a meta description of 120–160 characters.
  · minor    agentic        No /llms.txt
    verified · agentic.llms-txt · fix (S): Publish /llms.txt.
  …

Every finding carries the rule that produced it and the fix, sized.

It’s a beta and it says so. What’s missing is the ordinary part: entering a key from the desktop UI, proper empty states, and signed builds.