ruvnet /
RuView
WiFi-based sensing for presence, breathing and heart rate using cheap ESP32 boards
- 99.2k stars
- 3.3k stars since 3 Oct
- Rust
- Updated today
- Advanced
- Other
Every WiFi router fills a room with radio waves, and people disturb those waves when they move or breathe. RuView captures these disturbances as Channel State Information (CSI) from ESP32 boards that cost about $9 each. It turns them into data about who is in a room and what they are doing.
Signal processing handles the basics: band-pass filters on the signal phase give breathing and heart rate, and phase changes flag motion and falls. A small pretrained model from Hugging Face handles presence and embeddings, and a fallback based on phase variance works with no model. It runs on edge hardware with no cloud, and learns each room locally.
Compared with cameras or wearables, nothing is filmed and nobody wears anything. The README is open about limits: the on-device pose model is a first cut with low accuracy, the unified RF world model is still validated only on synthetic data, and an older 100% presence figure has been retracted. The repo also ships an npm toolkit, MetaHarness, so AI agents can help with setup, calibration and verification.
What it does
Contactless vital signs
Estimates breathing (6-30 BPM) and heart rate (40-120 BPM) from filtered WiFi phase data in real time.
Presence, motion and falls
Detects and counts people, recognises activity, and flags falls using phase-acceleration thresholds with debouncing.
Smart-home integration
Publishes to Home Assistant over MQTT with one flag, and can act as an Apple Home bridge or Matter endpoint. It exposes 21 entities per node, including sleeping, bed-exit and no-movement states.
Pretrained models and edge modules
Pretrained weights are on Hugging Face, including a 4-bit encoder that fits in 8 KB. A catalog of 105 small modules can run directly on the ESP32.
MetaHarness for AI agents
The @ruvnet/ruview npm package offers source-cited guidance, ESP32 flashing, an MCP server, a Claude Code mod, and a check for overstated accuracy claims. Agent runs are read-only by default.
What you could build
- Monitor a bedroom overnight for breathing rate and sleep quality without a wearable.
- Trigger Home Assistant automations when a room is occupied or when someone has not moved for a long time.
- Detect falls or bed exits for an elderly relative without putting cameras in the home.
- Count people in a room or queue using ESP32 nodes and the edge counting modules.
- Record CSI data and train your own presence or pose models for research.
Get started
The quickest way to look around is the Docker image, which runs with simulated data and needs no hardware. For real sensing, flash firmware onto an ESP32-S3, provision it with your WiFi, and then connect it to the server or Home Assistant.
docker pull ruvnet/wifi-densepose:latestdocker run -p 3000:3000 ruvnet/wifi-densepose:latestCommands are copied from the project's README. Read it on GitHub for the full setup.