anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

ruvnet’s open source WiFi sensing platform. Low-cost ESP32 boards read ordinary WiFi signals to estimate presence, movement, breathing and heart rate with no camera. A Claude Code plugin and an MCP server let your agent flash, calibrate and check a setup.
RuView is an open-source project on GitHub in the Developer category, listed by Mindket. It is free. This is version 2, last updated on . Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.
export RUVIEW_API_TOKEN=$(openssl rand -hex 32) docker run -p 127.0.0.1:3000:3000 -p 127.0.0.1:3001:3001 -e RUVIEW_API_TOKEN ruvnet/wifi-densepose:latest
RuView is an open source WiFi sensing platform made by ruvnet. A router fills a room with radio waves, and people change them when they move or breathe. A low-cost ESP32 board records those changes as Channel State Information (CSI). RuView’s software turns the record into presence, movement, breathing and heart-rate estimates, with no camera. This listing covers the software and the part that touches your coding agent. That part is a Claude Code plugin, Codex prompts, an npm toolkit with an MCP server and a live sensing pane.
Makers and developers who want to sense a room without a camera and have an ESP32 board or will buy one. Home Assistant users get presence and motion from the MQTT feed. Researchers get a Rust and Python codebase with a published benchmark and a one-command proof. Developers who work with Claude Code or Codex get commands that walk through flashing, provisioning, sensing apps, training and verification, and the npm toolkit adds a room-calibration tool. The README labels the project beta and says its applications are research and prototypes.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Smart homes | Home Assistant users | Run the sensing server with the MQTT flag and read presence, motion and person count as entities | A user points the server at a Mosquitto broker, and Home Assistant makes a device for each node within about five seconds. |
| Care and wellbeing | Builders of monitoring prototypes | Try fall alerts, night-time activity and breathing during sleep without a wearable | A builder puts one ESP32-S3 in a bedroom and treats the output as a prototype, as the README advises. |
| Retail and offices | Facility teams | Read foot traffic, dwell time and queue length from existing WiFi plus an ESP32 | A shop owner reads dwell time by zone and queue length with no camera in the shop. |
| Research and teaching | Students and WiFi sensing researchers | Replay the deterministic proof and read the benchmark notes | A student runs the proof script and checks that it prints VERDICT: PASS. |
Skip it if you need a medical-grade reading. The README says vital-sign and pose output needs independent validation on your own hardware, room and people before any operational use. It also calls the live 17-keypoint pose model first-cut and below its own target, so skip it if pose from one board is the point.
The docs write full steps for Claude Code and Codex, and give ChatGPT and other MCP clients a way in. The sensing server itself runs in Docker or from a Rust build.
Hardware commands only work on the machine the board is plugged into. A cloud agent cannot reach your USB ports.
Get it saves a zip of Mindket’s setup notes in your downloads folder, with each agent’s and platform’s steps from the maker’s docs. The quickest start needs no hardware: a Docker image that runs on simulated data.
| Need | Detail |
|---|---|
| Docker | Docker 20 or newer runs the demo image on simulated data |
| An ESP32 board | For live sensing the README recommends an ESP32-S3. A Windows or macOS laptop’s WiFi gives only coarse RSSI presence and motion. The user guide says Linux has no RSSI source yet |
| Python 3.10 or newer with esptool | To flash a board, installed with pip install esptool pyserial. The firmware README lists esptool 5.x or newer |
| Node.js 20 or newer | For the npm toolkit, its MCP server and the Claude Code pane |
| Rust | Only for a build from source. The user guide lists extra desktop packages for Debian and Ubuntu |
export RUVIEW_API_TOKEN=$(openssl rand -hex 32) docker run -p 127.0.0.1:3000:3000 -p 127.0.0.1:3001:3001 -e RUVIEW_API_TOKEN ruvnet/wifi-densepose:latest
/plugin marketplace add ruvnet/RuView /plugin install ruview@ruview
Claude Code can also take the MCP server, with the line the user guide gives.
claude mcp add ruview -- npx -y @ruvnet/ruview@0.9.1 mcp start
For a live board, the firmware README has you flash a release bundle with esptool, then give the board your WiFi details without reflashing it.
printf '%s\n' 'YourPass' > ~/.wifi-pass && chmod 600 ~/.wifi-pass python firmware/esp32-csi-node/provision.py --port COM7 \ --ssid "YourSSID" --password-file ~/.wifi-pass --target-ip 192.168.1.20
In Claude Code, the plugin’s commands run the work. The Codex prompts mirror them. The README gives each one’s job.
| Command | What it does |
|---|---|
| /ruview-start | Onboarding: pick the Docker demo, a repo build or a live ESP32 |
| /ruview-flash | Build and flash ESP32 firmware |
| /ruview-provision | Set WiFi details, the sink IP, the channel, the MAC filter and mesh slots on a node |
| /ruview-app | Run a sensing application: presence, vitals, pose, sleep, MAT or point cloud |
| /ruview-train | Train, evaluate and publish a model, including GPU training on GCloud |
| /ruview-advanced | Use multistatic sensing, tomography, cross-viewpoint fusion or mesh security |
| /ruview-verify | Run the tests, the deterministic proof and a witness bundle |
Outside the agent, the npm toolkit has its own commands. Run them on the machine the board is plugged into.
npx @ruvnet/ruview doctor npx @ruvnet/ruview devices npx @ruvnet/ruview esp32 --seconds 10
The first checks your setup and prints a fix for each failing check. The second lists what is plugged in. The third captures what your nodes stream to this machine, with each node’s rate, loss and signal strength.
You have the Docker demo running and want to see what the server answers. In a second terminal, you ask it for its health and its vital signs.
curl http://localhost:3000/health curl http://localhost:3000/api/v1/vital-signs
The user guide says the health call answers like this in simulated mode:
{"status":"ok","source":"simulated","clients":0}The source field says simulated, so every number on the dashboard is synthetic. The container also demands a token, so a call may need the header the guide shows on its nodes call: -H "Authorization: Bearer $RUVIEW_API_TOKEN". This demo container hears no board. The user guide says ESP32 nodes in Docker need the UDP port published, CSI_SOURCE=esp32 and a source guard such as RUVIEW_UDP_ALLOW.
If you are new. WiFi is radio, and a body in a room changes how that radio bounces. CSI is the detailed record of those changes that some chips can report, and an ESP32-S3 is a small board that does. RuView reads the record and estimates who is there and how they breathe. Start with the Docker demo, which needs no board. It shows the dashboard and the API on simulated data, so it says nothing about how well sensing works in your room.
For experts. The server is a Rust workspace under v2. Its UDP listener binds to 127.0.0.1 by default, so nodes on your network need --udp-bind 0.0.0.0 and either --udp-allow with their address or --udp-insecure-lan. The UDP data plane is not authenticated, and the guide says to keep it off untrusted networks.
The calibration guide takes a room through an empty-room baseline of at least 600 frames, eight guided anchors, a bank of trained specialists and a live watch. A partial anchor set trains a bank with some specialists missing, and room-status shows which ones trained.
wifi-densepose calibrate --port <PORT> wifi-densepose enroll --room <NAME> wifi-densepose train-room --room <NAME> wifi-densepose room-watch --room <NAME>
The npm toolkit refuses to overstate accuracy in code. Its claim-check command lints a report for untagged accuracy claims. The train-gate command refuses a score with no mean-pose baseline or a leaky split, then returns the only wording a result may be published with.
Over MCP, grants split the authority. Hardware reads need device-access, flashing needs hardware-write with confirm, and calibration and training need workspace-write with confirm. Flashing and calibration are never honoured over the HTTP transport.
Most of it runs on your own machine, and a few paths reach out.
This kit holds setup notes only. Mindket wrote them. RuView, its plugin, its npm toolkit, its firmware and its sensing server come from the maker's repository: https://github.com/ruvnet/RuView
These notes are not made or endorsed by the maker. The README says "RuView is a WiFi sensing platform that turns radio signals into spatial intelligence." It reads Channel State Information (CSI) from low-cost ESP32 boards and turns the way people disturb WiFi into presence, movement, breathing and heart-rate estimates, with no camera. Source: https://github.com/ruvnet/RuView/blob/HEAD/README.md
License: MIT. The LICENSE file (https://github.com/ruvnet/RuView/blob/HEAD/LICENSE) is the standard MIT text with "Copyright (c) 2024 rUv".
The README has a "Beta software" section: APIs and firmware may change, and the original ESP32 and the ESP32-C3 are not supported. Its use-case section adds that these are research and prototype applications, not medical devices, emergency systems or safety-certified controls.
RuView is several pieces, and you pick the ones you need. The notes below cover each one.
ruvnet/wifi-densepose) or a Rust build from v2/. It reads CSI, runs the signal processing and serves a dashboard, a REST API, a WebSocket stream and an optional MQTT feed. Source: https://github.com/ruvnet/RuView/blob/HEAD/docs/user-guide.mdplugins/ruview/. Source: https://github.com/ruvnet/RuView/blob/HEAD/plugins/ruview/README.md@ruvnet/ruview: a command line, an MCP server, an SDK and a Claude Code mod. It runs on Node 20 or newer with no runtime dependencies. Source: https://github.com/ruvnet/RuView/blob/HEAD/docs/user-guide.md and https://github.com/ruvnet/RuView/blob/HEAD/harness/ruview/README.mdruview and wifi-densepose, for the signal-processing code and clients. Source: https://github.com/ruvnet/RuView/blob/HEAD/docs/user-guide.mdSource: https://github.com/ruvnet/RuView/blob/HEAD/docs/user-guide.md (Prerequisites) and https://github.com/ruvnet/RuView/blob/HEAD/README.md (the hardware options table).
The fastest route needs no hardware. The user guide's 30-second demo runs the Docker image with simulated data. The container exits with code 64 unless RUVIEW_API_TOKEN is set.
export RUVIEW_API_TOKEN=$(openssl rand -hex 32)
docker run -p 127.0.0.1:3000:3000 -p 127.0.0.1:3001:3001 -e RUVIEW_API_TOKEN ruvnet/wifi-densepose:latest
Open http://localhost:3000. Source: https://github.com/ruvnet/RuView/blob/HEAD/docs/user-guide.md (Quick Start)
npx @ruvnet/ruview doctor checks the local setup and prints a fix for each failing check. Source: https://github.com/ruvnet/RuView/blob/HEAD/harness/ruview/README.mdnpx @ruvnet/ruview verify runs the repository's verify.py deterministic proof and should end in VERDICT: PASS. Its tools fail closed, so without a RuView checkout and Python it reports a failure instead. Source: https://github.com/ruvnet/RuView/blob/HEAD/harness/ruview/README.mddocker rm and docker rmi, and a Claude Code plugin has its own remove command. These notes are Mindket's, not the maker's.README.md 5 KB setup/claude-code.md 5 KB setup/codex.md 3 KB setup/docker.md 4 KB setup/esp32-hardware.md 6 KB setup/home-assistant.md 4 KB setup/other-agents.md 3 KB setup/python.md 3 KB
Updated by Mindket to the current version of this kit.
Listed GitHub projects in the same category that share the most topics with this one.
| Product | Stars | Activity | Language | License | Last change |
|---|---|---|---|---|---|
| RuView This page | 103,498 | Active | Rust | MIT | |
| ha-mcpShares home-assistant · home-automation · claude | 7,397 | Active | Python | MIT | |
| Kubai IconsShares react · claude | 814 | Active | JavaScript | — | |
| ECC by affaan-mShares claude · mcp · claude-code | 299,210 | Active | JavaScript | MIT | |
| Hermes AgentShares claude · claude-code | 261,224 | — | — | MIT | — |
| PonytailShares claude · claude-code | 186,952 | Active | JavaScript | MIT |
Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search and on Trendshift. Mindket doesn’t write or check them. Open one to read it where it was posted.
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
homeassistant-ai · Kit
Lets Claude, ChatGPT and other AI assistants configure and automate Home Assistant, installed as an integration through HACS or the Marketplace. For people who…
affaan-m · Skill
Affaan Mustafa’s plugin of agents, skills, commands and hooks that gives Claude Code, Codex and other coding agents a routine of planning, test-first work, fre…
An MCP server and CLI by morluto that lets your coding agent study binaries, desktop and Android apps, websites and firmware on your own computer, and back eac…