-
Release v3066 Stable
released this
2026-10-06 11:25:36 -05:00 | 33 commits to main since this release📅 Originally published on GitHub: Tue, 06 Oct 2026 16:44:43 GMT
🏷️ Git tag created: Tue, 06 Oct 2026 16:25:36 GMTAutomated release from CI pipeline
Changes:
docs: focus animation on RuView sensing and spatial awarenessDocker Image:
ghcr.io/ruvnet/RuView:2d5472372f638928219d938029dfca4f86e9700fDownloads
-
Release v3065 Stable
released this
2026-10-06 11:25:36 -05:00 | 33 commits to main since this release📅 Originally published on GitHub: Tue, 06 Oct 2026 16:40:22 GMT
🏷️ Git tag created: Tue, 06 Oct 2026 16:25:36 GMTAutomated release from CI pipeline
Changes:
docs: add ruOS animation below RuView headerDocker Image:
ghcr.io/ruvnet/RuView:efdf97ecc1cc0aea73ea7de6b9efad18520a4e24Downloads
-
Release v3064 Stable
released this
2026-10-06 11:25:36 -05:00 | 33 commits to main since this release📅 Originally published on GitHub: Tue, 06 Oct 2026 16:37:55 GMT
🏷️ Git tag created: Tue, 06 Oct 2026 16:25:36 GMTAutomated release from CI pipeline
Changes:
docs: upload Ruflo-powered ruOS desktop animationDocker Image:
ghcr.io/ruvnet/RuView:46d80ffc3a6a1159337534f876a5bcc398f27610Downloads
-
Release v3067 Stable
released this
2026-10-06 11:25:36 -05:00 | 33 commits to main since this release📅 Originally published on GitHub: Tue, 06 Oct 2026 16:45:19 GMT
🏷️ Git tag created: Tue, 06 Oct 2026 16:25:36 GMTAutomated release from CI pipeline
Changes:
docs: describe RuView-focused README animationDocker Image:
ghcr.io/ruvnet/RuView:0ef6b96fe15e30b4a086992e47e18081a0ba37ceDownloads
-
released this
2026-10-05 15:52:42 -05:00 | 37 commits to main since this release📅 Originally published on GitHub: Mon, 05 Oct 2026 22:25:06 GMT
🏷️ Git tag created: Mon, 05 Oct 2026 20:52:42 GMTWhat's new, in plain language
This release folds in a large batch of fixes and improvements contributed by @aepod (Mathew): 38 pull requests, reviewed together, tested together, and shipped as one. Most of it makes RuView more honest about what it is actually doing and safer by default.
If you run the sensing server
- It no longer shows "connected" when nothing is connected. The status page waits for a real frame from a device. If frames stop, it says so, and
/api/v1/sensing/latestreportsstaleafter 10 seconds instead of showing the last reading forever. - Real numbers instead of placeholders. Frame rate and the number of connected WebSocket viewers are now measured, not fixed values.
- A node that is not there no longer counts as one person.
- Privacy mode now covers everything.
--privacy-moderemoves heart rate, breathing rate and pose from the web API, WebSocket and saved recordings, not just MQTT. (Presence, motion and person count are still shown. States that are derived from vitals, such as "someone sleeping", still pass through.) - Safer startup. If you open the server to your network without an API token, it now refuses to start instead of silently exposing it.
- Recordings and models stay in
--data-dir. Previously some went to a hard-coded folder. - Environment switches are friendlier.
RUVIEW_UDP_INSECURE_LAN=1,yesoronall work, not onlytrue. - Fewer wrongly dropped frames. The server now locks onto the most common frame shape. This is a partial fix: if one node alternates between two frame sizes, a large share of its frames can still be dropped. Tracked in the follow-up issue.
If you use Docker or a Mac
- The Docker image makes clear when it can and cannot receive ESP32 data, instead of failing silently.
- On macOS, a redacted Wi-Fi link is now handled without inventing a network name.
- Breaking change:
--source macos,--source linuxand--source windowsare no longer accepted and now exit with an error. Useauto,esp32,wifi,mediatek,qualcomm,realtekorsimulated.
If you set up ESP32 nodes
- Your Wi-Fi password is kept private. It is no longer shown on the command line or in
--stateoutput, and saved settings are readable only by you. (On Windows these file protections do not apply.) - Settings follow the board, not the USB port. Swapping boards on the same port no longer applies the wrong node ID.
--dry-runand a failed--resetno longer overwrite your saved settings.- Safer firmware updates. A new over-the-air image is only confirmed once the node has reached the network and sent CSI. If not, the node rolls back. Note this means "it came up and talked", not "it is working well".
New hardware support: MediaTek routers
Early support for reading Wi-Fi channel data from MediaTek MT7981 routers (such as the WN586X3), with a setup guide. This is experimental: it has been tested against one real capture, and the activity score it produces is a labelled rough guess, not a measurement of people.
Home Assistant and MQTT
- Home Assistant now only gets entities that actually receive data (15 per node).
- Device IDs are stable across restarts.
- Heads-up: installs that already ran the older version keep six old entities until you delete them in Home Assistant.
Training and labelling (for developers)
- Training now uses your real recordings, per node. If it ever has to fall back to live data, the result is marked degraded instead of quietly looking successful.
- New radar-based auto-labelling tools. Labels from radar are tagged as unverified, not ground truth.
- A node self-survey that checks your configured node positions (it never changes them), and a new way to export what RuView "sees" in a room.
- A plain bug fix: the signal "decay" no longer changed depending on how often it ran.
Small but useful
scripts/prove.shnow says INCOMPLETE instead of PASS when it skipped part of the proof.- The dashboard asks for your API token instead of retrying forever.
- A weak 41.5%-accuracy sample model was removed from the repository, so it can no longer load automatically on startup.
What is not in this release
- MR60 radar detection change (#2142) is held until it is checked against a real MR60BHA2 radar.
- MacWifi.app (#2106) is still a draft.
How much to trust the numbers
We label evidence in this project. For this release:
- The test suites pass on the combined code, and CI is green. That is MEASURED.
- Hardware results quoted in the individual pull requests (for example one node going from 17.6% to 88.5% of frames used) come from the contributor's own live runs and have not been independently reproduced. Treat them as CLAIMED.
- WiFi sensing is not camera-grade. Nothing here changes that.
Credit
Thank you to @aepod for the 38 pull requests and the unusually careful issue write-ups behind them.
Full details, conflict notes and review findings: PR #2163. Remaining work and open questions: issue #2165.
Downloads
- It no longer shows "connected" when nothing is connected. The status page waits for a real frame from a device. If frames stop, it says so, and
-
Release v3037 Stable
released this
2026-10-04 08:07:58 -05:00 | 129 commits to main since this release📅 Originally published on GitHub: Sun, 04 Oct 2026 13:30:52 GMT
🏷️ Git tag created: Sun, 04 Oct 2026 13:07:58 GMTAutomated release from CI pipeline
Changes:
Merge pull request #2147 from ruvnet/codex/calibrated-vitals-empty-20261004fix(sensing): gate vital outputs on fresh calibrated occupancy
Docker Image:
ghcr.io/ruvnet/RuView:7c8aeacea2ad30972070196eb7d8e7200506b742Downloads
-
released this
2026-10-01 19:53:26 -05:00 | 131 commits to main since this release📅 Originally published on GitHub: Fri, 02 Oct 2026 00:53:39 GMT
🏷️ Git tag created: Fri, 02 Oct 2026 00:53:26 GMTRuView npm toolkit 0.9.1: watch your sensors live inside Claude Code
npx @ruvnet/ruview@0.9.1 doctor # what works on this machine, and how to fix what doesn'tWhat's new
See your sensors live in Claude Code. The package now includes
ruview-live, a Claude Code mod. Type/ruviewand a pane opens next to the conversation. It refreshes by itself and has three views:Key View What you see 1Overview The Wi-Fi sensing nodes streaming to your computer (frames per second, packet loss, signal strength) and an optional 60 GHz radar kit (presence, distance, heart and breathing rates) 2CSI waterfall The Wi-Fi signal itself: the strength of every subcarrier over time, in colour, scrolling as frames arrive 3Radar A top-down range fan with an animated ping out to the measured distance, plus heart, breathing and distance charts Switch views with the keys while the pane has the keyboard, or with
/ruview overview,/ruview waterfalland/ruview radarat any time.New:
ruview esp32 --spectrum. It adds the latest per-subcarrier amplitude frames for each node to a capture. This is what feeds the waterfall, and you can use it from scripts too.Also in this line (0.8–0.9):
- a console widget for ChatGPT and other MCP apps;
- an authenticated HTTP option for the MCP server;
- reading ESPHome 60 GHz radar kits over Wi-Fi;
- a friendlier terminal display;
- the
ruviewumbrella command, covering the toolkit, Homecore and the compute kernel (in the repo; see Upgrading).
Honest by design
- The waterfall says MEASURED (real frames received on your machine) or SYNTHETIC (simulator frames), taken from the packets themselves.
- Radar heart and breathing values are labelled device-reported, not validated. Values outside normal resting ranges are flagged.
- The radar kit reports distance, not direction, and the view says so.
- If a node goes quiet, its old picture is removed, not kept on screen as "live".
- The pane only reads. It never flashes, provisions or changes a device.
Tested on real hardware (MEASURED)
- ESP32-C6 running RuView firmware v0.7.0: streamed 7–18 CSI frames per second to the host. The waterfall showed the occupied Wi-Fi band and the unused edge subcarriers. Reproduce:
npx @ruvnet/ruview@0.9.1 esp32 --seconds 4 --spectrum --json. - Seeed MR60BHA2 60 GHz radar kit over ESPHome: presence, distance, and device-reported vitals.
- Tests: 193 unit tests, 91 security tests, and 4 Claude Code engine tests pass. The mod passes
claude plugin validate.
Try the live pane
npx @ruvnet/ruview@0.9.1 mod # prints where the mod is and how to load it claude --plugin-dir "<path printed above>"Mods are early access in Claude Code. If
/ruviewis missing, start Claude Code withCLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1.Upgrading
- No runtime dependencies, as before. The unpacked size ceiling rises from 384 KiB to 448 KiB for the new views.
- The harness command is
ruview-harness. Theruviewumbrella package (oneruviewcommand) is in the repo underharness/ruview-umbrella, but it isn't on npm yet: the unscopedruviewname is waiting on an npm name request.
Details: issue #2074 · pull requests #2062 and #2073 · design records ADR-377 (the mod) and ADR-378 (the waterfall and radar views).
Downloads
-
Release v2975 Stable
released this
2026-10-01 19:53:26 -05:00 | 131 commits to main since this release📅 Originally published on GitHub: Fri, 02 Oct 2026 01:17:17 GMT
🏷️ Git tag created: Fri, 02 Oct 2026 00:53:26 GMTAutomated release from CI pipeline
Changes:
Merge pull request #2062 from ruvnet/claude/ruview-npm-package-9uc5x3feat(npm): RuView npm toolkit @ruvnet/ruview 0.9.1 — kernel, SDK, flashing, device access, MCP Apps, live Claude Code views (ADR-368..378)
Docker Image:
ghcr.io/ruvnet/RuView:03a897938f65c1215d4612e9a7d800645d27d869Downloads
-
Release v2940 Stable
released this
2026-09-30 09:20:41 -05:00 | 158 commits to main since this release📅 Originally published on GitHub: Wed, 30 Sep 2026 14:53:17 GMT
🏷️ Git tag created: Wed, 30 Sep 2026 14:20:41 GMTAutomated release from CI pipeline
Changes:
fix(vitals): reject respiratory peaks and cap filtered confidence (#2061)Docker Image:
ghcr.io/ruvnet/RuView:b90b592d4f08c5c47d47f8c5d4d822b9fb3cbe0aDownloads
-
Release v2938 Stable
released this
2026-09-30 08:25:20 -05:00 | 159 commits to main since this release📅 Originally published on GitHub: Wed, 30 Sep 2026 13:43:04 GMT
🏷️ Git tag created: Wed, 30 Sep 2026 13:25:20 GMTAutomated release from CI pipeline
Changes:
fix(sensing): exclude stale nodes from room occupancy (#2060)Docker Image:
ghcr.io/ruvnet/RuView:e1fbbede61b70ac335e3a885cb0ece6863e9da95Downloads
mirror of
https://github.com/ruvnet/RuView.git
synced 2026-10-18 21:00:22 -05:00