← Back to blog

explainx / blog

RuView: See Through Walls With WiFi — ESP32 Spatial Intelligence Platform

RuView turns ordinary WiFi signals into a spatial intelligence system. Detect people, measure breathing and heart rate, track movement through walls — no cameras, no wearables, just physics.

·6 min read·Yash Thakker
WiFi SensingESP32AI HardwareSpatial IntelligenceIoTPrivacy AI
RuView: See Through Walls With WiFi — ESP32 Spatial Intelligence Platform

Every WiFi router in your home is already a radar. It floods every room with radio waves. When someone moves, breathes, or even sits still, those waves scatter differently. RuView is an open-source platform that captures those disturbances and turns them into real spatial intelligence — and it works with a $9 ESP32 board.

No cameras. No wearables. No app on anyone's phone. Just physics.

TL;DR

FeatureDetail
Core hardwareESP32-S3 ($9) or ESP32-C6 ($6–10)
Full systemCognitum Seed (~$140 total BOM)
SensingPresence, breathing, heart rate, 17-keypoint pose, falls, room fingerprint
RangeThrough-wall up to ~5 m (signal-dependent)
PrivacyNo cameras, no wearables — GDPR/HIPAA imaging rules don't apply
AI integrationClaude Code plugin, MCP server, npx @ruvnet/ruview harness
Stars74.9k on GitHub

How WiFi Sensing Actually Works

WiFi routers transmit on multiple subcarriers simultaneously. When the signal travels from an access point to a receiver (like an ESP32 node), every person or object in the room changes how each subcarrier arrives — a measurable effect called Channel State Information (CSI).

RuView reads CSI across 56 subcarriers per link. With a mesh of 3–6 ESP32 nodes, you get up to 168 virtual subcarriers across multiple viewing angles. That signal is enough to reconstruct what's happening in a room:

WiFi Router → radio waves fill room → hit bodies → scatter
    ↓
ESP32 mesh captures CSI across channels 1/6/11 (TDM protocol)
    ↓
168 virtual subcarriers + attention-weighted cross-viewpoint embedding
    ↓
Signal processing: Hampel filter, SpotFi, Fresnel, BVP, spectrogram
    ↓
AI backbone (RuVector): attention + graph algorithms + compression
    ↓
Output: presence, breathing rate, heart rate, 17 body keypoints, room model

No training cameras required. The self-learning system (ADR-024) bootstraps from raw WiFi data alone.


What RuView Can Sense

The pretrained models, published on Hugging Face at ruvnet/wifi-densepose-pretrained, cover a surprisingly complete picture of human activity:

Vital Signs

  • Breathing rate: 6–30 BPM, real-time (bandpass 0.1–0.5 Hz)
  • Heart rate: 40–120 BPM, real-time (bandpass 0.8–2.0 Hz)

Presence and Activity

  • Through-wall presence detection: 82.3% held-out temporal-triplet accuracy, calibrates in ~30 seconds
  • Person counting: Up to 3–5 people per AP, scales linearly with multi-AP meshes
  • Fall detection: < 200 ms latency (phase-acceleration threshold + 3-frame debounce)
  • 17-keypoint pose estimation: 82.69% torso-PCK@20 on MM-Fi (beats MultiFormer at 72.25%)

Semantic States

RuView ships 10 inferred semantic states per node:

  • someone-sleeping, possible-distress, room-active
  • elderly-inactivity-anomaly, meeting-in-progress, bathroom-occupied
  • fall-risk-elevated, bed-exit, no-movement, multi-room-transition

These map directly to Home Assistant entities for automation.


Why This Matters for AI Developers

WiFi sensing removes the hardest constraint in spatial AI: the camera.

Cameras require line-of-sight, consent, signage, data retention policies, and IR lighting in the dark. WiFi works in total darkness, through walls, through shelving, and in any space where WiFi already exists — which is everywhere.

ProblemCameraWiFi (RuView)
Through-wallNoYes (up to ~5 m)
Dark roomsNeeds IRYes
Privacy/GDPRConsent + signageNo imaging rules
Hardware cost$200–$2,000/zone$0–$8/zone (existing WiFi or ESP32)
PowerConstant + compute$9 ESP32, runs for weeks on battery

The AI community has spent years improving computer vision models. RuView suggests a different question: what if the sensor itself was invisible, ubiquitous, and already in place?


Hardware Setup in 5 Minutes

Option 1: Docker (no hardware needed)

docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
# Open http://localhost:3000

Option 2: ESP32-S3 ($9 board)

# Flash firmware
python -m esptool --chip esp32s3 --port COM9 --baud 460800 \
  write_flash 0x0 bootloader.bin 0x8000 partition-table.bin \
  0xf000 ota_data_initial.bin 0x20000 esp32-csi-node.bin

# Provision WiFi credentials
python firmware/esp32-csi-node/provision.py --port COM9 \
  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20

Option 3: Python (PyPI)

pip install ruview
# or
pip install wifi-densepose

Option 4: Full system with Cognitum Seed

node scripts/rf-scan.js --port 5006           # Live RF room scan
node scripts/snn-csi-processor.js --port 5006  # SNN real-time learning
node scripts/mincut-person-counter.js --port 5006

Using RuView with Claude Code

RuView ships a complete Claude Code plugin that wraps the entire workflow into 9 skills, 7 slash commands, and 3 agents.

# Add the marketplace and install
/plugin marketplace add ruvnet/RuView
/plugin install ruview@ruview

# Available commands:
/ruview-start      # Onboarding: Docker demo / repo build / live ESP32
/ruview-flash      # Build + flash ESP32 firmware
/ruview-provision  # Provision WiFi credentials and mesh settings
/ruview-app        # Run a sensing application
/ruview-train      # Train / evaluate / publish a model
/ruview-advanced   # Multistatic / tomography / cross-viewpoint
/ruview-verify     # Tests + deterministic proof + witness bundle

For a lighter option that doesn't require cloning the repo:

npx @ruvnet/ruview

The portable harness exposes RuView operator tools (onboard, verify, node_monitor, calibrate, node_flash) over an MCP server and works with Claude Code, Codex, Copilot, and other AI coding environments.


Smart Home Integration

RuView publishes 21 entities per node to any of the major home automation ecosystems:

  • Home Assistant: MQTT auto-discovery with 3 starter Blueprints (presence, fall alert, sleep quality)
  • Apple Home: HAP-1.1 bridge — pairs as a native HomeKit accessory
  • Google Home + Alexa: Via the Matter bridge or the same HA-DISCO publisher
  • Matter: Full Matter support via the HA bridge

This means Alexa can announce "possible distress detected in bedroom" without any skill development, because RuView maps its semantic states directly to standard smart-home entities.


The Pretrained Models

All models are published openly on Hugging Face:

ruvnet/wifi-densepose-pretrained

  • 12.2M training steps on 60K frames / 610K contrastive triplets
  • 82.3% held-out temporal-triplet accuracy
  • 4-bit quantized variant fits in 8 KB (runs in microseconds on a Raspberry Pi)
pip install huggingface_hub
huggingface-cli download ruvnet/wifi-densepose-pretrained \
  --local-dir models/wifi-densepose-pretrained

Quantization options:

  • model-q2.bin — 4 KB
  • model-q4.bin — 8 KB (recommended)
  • model-q8.bin — 16 KB
  • model.safetensors — 48 KB full precision

ruvnet/wifi-densepose-mmfi-pose

  • 82.69% torso-PCK@20 on MM-Fi (single model)
  • 83.59% with 3-model ensemble + TTA
  • Beats MultiFormer (72.25%) and CSI2Pose (68.41%)

105 Edge Modules

Beyond the core sensing pipeline, RuView ships a catalog of 105 edge modules (Cogs) that run directly on ESP32 or a Cognitum appliance:

  • Health: vital-signs monitor, sleep-stage classifier, apnea screener
  • Security: fall-alert, intrusion detection, occupancy zones
  • Building: meeting-room occupancy, bathroom occupancy, customer-flow counter
  • Industrial: clean-room monitor, queue-length counter, person-matching
  • AI: world model prediction (OccWorld), 3D point-cloud fusion (camera + WiFi + mmWave)

Browse and install at seed.cognitum.one/store or your local appliance.


Use Cases Worth Knowing

Healthcare: Contactless breathing rate and heart rate monitoring for patients who can't wear devices. Sleep-stage classification and apnea screening without a sleep clinic. Fall detection for elderly residents with immediate alerts.

Retail: Customer-flow counting without cameras, queue-length monitoring, occupancy zones across a store floor — all without any video that would require consent or compliance overhead.

Office: Meeting-room occupancy detection for space utilization, presence-based HVAC triggers, multi-room transition tracking.

Defense / Search and rescue: Through-wall sensing for situational awareness in collapsed buildings, hostage situations, or search operations where cameras cannot be deployed.

Robotics: Android and robot spatial awareness without cameras — relevant for any embodied AI system that operates in human environments.


What to Watch

A few known limitations and in-progress items:

  • The sensing-server's --model flag doesn't yet accept the Hugging Face JSONL format (RVFS binary parser mismatch). Use the Python weights for now.
  • Camera-free pose estimation accuracy is limited without ground-truth paired data (~2.5% PCK@20 with proxy labels). The camera-supervised fine-tune pipeline is implemented but pending data collection.
  • ESP32-C3 and original ESP32 are not supported (single-core, insufficient for CSI DSP).
  • Single ESP32 deployments have limited spatial resolution — 2+ nodes recommended.

Getting Started

# Quickest path — no hardware, runs in Docker
docker run -p 3000:3000 ruvnet/wifi-densepose:latest

# Python
pip install ruview

# Claude Code
npx @ruvnet/ruview

# Full repo
git clone https://github.com/ruvnet/RuView

RuView is MIT-licensed with 74.9k stars, 10k forks, and 30 contributors. The GitHub repository has full documentation, ADRs, domain models, and a complete benchmark trail.

The physics of WiFi has been hiding in plain sight. RuView just makes it readable.

Related posts