SIMULATED

No hardware is connected. The fleet below is invented: fake nodes, fake threats, fake numbers. What is real is the drawing: every pixel comes from the firmware's own render code, compiled to WebAssembly. Nothing here is measured data.

Vigil console

This is the screen on the controller board, running in your browser. Tap the icons to move around, exactly as you would on the device. Then use the buttons to make things happen to the imaginary fleet and watch it react.

VIGIL · ESP32240×320
loading firmware…

Go to

Do something to the fleet

Try Threat escalates a couple of times and watch the status word in the top bar go to HUNTED. That transition is the real firmware's own logic, not something this page decides. Empty the room takes the ambient crowd away, which is what EXPOSED means: the decoys are running but there is nothing to blend into.

Exposure check is the one to try if you only try one. It listens for a few seconds, spots the device that suddenly starts shouting, and lists the network names it is announcing it remembers. On real hardware that device is your phone and those names are yours. The four shown here are invented. They are written in the router-default style the project's own SSID pool uses, and none came from a capture.

What is real here

radar_render.cevery screen, unmodified firmware source
radar_gfx.cthe rasteriser: lines, text, the 8×8 font
radar_ui.cview state machine, idle timers, auto-wake on a new follower
fleet_status.cnode aggregation, stale pruning, threat union, MIXED preset
sim_fleet.cthe only invented part, standing in for the radio

Tap targets are mapped in this page rather than shared with the firmware, because the device's are bound up with radio and enrollment calls that can't run in a browser. A zone being a few pixels off here is cosmetic; on the board it would matter.

This is the screen on the Vigil controller board. The decoy boards have no screen, so this is the one you look at. If you want the real thing, the flasher will put it on a board in about a minute.