Production-ready implementation of InvisPose - a revolutionary WiFi-based dense human pose estimation system that enables real-time full-body tracking through walls using commodity mesh routers
Go to file
arsen b74ffd958a chore(ui): serve raw.html from ui/ so the calibration console is reachable
Previously raw.html lived only at v2/crates/wifi-densepose-sensing-server/static/raw.html.
When the server is started with --ui-path /Users/arsen/Desktop/RuView/ui
(the SPA path) the calibration console returns 404 on /ui/raw.html.

Copy the file into ui/ alongside index.html so a single --ui-path
covers both the SPA and the engineer-facing raw view. The static/
copy in the crate stays as the canonical source (referenced by ADRs
104/107); ui/raw.html is a deploy mirror.

Live at http://localhost:8080/ui/raw.html.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 11:50:47 +07:00
.claude chore: add build artifacts and session state 2026-03-10 10:36:16 -04:00
.claude-flow feat: cross-node fusion + DynamicMinCut + RSSI tracking (v0.5.3) 2026-03-30 21:55:44 -04:00
.claude-plugin fix(plugins): move marketplace manifest to repo root for `/plugin marketplace add ruvnet/RuView` 2026-05-11 19:52:04 -04:00
.github ci: step-level continue-on-error on every step of the flaky scan jobs 2026-05-13 09:26:35 -04:00
.swarm chore: add runtime artifacts to .gitignore and untrack them 2026-03-14 13:44:27 -04:00
.vscode feat: QEMU ESP32-S3 testing platform + swarm configurator (ADR-061/062) (#260) 2026-03-14 13:39:51 -04:00
archive chore(repo): move v1/ → archive/v1/ + add archive/README.md (#430) 2026-04-25 23:07:52 -04:00
assets docs(sensors): correct hardware mapping — nodes 1/2 are camera boards 2026-05-18 11:13:51 +07:00
dashboard fix(dashboard): settings drawer scrim covers viewport (host transform fix) 2026-04-27 13:59:34 -04:00
data/recordings feat(server): accuracy sprint 001 — Kalman tracker, multi-node fusion, eigenvalue counting 2026-04-03 08:59:17 -04:00
docker deploy(esp32s3): fix DSP, OTA, discovery, mobile WS for room01/room02 2026-05-14 18:56:04 +07:00
docs fix(docs): repair internal links broken by README/CLAUDE doc-slim 2026-05-18 11:34:02 +07:00
examples chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00
firmware feat(adr-115): POST /ota/set-target — set CSI target IP/port via WiFi 2026-05-17 18:27:06 +07:00
logging updates 2025-06-07 11:44:19 +00:00
monitoring updates 2025-06-07 11:44:19 +00:00
plans I've successfully completed a full review of the WiFi-DensePose system, testing all functionality across every major 2025-06-09 17:13:35 +00:00
plugins/ruview fix(plugins): move marketplace manifest to repo root for `/plugin marketplace add ruvnet/RuView` 2026-05-11 19:52:04 -04:00
references fix: use weights_only=True for safe PyTorch model loading 2026-03-03 18:08:31 -05:00
releases/desktop chore: add build artifacts and session state 2026-03-10 10:36:16 -04:00
scripts feat(adr-114): 2000-packet replay regression suite 2026-05-17 17:00:10 +07:00
tests fix: Docker entrypoint arg handling + configurable model directory 2026-04-18 21:55:01 +00:00
ui chore(ui): serve raw.html from ui/ so the calibration console is reachable 2026-05-18 11:50:47 +07:00
v2 feat(adr-121): HLK-LD2402 mmWave radar live readout in UI 2026-05-18 11:27:28 +07:00
vendor chore(vendor): add rvcsi as a vendor submodule (github.com/ruvnet/rvcsi) 2026-05-12 22:52:12 -04:00
wifi_densepose fix: add wifi_densepose package for correct module import (#314) 2026-03-27 17:31:03 -04:00
.dockerignore feat: Docker images, RVF export, and README update 2026-02-28 23:44:30 -05:00
.gitignore docs: CHECKLIST sweep + .gitignore session artifacts + UI CSS catchup 2026-05-18 10:32:39 +07:00
.gitmodules chore(vendor): add rvcsi as a vendor submodule (github.com/ruvnet/rvcsi) 2026-05-12 22:52:12 -04:00
.mcp.json feat(claude-flow): Init claude-flow v3, pretrain on repo, update CLAUDE.md 2026-02-28 16:06:55 +00:00
CHANGELOG.md docs(changelog): ADR-099 introspection tap — entry under [Unreleased] 2026-05-13 23:37:50 -04:00
CHECKLIST.md docs: enforce ≤200-line cap on README/CLAUDE/CHECKLIST and 3 ADRs 2026-05-18 11:04:15 +07:00
CLAUDE.md docs: enforce ≤200-line cap on README/CLAUDE/CHECKLIST and 3 ADRs 2026-05-18 11:04:15 +07:00
LICENSE Add comprehensive CSS styles for UI components and dark mode support 2025-06-07 13:28:02 +00:00
Makefile feat: Add guided installer with hardware detection and RVF build profiles 2026-02-28 13:41:47 +00:00
README.md fix(docs): repair internal links broken by README/CLAUDE doc-slim 2026-05-18 11:34:02 +07:00
benchmark_baseline.json feat: cross-node fusion + DynamicMinCut + RSSI tracking (v0.5.3) 2026-03-30 21:55:44 -04:00
deploy.sh updates 2025-06-07 11:44:19 +00:00
example.env minor updates 2025-06-07 17:11:45 +00:00
install.sh chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00
pyproject.toml fix: add wifi_densepose package for correct module import (#314) 2026-03-27 17:31:03 -04:00
requirements-dev.txt fix: move test-only deps out of requirements.txt into requirements-dev.txt (#411) 2026-04-25 20:11:34 -04:00
requirements.txt fix: move test-only deps out of requirements.txt into requirements-dev.txt (#411) 2026-04-25 20:11:34 -04:00
verify perf: 5.7x Doppler extraction speedup, trust kill switch, fix NN benchmark 2026-02-28 06:48:41 +00:00

README.md

π RuView

RuView - WiFi DensePose

Beta Software — Under active development. APIs and firmware may change. Known limitations:

  • ESP32-C3 and original ESP32 are not supported (single-core, insufficient for CSI DSP)
  • Single ESP32 deployments have limited spatial resolution — use 2+ nodes or add a Cognitum Seed for best results
  • Camera-free pose accuracy is limited (PCK@20 ≈ 2.5% with proxy labels) — camera ground-truth training targets 35%+ PCK@20; the pipeline is implemented, but the data-collection and evaluation phases (ADR-079 P7P9) are still pending, so no measured camera-supervised PCK@20 has been published yet

Contributions and bug reports welcome at Issues.

See through walls with WiFi

Turn ordinary WiFi into a spatial intelligence / sensing system. Detect people, measure breathing and heart rate, track movement, and monitor rooms — through walls, in the dark, with no cameras or wearables. Just physics.

π RuView is a WiFi sensing platform that turns radio signals into spatial intelligence.

Every WiFi router already fills your space with radio waves. When people move, breathe, or even sit still, they disturb those waves in measurable ways. RuView captures these disturbances using Channel State Information (CSI) from low-cost ESP32 sensors and turns them into actionable data: who's there, what they're doing, and whether they're okay.

What it senses:

  • Presence and occupancy — detect people through walls, count them, track entries and exits
  • Vital signs — breathing rate and heart rate, contactless, while sleeping or sitting
  • Activity recognition — walking, sitting, gestures, falls — from temporal CSI patterns
  • Environment mapping — RF fingerprinting identifies rooms, detects moved furniture, spots new objects
  • Sleep quality — overnight monitoring with sleep stage classification and apnea screening

Built on RuVector and Cognitum Seed, RuView runs entirely on edge hardware — an ESP32 mesh (as low as $9 per node) paired with a Cognitum Seed for persistent memory, cryptographic attestation, and AI integration. No cloud, no cameras, no internet required.

The system learns each environment locally using spiking neural networks that adapt in under 30 seconds, with multi-frequency mesh scanning across 6 WiFi channels that uses your neighbors' routers as free radar illuminators. Every measurement is cryptographically attested via an Ed25519 witness chain.

RuView also supports pose estimation (17 COCO keypoints via the WiFlow architecture), trained entirely without cameras using 10 sensor signals — a technique pioneered from the original DensePose From WiFi research at Carnegie Mellon University.

Built for low-power edge applications

Edge modules are small programs that run directly on the ESP32 sensor — no internet needed, no cloud fees, instant response.

Rust 1.85+ License: MIT Tests: 1463 Docker: multi-arch Vital Signs ESP32 Ready crates.io

What How Speed
🦴 Pose estimation CSI subcarrier amplitude/phase → 17 COCO keypoints 171K emb/s (M4 Pro)
🫁 Breathing detection Bandpass 0.1-0.5 Hz → zero-crossing BPM 6-30 BPM
💓 Heart rate Bandpass 0.8-2.0 Hz → zero-crossing BPM 40-120 BPM
👤 Presence sensing Trained model + PIR fusion — 100% accuracy 0.012 ms latency
🧱 Through-wall Fresnel zone geometry + multipath modeling Up to 5m depth
🧠 Edge intelligence 8-dim feature vectors + RVF store on Cognitum Seed $140 total BOM
🎯 Camera-free training 10 sensor signals, no labels needed 84s on M4 Pro
📷 Camera-supervised training MediaPipe + ESP32 CSI → 35%+ PCK@20 target (ADR-079; eval phases pending) ~19 min on laptop (pipeline)
📡 Multi-frequency mesh Channel hopping across 6 bands, neighbor APs as illuminators 3x sensing bandwidth
🌐 3D point cloud (optional fusion) Camera depth (MiDaS) + WiFi CSI + mmWave radar → unified spatial model 22 ms pipeline · 19K+ points/frame
# Option 1: Docker (simulated data, no hardware needed)
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
# Open http://localhost:3000

# Option 2: Live sensing with ESP32-S3 hardware ($9)
# Flash firmware, provision WiFi, and start sensing:
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
python firmware/esp32-csi-node/provision.py --port COM9 \
  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20

# Option 3: Full system with Cognitum Seed ($140)
# ESP32 streams CSI → bridge forwards to Seed for persistent storage + kNN + witness chain
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  # Correct person counting

[!NOTE] CSI-capable hardware recommended. Presence, vital signs, through-wall sensing, and all advanced capabilities require Channel State Information (CSI) from an ESP32-S3 ($9) or research NIC. The Docker image runs with simulated data for evaluation. Consumer WiFi laptops provide RSSI-only presence detection.

Hardware options for live CSI capture:

Option Hardware Cost Full CSI Capabilities
ESP32 + Cognitum Seed (recommended) ESP32-S3 + Cognitum Seed ~$140 Yes Pose, breathing, heartbeat, motion, presence + persistent vector store, kNN search, witness chain, MCP proxy
ESP32 Mesh 3-6x ESP32-S3 + WiFi router ~$54 Yes Pose, breathing, heartbeat, motion, presence
Research NIC Intel 5300 / Atheros AR9580 ~$50-100 Yes Full CSI with 3x3 MIMO
Any WiFi Windows, macOS, or Linux laptop $0 No RSSI-only: coarse presence and motion

No hardware? Verify the signal processing pipeline with the deterministic reference signal: python archive/v1/data/proof/verify.py


WiFi DensePose — Live pose detection with setup guide
Real-time pose skeleton from WiFi CSI signals — no cameras, no wearables

▶ Live Observatory Demo  |  ▶ Dual-Modal Pose Fusion Demo  |  ▶ Live 3D Point Cloud

The server is optional for visualization and aggregation — the ESP32 runs independently for presence detection, vital signs, and fall alerts.

Live ESP32 pipeline: Connect an ESP32-S3 node → run the sensing server → open the pose fusion demo for real-time dual-modal pose estimation (webcam + WiFi CSI). See ADR-059.

🔬 How It Works

WiFi routers flood every room with radio waves. RuView's ESP32 mesh captures CSI from those waves, fuses it across channels and nodes, and feeds a coherence-gated signal pipeline into an attention-graph neural network that outputs pose keypoints, vital signs, and room fingerprints.

Full pipeline diagram + module-by-module breakdown: docs/architecture.md


🏢 Use Cases & Applications

RuView serves four deployment tiers: Everyday (healthcare, retail, office), Specialized (events, fitness, education), Robotics & Industrial (cobots, AMRs, manufacturing) and Extreme (search & rescue, defense, underground). Each one comes with a concrete hardware BOM, expected accuracy, and pointer to the matching ADR-041 edge module.

Also covers the Self-Learning WiFi AI (ADR-024) (128-dim fingerprint, 55 KB on ESP32) and the full 60-module ADR-041 Edge Intelligence catalogue.

Full catalogue + tables: docs/use-cases.md


🧩 Claude Code & Codex Plugin

RuView ships a Claude Code plugin (and Codex prompt mirror) that wraps the whole workflow — onboarding, ESP32 setup, configuration, sensing apps, model training, advanced multistatic sensing, CLI/API/WASM, mmWave radar, and witness verification — as 9 skills, 7 /ruview-* commands, and 3 agents. It lives in plugins/ruview/; the marketplace manifest is .claude-plugin/marketplace.json at the repo root.

# In Claude Code — add this repo as a plugin marketplace, then install:
/plugin marketplace add ruvnet/RuView
/plugin install ruview@ruview

# Or try it for one session without installing (from a local clone of the repo):
claude --plugin-dir ./plugins/ruview

# Then, in Claude Code:
#   /ruview-start      → onboarding (Docker demo / repo build / live ESP32)
#   /ruview-flash      → build + flash ESP32 firmware
#   /ruview-provision  → provision WiFi creds, sink IP, channel/MAC, mesh slots
#   /ruview-app        → run a sensing application (presence / vitals / pose / sleep / MAT / point cloud)
#   /ruview-train      → train / evaluate / publish a model (incl. GPU on GCloud)
#   /ruview-advanced   → multistatic / tomography / cross-viewpoint / mesh-security
#   /ruview-verify     → tests + deterministic proof + witness bundle

Codex (OpenAI CLI): cp plugins/ruview/codex/prompts/*.md ~/.codex/prompts/ — the seven /ruview-* commands are mirrored as Codex prompts; plugins/ruview/codex/AGENTS.md carries the project rules. See plugins/ruview/codex/README.md.

Verify the plugin structure: bash plugins/ruview/scripts/smoke.sh. Full details: plugins/ruview/README.md.


📖 Documentation

Document Description
User Guide Step-by-step guide: installation, first run, API usage, hardware setup, training
Build Guide Building from source (Rust and Python)
Claude Code / Codex Plugin The ruview plugin + marketplace — skills, /ruview-* commands, agents, and the Codex prompt mirror
Architecture Decisions 96 ADRs — why each technical choice was made, organized by domain (hardware, signal processing, ML, platform, infrastructure)
Domain Models 8 DDD models (RuvSense, Signal Processing, Training Pipeline, Hardware Platform, Sensing Server, WiFi-Mat, CHCI, rvCSI) — bounded contexts, aggregates, domain events, and ubiquitous language
rvCSI — edge RF sensing runtime Rust-first / TypeScript-accessible / hardware-abstracted CSI runtime: multi-source ingestion (incl. real nexmon_csi .pcap from a Raspberry Pi 5 / Pi 4 / Pi 3B+ — CYW43455 / BCM43455c0) → validation → DSP → typed events → RuVector RF memory (ADR-095, ADR-096, domain model). Now its own repo — ruvnet/rvcsi — vendored here under vendor/rvcsi; 9 rvcsi-* crates on crates.io, @ruv/rvcsi on npm, plus a Claude Code plugin.
Desktop App WIP — Tauri v2 desktop app for node management, OTA updates, WASM deployment, and mesh visualization
Medical Examples Contactless blood pressure, heart rate, breathing rate via 60 GHz mmWave radar — $15 hardware, no wearable
Extended Documentation Latest additions, key features, installation, quick start, signal processing, training, CLI, testing, deployment, and changelog

📄 License

MIT License — see LICENSE for details.

📞 Support

GitHub Issues | Discussions | PyPI


WiFi DensePose — Privacy-preserving human pose estimation through WiFi signals.