mrkeyoor.com_
Mon 02 Nov 19:02 UTC
AI Toolsevaluationupdated 26 Oct 2026

RuView review

RuView is a WiFi Channel State Information (CSI) sensing workspace with ESP32 firmware, Rust components, Python tools, model artifacts, automation integrations and agent controls. Its README describes presence, motion, breathing, heart-rate and pose capabilities, but separates published benchmarks from experimental live paths. Our recorded container run checked dependency setup, build and a Python test command; it did not validate live sensing.

+2,244stars / 7d
Verdict

RuView merits a controlled research evaluation if you have CSI hardware and can verify one output at a time. In our September 29, 2026 run at commit 5ef001b, dependency setup completed, the build exited 1 without a saved diagnostic, and the test command failed its coverage requirement despite pytest reporting 34 passed. Those results establish a setup limitation in that run, not that RuView is universally broken. The more consequential adoption questions are whether your exact hardware path produces accurate results and whether your installed package contains the source fixes discussed upstream.

We ran it

Lab card: what happened when we ran RuViewScreenshot of RuView (Cognitum.One/RuView)
Install✓ · 110s210 packages · 6103 MB
Build✗ · 9s
Tests✗ · 15s34 passed · 0 failed of 34 (pytest)
Known vulns3(pip-audit)
Repo3832 files~632,255 lines of source · 116.3 MB · 33 CI workflows · tests dir

Answers from our run

Does RuView build from source?

Dependencies installed in 110 seconds (210 packages), and the build failed. We cloned commit 5ef001b into a clean Debian container with 3 CPUs and no project-specific setup.

Do RuView's tests pass?

No. The project's own test command finished in 15 seconds and reported 34 passed, 0 failed (pytest).

Does RuView have known vulnerabilities in its dependencies?

pip-audit flagged 3 known advisories in the dependency tree at the time of our run.

Who should not use RuView?

Medical, elder-care or emergency deployments requiring validated alarms: the supplied evidence does not establish suitability for those uses.

What are the alternatives to RuView?

ESP-CSI, Nexmon CSI. RuView merits a controlled research evaluation if you have CSI hardware and can verify one output at a time.

Setup1/5In the September 29, 2026 run at 5ef001b, dependency setup completed with a recorded 6,103 MB footprint, but build and test commands exited 1. Hardware setup and installed-binary operation were not validated.
Docs3/5The README gives hardware routes and explicit pose and loader limitations. Issue 2057 shows why readers must also distinguish source instructions and fixes from the published 2.0.0a1 wheel.
Community3/5Issues 2057, 2058 and 1522 contain concrete reports, maintainer responses and contributor follow-up. These exchanges support technical engagement, but do not measure adoption, response reliability or broad support coverage.
Maturity2/5The supplied evidence includes a below-target, unwired live pose path, an artifact-loading defect and unresolved occupancy bias after count stabilization. The 34 reported passing container tests do not validate live sensing accuracy.

Discussed on

  1. hnTop trending repo claims to detect movement via WiFi, yet no one can run it10 points
  2. hnShow HN: Turn commodity WiFi signals into real-time spatial intelligence6 points
  3. hnWiFi-DensePose – open-source software that sees you through walls using wifi6 points
  4. hnRuView – WiFi DensePose: See Through Walls with WiFi5 points
  5. hnRuView: See Through Walls with WiFi4 points

Who it’s for

WiFi sensing researchers who can collect CSI and evaluate results against known room conditions.
Hardware developers investigating ESP32-S3, ESP32-C6 or supported research NIC paths.
Home Assistant experimenters who can distinguish simulated data, inferred labels and validated sensor output.
Contributors prepared to trace a result through firmware, preprocessing, models and server aggregation.

Who it’s NOT for

Medical, elder-care or emergency deployments requiring validated alarms: the supplied evidence does not establish suitability for those uses.
Buyers expecting validated live 17-keypoint pose from one ESP32: the README reports a below-target on-device checkpoint and an unwired runtime path returning confidence=0.
Users expecting advanced CSI sensing from an ordinary laptop adapter: the README describes consumer laptops as an RSSI-only option.
Python users who need the published model.safetensors artifact to work unchanged with the reference loader: the README still documents its NUL-padding defect.
Teams requiring a successful build and test command from the recorded container setup: both commands exited 1, although pytest reported 34 passing tests.

Setup reality

In our recorded run on September 29, 2026 at 04:14:01.050 UTC, commit 5ef001b4fef3e08433043ebd248e6121f1221528 completed the dependency-install step in 110 seconds. The record lists 210 dependencies and 6,103 MB for the install footprint. This does not establish that a RuView CLI or installed application worked.

The build step exited 1 after approximately 9 seconds. Its saved log tail is empty, so the cause is unknown. The test command exited 1 after approximately 15 seconds: pytest reported 34 passed and 0 failed, while coverage collected no data, reported 0.00% and missed the configured 100.00% minimum. The visible test file was tests/test_invariant_Cargo.py. This was not an exhaustive validation of the repository or its sensing workloads.

Pip-audit recorded 3 known advisories across 2 packages. The number of packages scanned and the audit's coverage are unknown; the 210-dependency count is not an audit coverage count.

The recorded environment had 3 CPUs, 8 GB of memory and image ghcr.io/astral-sh/uv:python3.12-bookworm. The raw logs identify Python 3.12.12. The checkout scan recorded 3,832 files, approximately 632,255 source lines, 116.3 MB, 33 CI workflow files and a tests directory; its detector did not find a Dockerfile or Compose configuration. That detector result does not contradict the README's separately published Docker image.

The README's Docker evaluation route uses simulated data. Live CSI evaluation requires compatible hardware and the relevant firmware, provisioning and calibration steps. None of those hardware steps was validated in our recorded run.

Decide which sensing path you need

RuView's published pose benchmark and its live single-ESP32 pose path have different evidence behind them. That distinction matters more than a working skeleton visualization when deciding whether to adopt the project.

The README describes a workspace for CSI capture, sensing models, local automation and guided operation. It says advanced sensing needs CSI-capable hardware, with ESP32 and research NIC options. Consumer laptops are described as an RSSI-only route for coarse presence and motion. The Docker quick start uses simulated data, so it can help evaluate the interface without establishing live sensing accuracy.

What our recorded run established

Our run was recorded on September 29, 2026 at 04:14:01.050 UTC against commit 5ef001b4fef3e08433043ebd248e6121f1221528. It used a container configured with 3 CPUs and 8 GB of memory; the raw logs report Python 3.12.12.

The dependency-install step completed in 110 seconds. The record lists 210 dependencies and a 6,103 MB install footprint. Completion of that step does not prove that an application or CLI was installed and usable. There is no installed-binary check or measured live sensing workload in this record.

The build step exited 1 after approximately 9 seconds. Its saved tail is empty. We cannot identify the failing command, diagnose a missing dependency or generalize this failure to other installation routes.

The test command exited 1 after approximately 15 seconds. Pytest reported 34 passed and 0 failed, with the visible collection running tests/test_invariant_Cargo.py. Coverage warned that module src was never imported and no data was collected. Reported coverage was 0.00%, below the configured 100.00% minimum. The passing assertions and the failed command are separate findings. Neither the parser summary nor this log tail establishes exhaustive unique test coverage across RuView.

Pip-audit recorded 3 known advisories across 2 packages. The supplied record does not identify the advisories, affected versions or number of packages scanned. Audit coverage is unknown, and this result does not establish the security of a deployment.

The checkout scan recorded 3,832 files, approximately 632,255 source lines and 116.3 MB. It detected 33 CI workflow files and a tests directory, but no Dockerfile or Compose configuration. These are observations about that checkout and detector, not a current inventory of every deployment option.

Pose benchmarks do not validate the live ESP32 path

The README reports 82.69% torso-PCK@20 for its separate MM-Fi pose model on the random_split protocol. This is a project-reported benchmark, not a result from our run, and the README says live ESP32 compatibility has not been established for that model.

For the committed on-device pose checkpoint, the README reports 3.0% PCK@20 on a 217-sample holdout, below its target of at least 35%. It also says the runtime path remains a centered-skeleton stub returning confidence=0, with the weights not yet wired in. A checkpoint evaluation is therefore not evidence that this runtime produces those evaluated predictions.

The README also describes a dual-modal demo in which the webcam supplies ground-truth pose. When evaluating a demonstration, check which input actually drives the output before treating it as camera-free CSI evidence.

Source fixes and published packages differ

Issue 2057 originally reported heart-rate problems in ruview / wifi-densepose 2.0.0a1 on synthetic inputs, including breathing-only input producing 120 BPM. An October 22, 2026 contributor comment reports that both named defects are fixed in the source tree but remain in the published wheel discussed there. The comment dates the empty-weights fix to July 27 and the respiratory-rejection fix to September 30. Release v2940 lists the latter filter change.

The contributor's comparison also reports a remaining limitation: one synthetic input still produces a BPM number with low confidence and an Unreliable status in the current tree. These are upstream reports and comparisons, not tests we performed. They support checking the exact installed artifact and interpreting status and confidence alongside any displayed BPM number. They do not establish clinical accuracy.

Issue 2058 likewise contains later developments beyond the initial fluctuating-count report. A maintainer described state-consistency fixes and synthetic regression tests. An October 23 contributor comparison at main commit fefb0f91, using one ESP32-S3 node with firmware 0.8.15, reported that a count dwell reduced changes during an empty-room window. The contributor explicitly states that the count can still settle on a non-zero value because the underlying activity score is not an occupancy estimator. A steadier count can still be wrong.

Model loading has its own boundary

The README and issue 1522 document a NUL-padded header in the published model.safetensors file that the reference safetensors loader rejects. The issue identifies three padding bytes and describes intact tensor data; it is a serialization defect rather than evidence of corrupted weights.

The README says csi-embed-v2.safetensors loads normally and that the sensing server accepts native RVF while converting safetensors or JSONL in memory. Those alternatives address loading routes. They do not supply a matching pose decoder or establish end-to-end sensing accuracy.

Choose a small evaluation before wiring automation

The README advertises 21 Home Assistant entities per node, including inferred states such as possible distress, bed exit and elevated fall risk. These are project-described outputs. Their availability does not validate the events they label, and our container run did not test them.

Begin with one low-stakes question, such as whether a controlled room is occupied. Pin the server commit, package version, firmware and model artifact. Compare timestamped output with known room conditions, retain source and confidence information, and distinguish simulated input from live CSI. If the task is simply CSI acquisition, ESP-CSI or Nexmon CSI may be a more direct starting point, depending on your hardware.

How to read the scores

These are editorial assessments of the supplied evidence, not benchmark scores. The scale is 1 for substantial obstacles or missing validation, 2 for limited readiness, 3 for useful evidence with material gaps, 4 for strong evidence across the intended scope and 5 for comprehensive corroborated evidence. Setup considers the recorded commands and hardware work; docs considers actionable instructions and disclosures; community considers visible technical exchanges rather than star counts; maturity considers validation of the live paths discussed here. Unknown adoption, compatibility and audit coverage earn no positive credit.

Alternatives

ProjectWhat it isPick it when
ESP-CSIEspressif's CSI acquisition examples, analysis scripts and sensing demonstrations for ESP32 hardware.Choose it when the immediate task is collecting and initially analyzing ESP32 CSI, using its sender, receiver or router-based examples. This is an alternative starting point for CSI work, not a demonstrated replacement for every RuView integration.
Nexmon CSIA per-frame CSI extractor for the supported Broadcom WiFi chips listed by the project.Choose it when CSI extraction on a listed Broadcom device is the task. Check the exact chip and firmware requirements first; the project documents platform-specific firmware patching and capture steps.

What people are saying

  1. [github-trending] ruvnet/RuView

Sources

  1. RuView README
  2. RuView repository
  3. RuView release v2940
  4. Issue 2058: inconsistent active person count
  5. Issue 2057: heart-rate extraction reports
  6. Issue 1522: invalid safetensors header

More ai tools reviews

kornia · skills · anarlog · pr-agent · agent-sprite-forge · KiroCrew · the whole board →