BLOG
Seeing Through Walls With WiFi — Trying the Camera-Free Human-Detection OSS 『RuView』 on ESP32
『RuView』 is a Rust OSS that estimates human presence, breathing, and posture with no camera, using WiFi reflections (CSI). Here's how you build it on a $9 ESP32-S3, how to try it with Docker, and how it differs from esp-csi.

Estimating a person’s presence, breathing rate, heart rate — and even their body posture — using nothing but the WiFi radio waves already bouncing around the room, with no camera at all. It sounds like science fiction, but we’ve reached the point where you can reproduce it with a $9 microcontroller and open-source software.
At the center of it is ruvnet/RuView — a Rust WiFi-sensing platform that has gathered more than 60,000 stars. It turns an ESP32-S3 into a sensor node, analyzes the “reflection patterns” of WiFi signals, and reads the state of a space without ever capturing any imagery.
This article lays out how RuView works and how it’s architected, how to actually try it, and how it differs from similar OSS projects (espressif/esp-csi, WirelessEye). The aim is to give you the material you need to decide “should I adopt this for my own project?”
Why a person becomes “visible” without a camera
The key is CSI (Channel State Information).
WiFi signals don’t travel in a straight line from transmitter to receiver. They bounce off walls, furniture — and the human body — arriving at the receiver via multiple paths. CSI is a fine-grained record of “which frequencies arrived, how much they were attenuated, and how much their phase was shifted.”
- A person moves → the reflection paths change → the CSI waveform changes
- A person breathes → the chest rises and falls by millimeters → a periodic micro-variation appears in the CSI
- A person holds a specific posture → a unique “fingerprint” shows up in the reflection pattern
In other words, a WiFi router is already “illuminating” the room simply by emitting radio waves. RuView is positioned as the receiving sensor that reads that reflected light (radio). Because it holds no imagery the way a camera does, the resistance on the privacy front is overwhelmingly smaller — and that is its greatest advantage.
RuView’s architecture
RuView is broadly split into three layers.
1. Sensor node (ESP32-S3)
The $9 ESP32-S3 plays the role of emitting the raw CSI data. The ESP32 family has a CSI-acquisition API at the chip level, so you can stand at the entrance to WiFi sensing with a cheap off-the-shelf microcontroller — no dedicated SDR (software-defined radio) hardware required. This is exactly what rapidly democratized the genre.
2. Processing engine (Rust)
Raw CSI is full of noise. RuView’s core is a signal-processing and inference engine written in Rust, and it handles the following:
- Preprocessing such as noise removal and phase correction
- Extraction of periodic components like breathing and heartbeat
- Feature computation and model inference for posture and presence detection
The choice of Rust is surely aimed at combining real-time performance with memory safety. For signal processing that runs continuously at the edge, it’s a reasonable pick.
3. Visualization / API layer
This is the layer that exposes the estimation results to the outside via a dashboard or API. Since it can all be brought up together with Docker, spinning it up on your own machine first is the quickest way to grasp the whole picture.
Trying it with Docker
Before building anything deep, seeing it in a working state first is the shortcut to understanding. RuView is set up to launch as a full stack via Docker Compose.
git clone https://github.com/ruvnet/RuView.git
cd RuView
docker compose up
This brings up the processing engine and the visualization layer, and you can reach the dashboard from your browser. The setup is designed so that you can feed in sample CSI data and confirm the behavior even without a physical ESP32-S3 on hand, so if you want to feel out “what can even be read from CSI in the first place,” starting here is the shortest path.
To actually sense, you go further: flash the firmware onto the ESP32-S3 and send the CSI stream toward the engine. Only at this stage does “the breathing on the other side of the wall” finally emerge as numbers.
How it differs from esp-csi / WirelessEye
RuView isn’t the only WiFi-sensing OSS. To help with adoption decisions, here are three representative ones.
espressif/esp-csi
This is Espressif’s official repository, centered on firmware and samples for acquiring CSI on the ESP32. Its positioning is “CSI acquisition and basic samples,” and it assumes you’ll build the higher-level inference, visualization, and operations yourself.
- Strength: Official, lightweight, closest to the chip — CSI acquisition is rock solid
- Weakness: Doesn’t cover presence detection or posture estimation. It’s a foundation, not a finished product
RuView becomes easy to place if you think of it as stacking inference, visualization, and operations on top of that esp-csi-style “acquire the CSI” layer.
WirelessEye
This is a tool focused on visualizing CSI in real time. It’s strong in the research and learning phase, when you first want to see with your own eyes “what’s showing up in the radio waves.” That said, it isn’t the kind of processing foundation you’d embed directly into a product as-is.
Where RuView stands
| OSS | Focus | Character of completeness |
|---|---|---|
| esp-csi | CSI acquisition | Foundation (upper layers DIY) |
| WirelessEye | CSI visualization | For observation / learning |
| RuView | Acquisition → inference → visualization | Integrated platform |
If you want to “understand the mechanism first,” peeking at the radio waves with esp-csi or WirelessEye is quick. If you want to “try presence, breathing, and posture end-to-end,” go with RuView — that’s how the division of labor shakes out.
Realistic caveats when considering adoption
It’s a technology full of promise, but if you’re going to use it in production, you need a cool-headed line-drawing.
- Accuracy depends on the environment: CSI changes dramatically with furniture placement, wall materials, and interference from other WiFi devices. It’s not that “any room instantly yields accuracy” — per-environment calibration is a prerequisite.
- Not a camera replacement, but a different thing: Identifying individuals and recognizing fine movements is the camera’s domain. Where CSI is strong is not “who” but privacy-conscious, coarse state awareness like “someone is here / moved / is breathing.”
- It suits particular uses: Elderly monitoring, HVAC and lighting control via occupancy detection, vital monitoring during sleep — its true value shows exactly in places where you don’t want to put a camera.
Put the other way: on sites with the constraint “can’t / don’t want to place a camera,” RuView — which you can start with a $9 ESP32 — is a very attractive option.
Summary
WiFi sensing has moved from an era that required dedicated, expensive equipment into a phase where anyone can try it with a cheap microcontroller and OSS. RuView bundles that “from acquisition through inference and visualization” into one, making it one of the most approachable entry points available right now.
First run it with Docker to feel out what shows up in the CSI, and if it clicks, buy a single ESP32-S3 and advance to real measurement — with this order, a few thousand yen and a few hours get you touching a world where “you can see through walls with WiFi.”
If you’re considering a sensor-data processing foundation, or product development that involves these kinds of edge devices, please feel free to reach out to Wired & Eco, Inc.