← Argus Live
Autonomous UI testing · FlytBase "The Tireless Hand"

Argus Live tests the cockpit like an operator — and checks every claim against the drone's real state.

A page can show a drone online while it is offline, keep a frozen video labelled “live”, or lose an operator's action after a reconnect. Argus drives the real product in a real browser, injects changing conditions, and decides bug‑vs‑noise by comparing what the screen says with the simulator's ground truth — so it finds real issues with almost no false positives.

Playwright + Chrome DevTools Ground‑truth oracles Self‑healing semantic engine Narrated video evidence CLI · MCP
The core idea

Don't ask a model “does this look right?”. Ask the source of truth.

Vision‑only testers guess, and guesses produce false positives. Argus does the opposite: it reads what the operator sees (labels, telemetry, the video element, map markers) and compares it against what the system actually knows.

Every product in this challenge sits on the same simulator and control API, so Argus can always obtain independent truth: the true drone status and position, the backend's health, the active faults, and a socket feed subscribed exactly like the cockpit. When the two disagree in a way that harms the user, that's a bug — proven, not guessed.

What the UI claims Ground truth Disagreement → bug
# the oracle, in one line
UI: "live", distance 75 m, badge connected
TRUTH: stream frozen, drone at 180 m,
       simulator disconnected
──────────────────────────────
VERDICT: BUG — stale data shown as live
GROUPED: 3 symptoms · 1 root cause

Freshness, video liveness, map position, multi‑user propagation and recovery are all checked this way.

The pipeline

Seven layers, from operator to evidence

Operators real Chrome · desktop / tablet / phone · multi‑user Scenario engine starting state · steps · changing conditions via the control API (fault injection) Probes — what the user sees UI by meaning + test ids video frames + perceptual hash Cesium map via React fiber layout / occlusion geometry Ground truth simulator state · backend health · active faults · socket feed (like the cockpit) Oracles UI vs truth · freshness honesty reachability · occlusion · overlap propagation lag · recovery deterministic, per‑category Triage deterministic verdicts root‑cause grouping precision guards Evidence HUD‑narrated recording screenshots · samples EVALUATION.md + result.json control API truth verdict + evidence
The clever bits

Five techniques that make it precise

01 · truth oracle

UI vs simulator, not vision

Bugs are decided by comparing the screen with the control API and socket feed. No model opinion in the verdict path → near‑zero false positives.

02 · map

Reads Cesium by walking the React fiber

To check a marker's position, Argus finds the live Cesium viewer through the page's React fiber and reads each entity's real lat/lon and screen box — exact, no screenshot guessing.

03 · video

Frame counters + perceptual hash

Liveness comes from the <video> element's decoded‑frame count and a 16×9 luminance hash — so a frozen stream still labelled “live”, or a label that switched while the picture didn't, is caught.

04 · evidence

The recording narrates itself

A HUD overlay is burned into every video showing the step, the UI's claim, the ground truth and the verdict — the video is the reproducible evidence, produced automatically.

05 · precision

Group symptoms, guard against noise

One fault's many symptoms merge into a single issue. Guards prevent false alarms — e.g. a control is scrolled into its own container before it can be called “unreachable”.

06 · reuse

Built on the Argus semantic engine

The same self‑healing element matching used across the project reads the UI by meaning (role, accessible name, context), so small markup changes don't break the probes.

How you run it

A real CLI

# run one scenario live (a real Chrome opens)
argus live run --only S2

# run the full suite, record every scenario
argus live run

# generate the submission document from the runs
argus live report

Each run writes runs/live/<id>/ — an MP4, screenshots, timed samples and a machine‑readable result.json — then rolls them into EVALUATION.md.

The broader Argus CLI (used elsewhere in the project) also ships:

argus run        replay + self-heal + triage
argus explore    crawl an app into a map
argus generate   write a suite (1 LLM call)
argus diff       two builds, no changelog
argus gauntlet   mutation benchmark
argus doctor     preflight checks
Inside a coding agent

MCP — close the software‑factory loop

Argus is also an MCP server, so a coding agent (Claude Code, Cursor, opencode…) can test its own work in a real browser before opening a PR.

# register once
claude mcp add argus -- argus mcp

The agent writes a feature, then calls verify_change("what I intended"). Argus runs the browser suite and answers BUG with repro steps or INTENDED CHANGE with the release‑note citation — the intent it was given is the oracle.

MCP toolwhat it does
run_testsrun the full suite, return verdicts
verify_changetest a change against your intent
explore_and_generatebuild a suite for an app with none
last_reportverdicts of the most recent run
Standing on

Open‑source we built on

ComponentRole in ArgusFrom the brief's list
PlaywrightDrives real Chrome — multi‑user contexts, device emulation, offline/throttle, video recording, traces✓ recommended
Chrome DevTools ProtocolPerformance, long‑tasks and JS‑heap metrics for the load / long‑running scenarios✓ recommended
CesiumThe cockpit's map — Argus reads its live entities for exact marker positions (does not modify it)starter kit
MCP (Model Context Protocol)Exposes Argus to coding agents as tools✓ recommended
python‑socketioSubscribes to the backend feed exactly like the cockpit, for ground‑truth freshness—
OpenCV · imagehashPerceptual video/frame hashing and the vision tier for canvas surfaces—
FastAPI · pydantic · rapidfuzzReport/live console, typed contracts, self‑healing similarity scoring—
imageio‑ffmpegStitches multi‑operator recordings side‑by‑side into one evidence video—
OpenRouter · Groq (free tiers)LLM mesh for the rare reasoning calls (generation, ambiguous triage) — layered with fail‑fast fallback✓ recommended

The runtime verdict path is deterministic. Models are used only where reasoning genuinely helps (writing a suite, judging a truly ambiguous change), never to decide a live bug.

Results on the FlytBase cockpit

10 scenarios · 5 real bugs · 5 precision passes

10
scenarios, each recorded
5
genuine bugs, grouped
5
clean passes (precision)
L1–L3
levels covered
#ScenarioLevelCategoryVerdict
S1Stale / delayed / offline data shown as liveL2Telemetry / freshnessBUG
S2Frozen drone video still labelled “live”L2Video & mediaBUG
S3Battery / altitude on a phoneL1Responsive UIPASS
S4Video tile covers the 2D/3D map switch on a phoneL1Responsive UIBUG
S5Drone & dock labels overlap on the mapL1Map / visualBUG
S6Connection loss & recoveryL3Network & recoveryPASS
S7Two operators see the same take‑offL3Real‑time / multi‑userPASS
S8Selecting a drone switches telemetry & video togetherL2Functional / videoPASS
S9Flight commands need no sign‑in; open CORSL1Security & permissionsBUG
S10Responsiveness with 16 drones, ~10 sim‑minutesL3Performance / long‑runningPASS

A clean PASS is a result, not a miss: it shows the tester avoids false positives — a scored criterion.