Your house,
seen by its own Wi‑Fi.
A small box on the wall of each room. No cameras, no cloud, no account. One live map, storey by storey, drawn on a computer in your cupboard. The bill of materials below is for a twelve-node house; the reference install runs seven.
Eight boxes downstairs, four up. That is the whole install.
A two-storey house on an ordinary plot. Nodes sit beside wall sockets, one charger each, antennas vertical. Every node hears every other, so the eight downstairs give 28 links through the living floor, the four upstairs give 6 through the bedrooms, and the 32 links between floors cross the ceiling — 66 in all. Accuracy on a floor is bought by nodes on that floor, which is why the floor you live on gets eight.
Twelve nodes with one walker downstairs, in simulation: 12/0 → 0.68 m median, 94 % of frames counted right; 9/3 → 0.96 m, 86 %; 6/6 → 1.29 m and 25 %. Eight and four keeps the living floor sharp and still gives the bedrooms a storey-true answer.
Each box has its own 5 W charger and a 6 ft cable, so a node lives within two metres of a socket at chest height. Positions are laser-measured to 2 cm from one corner of the house — only the geometry between nodes matters.
Plan or 3D, whichever you prefer, fitted to the house rather than the plot. Zoom out and the whole building is lit floor by floor; zoom into a room and the claim narrows with the view. A person is a dot inside a shell: the calibrated error ring across — the radius that has covered the person on about 85 % of held-out frames — and a whole storey tall, because the nodes lie flat and height inside one floor is not resolved.
Walk each room with your phone. The hub builds the building.
A free LiDAR app on an iPhone Pro captures each room as a mesh — no app of ours, nothing uploaded to us. The hub reads the meshes, levels them, joins them at the doorways and derives the walls. Tap a node’s box on the scan and it is placed to a few centimetres. What you get back is one seamless house: fly in from above, down through the roof, into any room, with the live map painted on the real geometry.
The whole house lit floor by floor. At this distance the map claims only that, and which storey.
Rooms come from the scanned walls. The warm patch sits where the links say; a person still is held for ~30 s, then confirmed by breathing.
The real geometry of the room from your scan, the person as a soft disc sized to the calibrated error — never sharper than the radio supports.
Radio in, a map out. All of it on the hub.
ESP-NOW broadcasts, ten sweeps a second, no router in the loop. Every frame is sealed with the installation key; the hub refuses what it cannot verify.
52 subcarrier amplitudes per link, per sweep. Phase is unusable across commodity radios, so the pipeline never pretends to have it.
Links become ellipses through voxels; a regularised inverse turns 66 numbers into a field, clipped to the walls you drew. Ten times real time on a laptop.
What it does, and what it doesn’t.
Every row says where its number was measured. The rig has been running on real hardware since 2026-09-07, but no row below has been re-measured on it yet, so they still say “simulation”. The word changes before the claim does.
An afternoon, and it survives a reboot.
git clone https://github.com/Marlow-Systems-LLC/kymomap.git cd kymomap && make setup && make serve-sim # or: docker compose -f docker-compose.hub.yml up
Firmware compiles in CI against ESP-IDF v5.5.5 and has run on the reference rig since 2026-09-07: nodes associate, sound, and deliver CSI to the hub. The numbers in the table above are still the simulator’s — a first-day install is not a measurement — and the word changes before the claim does.