RuView turns ordinary WiFi into a sensor. In the README's words, it lets you "detect people, measure breathing and heart rate, track movement, and monitor rooms — through walls, in the dark, with no cameras or wearables." The hardware it asks for is a $9 ESP32 board.

It's on GitHub Trending today with about 101,000 stars as of 2026-10-29. It's mostly Rust and licensed under MIT.

How it works

Every router fills a room with radio waves. When people move, breathe or even sit still, they disturb those waves in small but measurable ways. RuView reads those disturbances as Channel State Information (CSI), the per-subcarrier amplitude and phase data that WiFi chips use to correct for interference, and runs signal processing and small models over it.

Some of it is classic DSP. Breathing comes from bandpass-filtering the phase signal to 0.1–0.5 Hz and counting zero crossings, which the README rates at 6–30 breaths per minute. Heart rate uses the same trick at 0.8–2.0 Hz, for 40–120 BPM. Falls are flagged from a phase-acceleration threshold with debouncing and a cooldown. Through-wall sensing uses Fresnel-zone geometry and is rated "up to ~5 m, signal-dependent."

The rest is learned. A contrastive CSI encoder and a presence head are published on Hugging Face as ruvnet/wifi-densepose-pretrained. The 4-bit version fits in 8 KB and, per the README, runs in microseconds on a Raspberry Pi. Around that sits a lot of extra machinery:

  • Edge modules: a catalogue of 105 small signed programs for health, security, building, retail and industrial use, running beside the sensing stack.
  • A multi-node mesh: several ESP32s hopping across 6 WiFi channels, using your neighbours' routers as what the README calls "free radar illuminators."
  • Smart-home integration: it publishes to Home Assistant over MQTT, and it can join Apple Home, Google Home and Alexa through Home Assistant or as a Matter bridge. Each node exposes 21 entities, from raw signals to inferred states like "bathroom-occupied" or "bed-exit."
  • An AI operator: the @ruvnet/ruview npm toolkit, with an MCP server, Claude Code and Codex agents, firmware flashing, and a "claim-check" command that audits accuracy claims in a report.

Everything runs on local hardware. The README says there's no cloud, no camera and no internet required, and every measurement is signed into an Ed25519 witness chain.

Trying it

You can kick the tyres without any hardware. The Docker image runs on simulated data:

docker pull ruvnet/wifi-densepose:latest
export RUVIEW_API_TOKEN=$(openssl rand -hex 32)
docker run -p 127.0.0.1:3000:3000 -e RUVIEW_API_TOKEN ruvnet/wifi-densepose:latest

Then open http://localhost:3000. The container refuses to start without the token. The Python package is on PyPI as pip install ruview, which ships the breathing and heart-rate extractors plus optional WebSocket and MQTT clients. To check your setup and see what's plugged in, use the toolkit:

npx @ruvnet/ruview@0.9.1 doctor
npx @ruvnet/ruview@0.9.1 devices

For real sensing, you flash the CSI firmware onto an ESP32-S3 with esptool and provision it onto your WiFi with the repo's provision.py. The user guide walks through it. The recommended kit is an ESP32-S3 plus a Cognitum Seed appliance for about $140. A mesh of 3–6 bare ESP32-S3s with a router costs about $54.

The fine print

This is where RuView earns some respect, because the README is unusually blunt about its own limits.

  • You need CSI hardware. A normal laptop only exposes signal strength (RSSI), which is enough for coarse presence and motion and nothing more. Vital signs and through-wall sensing need an ESP32 or a research NIC.
  • The pose demo isn't the live product. The headline 17-keypoint skeleton has three maturity levels. The published benchmark model scores 82.69% on the MM-Fi dataset. The on-device model in the repo scores 3.0% PCK@20, below its own 35% target, and its runtime path is still a stub that returns zero confidence. A single-antenna ESP32 "does not carry the fine-grained spatial information" that pose needs. The README asks people not to advertise live pose without that caveat, and so will I.
  • Some accuracy is still synthetic. The unified RF world model that fuses WiFi, radar and UWB is labelled as synthetic until it's validated on real data. Device-reported vitals are marked unvalidated. An earlier "100% presence" figure was retracted in favour of 82.3%.
  • Not a medical device. Breathing and heart-rate trends from radio reflections are interesting signals. They don't replace a monitor.
  • It's sprawling. More than 1,600 commits, hundreds of design records, firmware, Rust crates, Python, npm and Docker. Start with the user guide and the Docker image, not the repo root.
  • Privacy cuts both ways. Camera-free sensing keeps faces out of the picture, but anything that can count people through walls needs consent from everyone it can see.

Who it's for

RuView suits Home Assistant tinkerers who want occupancy and sleep sensing without cameras, ESP32 hackers looking for a serious RF project, researchers who want an open CSI pipeline with honest benchmarks, and anyone curious how much a WiFi signal gives away about the room it passes through. Go in expecting solid presence, motion and breathing sensing and an experimental everything-else, and you won't be disappointed.

The GitHub repo and the live demo are the places to start, and it's in the resource index now.

End of transmission.