{
  "added_at": "2026-10-30",
  "additional_evidence_urls": [
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/docs/pages/faq.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/docs/pages/general/newcomer-guide.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/docs/pages/general/getting-started.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/docs/pages/general/why-not-valetudo.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/docs/pages/general/supported-robots.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/backend/lib/miio/Dummycloud.js",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/backend/lib/msmart/MSmartDummycloud.js",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/assets/kaitai_structs/readme.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/assets/protobuf/midea.proto",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/package.json",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/backend/package.json",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/.github/workflows/nodejs.yml",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/frontend/src/assets/raw/credits.md",
    "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/LICENSE",
    "https://github.com/Hypfer/Valetudo/releases/tag/2026.10.0"
  ],
  "category": "reconstruction-cases",
  "description_en": "Replaces the vendor cloud of supported robot vacuums with a local service that runs on the rooted robot beside the vendor firmware and emulates the cloud endpoints that firmware expects, including a miio dummycloud and a counterpart for Midea's MSmart protocol. Its FAQ says each new vendor backend meant reverse engineering data formats, authentication and communication without vendor documentation; Valetudo converts the proprietary map formats into one ValetudoMap format and keeps Kaitai Struct descriptions of Dreame, Roborock and Viomi map files and a Midea protobuf schema as references. It adds a web interface, a REST API with Swagger UI and MQTT/Home Assistant integration, while feature parity with the vendor apps is an explicit non-goal.",
  "description_zh": "用运行在已 root 机器人上、与厂商固件并存的本地服务取代受支持扫地机器人的厂商云，并模拟固件所期待的云端接口，包括 miio 模拟云（dummycloud）以及对应 Midea MSmart 协议的实现。其 FAQ 说明，每支持一个新厂商，都需要在没有厂商文档的情况下逆向分析数据格式、认证和通信；Valetudo 将各家专有地图格式转换为统一的 ValetudoMap 格式，并保留 Dreame、Roborock、Viomi 地图文件的 Kaitai Struct 描述和一份 Midea protobuf 模式作为参考。它提供网页界面、带 Swagger UI 的 REST API 以及 MQTT／Home Assistant 集成，但明确不以与厂商应用功能对等为目标。",
  "entry_url": "https://awesomerea.org/resources/valetudo-robot-cloud-replacement-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/valetudo-robot-cloud-replacement-case/",
  "evidence_url": "https://github.com/Hypfer/Valetudo/blob/78267517d3036258322b6760ba8a9979d197e249/README.md",
  "group": "cases",
  "id": "valetudo-robot-cloud-replacement-case",
  "json_url": "https://awesomerea.org/resources/valetudo-robot-cloud-replacement-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/valetudo-robot-cloud-replacement-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/valetudo-robot-cloud-replacement-case/index.md",
  "name": "Valetudo: local replacement for robot-vacuum vendor clouds",
  "name_zh": "Valetudo：扫地机器人厂商云的本地替代",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "Reviewed at the 2026.10.0 release commit of 2026-10-18. The README says Valetudo is not a custom firmware but a 'brain parasite' for the vendor firmware, whose own functions it relies on. The backend has Dreame, Roborock, Viomi, 3irobotix and Midea implementations, and the supported-robots page lists 50 model entries under 10 brand headings and calls the list exhaustive.",
    "Requires a supported robot that its owner has already rooted. The docs describe rooting as model-specific and permanent ('Reverting to stock is impossible'), and say the vendor app stops working because cloud connectivity is cut. The repository and its releases ship no vendor firmware: release assets are Valetudo's own armv7, armv7-lowmem and aarch64 binaries with UPX-compressed variants, an OpenAPI schema and a release manifest, while the repository also commits pkg Node.js base binaries for packaging and small captured map files as test fixtures.",
    "Valetudo runs on the robot's Linux system as a static Node.js 22 binary built with pkg; development needs Node.js >=20 according to the root package.json. The docs require Linux and computer skills, and sometimes hardware work, for installation, and offer peer support only.",
    "CI on Node.js 22 runs type checks, lint, the frontend and backend builds and the backend node:test suite, including Dreame, Roborock and 3irobotix map-parser tests on captured maps and miio and MSmart packet tests. The supported-robots page says each listed robot was tested by the author personally unless noted. These are project-reported checks.",
    "Apache-2.0, although the README describes its governance as 'Freeware with source available'. The Kaitai structs declare CC-BY-SA-4.0, and a bundled robot model and tracker song are credited under CC-BY-NC-SA. Vendor firmware, apps and clouds keep their own terms."
  ],
  "requirements_zh": [
    "审阅基于 2026-10-18 的 2026.10.0 发布提交。README 称 Valetudo 不是定制固件，而是厂商固件的“脑寄生虫”，依赖固件自身的功能运行。后端实现了 Dreame、Roborock、Viomi、3irobotix 和 Midea 的支持；受支持机器人页面在 10 个品牌标题下列出 50 个型号条目，并声明该列表是完整的。",
    "需要一台机主已自行 root 的受支持机器人。文档说明 root 因型号而异且不可逆（“无法恢复原厂状态”），并指出由于与厂商云的连接被切断，厂商应用将无法使用。仓库及其发布版本均不包含厂商固件：发布资源是 Valetudo 自己的 armv7、armv7-lowmem 和 aarch64 程序及其 UPX 压缩版本、OpenAPI 模式文件和发布清单；仓库另外提交了用于打包的 pkg Node.js 基础二进制，以及作为测试样本的小型地图采集文件。",
    "Valetudo 以 pkg 构建的静态 Node.js 22 程序运行在机器人的 Linux 系统上；根目录 package.json 规定开发需要 Node.js >=20。文档指出，安装需要 Linux 和计算机知识，有时还需要硬件操作，且只提供同伴式互助支持。",
    "CI 在 Node.js 22 上运行类型检查、代码风格检查、前后端构建以及后端 node:test 测试套件，包括基于采集地图的 Dreame、Roborock、3irobotix 地图解析测试，以及 miio 和 MSmart 报文测试。受支持机器人页面称，除另有说明外，所列机器人均由作者亲自测试。这些都是项目报告的检查。",
    "采用 Apache-2.0 许可，但 README 将其治理方式描述为“源码可见的免费软件”。Kaitai 结构描述声明 CC-BY-SA-4.0，内置的机器人模型和 tracker 音乐注明采用 CC-BY-NC-SA。厂商固件、应用和云服务各自保留其条款。"
  ],
  "targets": [
    "firmware",
    "protocol"
  ],
  "url": "https://github.com/Hypfer/Valetudo",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
