{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/README.md",
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/docs/known_limitations.md",
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/docs/tested_vacuums.md",
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/docs/roborock_app.md",
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/pyproject.toml",
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/.github/workflows/docker-release.yml",
    "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/LICENSE"
  ],
  "category": "reconstruction-cases",
  "description_en": "Runs a local HTTPS and MQTT stack in place of Roborock’s cloud, so supported vacuums keep live maps and controls on an isolated network without rooting or hardware changes. The maintainer’s technical write-up recounts earlier app and traffic analysis and a later investigation in which Claude Code and Codex worked against an emulated firmware environment. Compatibility is reported per model by the project and its users.",
  "description_zh": "运行一套本地 HTTPS 与 MQTT 服务来替代 Roborock 云端，使受支持的扫地机在隔离网络中无需 root 或改装硬件即可保留实时地图与控制。维护者的技术说明回顾了早期的应用与流量分析，以及后来借助 Claude Code 和 Codex、在模拟固件环境中开展的调查。兼容性由项目及其用户按型号报告。",
  "entry_url": "https://awesomerea.org/resources/roborock-local-server-cloud-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/roborock-local-server-cloud-case/",
  "evidence_url": "https://github.com/Python-roborock/local_roborock_server/blob/c3b32845c63a4bc9d1fc9dfb205b86a33ea06bf3/docs/technical_writeup.md",
  "group": "cases",
  "id": "roborock-local-server-cloud-case",
  "json_url": "https://awesomerea.org/resources/roborock-local-server-cloud-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/roborock-local-server-cloud-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/roborock-local-server-cloud-case/index.md",
  "name": "Roborock Local Server: a self-hosted stand-in for Roborock’s vacuum cloud",
  "name_zh": "Roborock Local Server：自托管替代 Roborock 扫地机云端",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "Reviewed version 1.2.1 (commit c3b3284) targets most Roborock vacuums on the v2 protocol; README excludes the entry-level Q series, and the tested-models page lists confirmed models, unresolved failures and certificate-chain notes. Documented limitations include firmware updates and schedules; camera streaming is verified on two models, and China-market devices reject commands outside China.",
    "Setup needs a domain the user controls with local DNS rewriting, a valid TLS certificate, a LAN host for Docker Compose or the Home Assistant add-on, and a second Wi-Fi computer for one-time onboarding. The official Roborock app works only after an interception login step and, on Android, a patched APK; Home Assistant and the open-source LocalRock app are alternatives.",
    "Python 3.11–3.13 with FastAPI, aiohttp, cryptography and python-roborock 4.20.0; a container image is published, and CI runs the pytest suite before building it. Tests cover onboarding, protocol authentication, MQTT proxying, certificates and scenes.",
    "The write-up says long-running Claude Code (Opus 4.6) and Codex sessions, given the maintainer’s own rooted S7, its firmware, python-roborock and the decompiled app, helped find the remaining onboarding step after earlier manual attempts stalled. It credits Dennis Giese’s firmware research, Valetudo and other community work.",
    "MIT license with an as-is disclaimer; the project is not affiliated with Roborock. It is a compatible server, not recovered Roborock server code, and vendor firmware or app changes may break it."
  ],
  "requirements_zh": [
    "审阅版本为 1.2.1（提交 c3b3284），面向大多数采用 v2 协议的 Roborock 扫地机；README 排除了入门级 Q 系列，已测型号页面列出了确认可用的型号、尚未解决的失败案例及证书链说明。文档所列限制包括固件更新和定时任务；摄像头直播仅在两款型号上验证过，中国大陆版设备在境外会拒绝执行命令。",
    "部署需要用户自有并可在本地改写 DNS 的域名、有效的 TLS 证书、局域网内运行 Docker Compose 或 Home Assistant 加载项的主机，以及一台用于一次性配网的带 Wi-Fi 的电脑。官方 Roborock 应用需先完成一次拦截登录步骤，安卓端还需打补丁的 APK；也可改用 Home Assistant 或开源的 LocalRock 应用。",
    "需要 Python 3.11–3.13，依赖 FastAPI、aiohttp、cryptography 和 python-roborock 4.20.0；项目发布了容器镜像，CI 在构建前运行 pytest 测试。测试覆盖配网、协议认证、MQTT 代理、证书与场景。",
    "技术说明称，在早期人工尝试受阻后，长时间运行的 Claude Code（Opus 4.6）与 Codex 会话借助维护者自己已 root 的 S7、其固件、python-roborock 及反编译后的应用，帮助找到了配网中剩余的关键一步。说明致谢了 Dennis Giese 的固件研究、Valetudo 及其他社区工作。",
    "采用 MIT 许可并附“按现状提供”的免责声明；项目与 Roborock 无关联。这是兼容的服务器实现，并非恢复的 Roborock 服务端代码，厂商固件或应用的变化可能使其失效。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/Python-roborock/local_roborock_server",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
