Company

The browser agents
can be trusted with.

FullSpectrum is built by AW3 Technology. We are working on one problem: how software should drive a browser on your behalf when the consequences are real — a payment, a filing, a production deploy.

Most browser automation
should not call a model.

The industry answer to “book me a flight” is to hand a model a screenshot and let it decide, over and over, on every run, forever. That is astonishing for the first demo and indefensible for the thousandth run: it costs tokens each time, it produces a different answer each time, and every word on the page is an instruction the model might take.

A person doing the same task does not re-derive it either. They learn it once and then execute. So we record a session once, compile it into an artifact with conditions attached, and replay it deterministically — and when the page moves, we stop and show you a diff rather than guessing on your behalf.

Everything else on this site follows from that sentence.

0model calls during replay
18packages, no framework
38block kinds, closed union
1,733unit tests, no browser needed
20end-to-end scenarios, offline

Countable in the repository, today. We publish no usage or hit-rate numbers, because no independent production measurement exists for any workflow cache — including ours.

Principles

Five decisions we keep making.

These are not values on a wall. Each one is an argument we had, settled in code, and would have to un-settle to do the obvious thing instead.

01

Fail closed, always

When a locator scores below threshold, when two candidates tie and the ordinal is gone, when the page is on an origin the step didn't declare — the run stops. A wrong cached click is worse than a slow one, and “the Nth unnamed button” reorders whenever the page does.

The hard part is not writing the check. It is refusing to add the escape hatch the first time a refusal is inconvenient.

02

A heal you cannot read is not a feature

Self-healing automation is a decade old and universally opaque. UiPath states plainly that healing information from a previous run is not retained in the next run, and Microsoft concedes its portal doesn't currently surface additional self-healing details in the action logs.

So here a repair is a build-time artifact: a diff, a confidence score, the signals behind it, and an append-only record of who approved it. Healing is off by default during replay, because a workflow that heals on every run is a workflow nobody has fixed.

03

The model has to beat free

Wherever a model could go, a deterministic implementation ships beside it and the two are scored against each other. Relocation uses similarity, not inference, because HybridSimilo relocates 98.8% of drifted locators with no model at all. Region labelling offers a Claude-backed labeler — and a rules-based one that already scores 94.7%, for free, in a millisecond.

The eval refuses to declare a winner if the model failed to run. If a model cannot beat free, it should not be in the product.

04

Page content is data, never control flow

An extracted value can fill a declared hole in a later step. It can never become a step, a URL, a tool name or a file path. Rows, field matches and string lengths are bounded, because an extractor pointed at a hostile page is otherwise an unbounded read.

That boundary is what makes model-free replay injection-proof rather than injection-resistant — and it is why the MCP server exposes replay but not “browse this page for me.”

05

Pin the browser, and say so out loud

CDP's “stable” tag is frozen at Chrome 64 while Chrome ships 151.x, and Chrome ships a new milestone every four weeks with weekly stable refreshes — a two-week major cycle from September 2026. A fleet that follows whatever binary the host happens to have changes behaviour without a commit.

The pin is declared in the repo, resolved ahead of any system browser, reported in every run, and moved only through the regression suite. It has already caught a flag that segfaults Chrome for Testing 151 on macOS arm64 and works fine on 150.

Roadmap

Three phases, in this order, on purpose.

Each phase ships something usable on its own and earns the next one. Consumer browsers built before the runtime underneath them was worth anything are the cautionary tale here, not the model.

Now

Agent runtime

The engine, the CLI, the store and the MCP server — everything on this site that you can install today.

  • Record, compile, replay, repair
  • Hash-chained audit with page provenance
  • PageDocument: render, capture, mirror, browse
  • Server fleet on a pinned browser
Next

Local companion

The workflows that need a device a human physically holds — a session, a passkey, a second factor — running on your machine and talking to the fleet over the same API.

  • Local execution with a hosted control plane
  • Human handoff for anything that needs presence
  • No engine work — it is a client of Phase 1
If forced

The browser

A window of our own, and only if a specific capability makes it unavoidable. When that day comes, the evidence says reach for CEF before a fork.

  • Gated on a capability nothing else reaches
  • Requires an automated upstream merge pipeline first
  • Never a consumer browser that the runtime hasn't earned

Security

The threat model is the product.

An agent driving a browser has, by construction, the user's session, the user's permissions and the user's blast radius. The web's own security model does not help here: the same-origin policy was designed to protect one site from another, not a user from software acting with their credentials.

So the boundaries are structural rather than advisory. No model in the replay loop. No page content that can become control flow. No origin outside the step's declaration. No script, style or markup from a site reaching the rendering shell. No ref surviving a re-snapshot. Every run leaving a tamper-evident record of which origin was on screen when each action fired.

Reporting a vulnerability Email security@aw3.tech. We will acknowledge within two business days and keep you updated until it is closed. Please give us a reasonable window before publishing.
What we will not do Threaten a researcher acting in good faith, or quietly patch something a user needs to know about.
Audit access The hash-chained log is yours, in every tier. Enterprise adds a KMS key you hold, so the chain can be signed by someone we are not.

Careers

Small team. Unreasonable standards.

We are a handful of people and the codebase shows it: no framework, no service mesh, no abstraction that hasn't earned its second caller. If you like the part of the job where you decide what not to build, you'll like it here.

How we work

Written arguments before code, and the argument lives in the repository next to what it decided — docs/ARCHITECTURE.md cites its sources and records the counter-evidence, including the counter-evidence against the bet the company is making. Nothing ships without a test that would have caught the bug. If you don't see a role that fits, write to us anyway and say what you'd want to work on.

Contact

Reach us.

Nothing leaves your machine

Judge it by running it.

Every claim on this page is checkable against the repository, and most of them are checkable in ten minutes on your own laptop.