{
  "schema_version": "1.0.0",
  "version": "1.2.0",
  "compiled_at": "2026-10-20T10:18:44.541033+00:00",
  "timezone": "Asia/Shanghai",
  "labels": {
    "category": {
      "speaker": "Speakers & voice",
      "mobile": "Phones & tablets",
      "computer": "Computers & thin clients",
      "network": "Routers & NAS",
      "tv": "TVs & TV boxes",
      "ereader": "E-readers & e-ink",
      "robot": "Robots",
      "smarthome": "Smart home",
      "camera": "Cameras",
      "audio": "Music & audio",
      "wearable": "Watches & wearables",
      "gaming": "Gaming",
      "peripheral": "Printers & peripherals"
    },
    "ai": {
      "native": "AI functionality",
      "assisted": "AI-assisted development/setup",
      "adjacent": "AI-adjacent uses",
      "infrastructure": "Traditional reuse infrastructure"
    },
    "difficulty": {
      "easy": "Beginner",
      "medium": "Intermediate",
      "high": "Advanced"
    },
    "evidence": {
      "E0": "Candidate / insufficient evidence",
      "E1": "Source code & deployment docs",
      "E2": "Author hardware claim / demonstration",
      "E3": "Independent reproduction verified"
    },
    "maintenance": {
      "not-archived": "Repository not archived",
      "archived": "Archived",
      "deprecated": "Maintenance ended by author",
      "moved": "Moved / old mirror archived",
      "historical-patched": "Historical / vulnerability patched",
      "stale": "No push for over a year (not proof of abandonment)"
    }
  },
  "projects": [
    {
      "id": "xiaogpt",
      "name": "XiaoGPT",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "case",
      "family": "xiaogpt",
      "device_scope": "Xiaomi XiaoAI speakers; the README uses LX06. Check the hardware parameter for other models.",
      "model_examples": [
        "LX06"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Service bridge",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Depends on a Xiaomi account and voice interfaces; this is not fully offline firmware."
      ],
      "repo_url": "https://github.com/yihong0618/xiaogpt",
      "github_snapshot_url": "https://github.com/yihong0618/xiaogpt",
      "website_url": null,
      "tutorial_url": "https://github.com/yihong0618/xiaogpt/blob/main/README.md",
      "compatibility_url": "https://github.com/yihong0618/xiaogpt/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README documents LX06 startup, configuration files and multiple model backends, with links to author demonstrations. Those media were not played during this review.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/yihong0618/xiaogpt/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:02.366095+00:00",
          "readme_blob_sha": "c599328bd3677f9685140453dc7330a38f4d304b",
          "content_sha256": "6769f24637381c0a56ac0be30b52f6d9f7bd70a005ea63c314cf4851ca08250a"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-07T05:49:36Z",
        "checked_at": "2026-10-20T10:06:02.366095+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/yihong0618/xiaogpt/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:02.366095+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "required-xiaomi; optional-model-provider"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Always-on host",
          "Model/TTS services that may incur usage charges"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Stopping the bridge stops forwarding requests; this route does not replace speaker firmware.",
        "recovery_url": "https://github.com/yihong0618/xiaogpt#readme"
      },
      "keywords": [
        "Xiaomi XiaoAI ChatGPT",
        "小爱音箱 大模型 免刷机",
        "XiaoGPT",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:02.366095+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v3.23",
        "url": "https://github.com/yihong0618/xiaogpt/releases/tag/v3.23",
        "published_at": "2025-10-26T01:31:37Z"
      },
      "summary": "Connect an existing XiaoAI speaker to a language model while retaining its voice input.",
      "translation": {
        "source_sha256": "ca25ae0bad1a4dcfb5285ab4778786d30e232aa22e6a8463cd96032f49a30f39",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "open-xiaoai",
      "name": "Open-XiaoAI",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "case",
      "family": "open-xiaoai",
      "device_scope": "XiaoAI Speaker Pro LX06 / Xiaomi Smart Speaker Pro OH2P; follow model-specific flashing instructions.",
      "model_examples": [
        "LX06",
        "OH2P"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Patched firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Patched firmware is model-specific. Do not apply the instructions to every XiaoAI speaker."
      ],
      "repo_url": "https://github.com/idootop/open-xiaoai",
      "github_snapshot_url": "https://github.com/idootop/open-xiaoai",
      "website_url": null,
      "tutorial_url": "https://github.com/idootop/open-xiaoai/blob/main/docs/flash.md",
      "compatibility_url": "https://github.com/idootop/open-xiaoai/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README explicitly limits support to two Pro speakers and links firmware, client and server steps. The repository is archived, but historical deployment material remains.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/idootop/open-xiaoai/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:02.367094+00:00",
          "readme_blob_sha": "42264b979ad3a4ee77012ceac8a02d93c4aa2c46",
          "content_sha256": "64cfb5a0dbeb91fe1b62696a22a313c300b4ee93f17dc4cf7c03ec4d22c8b517"
        }
      ],
      "maintenance": {
        "status": "archived",
        "github_archived": true,
        "last_push_at": "2026-04-04T07:58:12Z",
        "checked_at": "2026-10-20T10:06:02.367094+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/idootop/open-xiaoai/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:02.367094+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "LX06: required; OH2P: not required (official instructions)",
        "soldering": "no-in-documented-USB-route",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Host",
          "Model/API services according to configuration"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "The official flash.md describes dual system partitions and switching back to boot1. This depends on the original partition remaining intact and has not been hardware-tested here.",
        "recovery_url": "https://github.com/idootop/open-xiaoai/blob/main/docs/flash.md"
      },
      "keywords": [
        "Open XiaoAI LX06 OH2P",
        "小爱音箱 Pro 刷机 AI",
        "Open-XiaoAI",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:02.367094+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "OH2P_1.58.6",
        "url": "https://github.com/idootop/open-xiaoai/releases/tag/OH2P_1.58.6",
        "published_at": "2026-01-01T09:10:12Z"
      },
      "summary": "Take over a supported XiaoAI speaker's microphone and playback path to connect external AI services.",
      "translation": {
        "source_sha256": "c3b55664cda3697fdac181792b6fd0551e77d1c97d69070540a8eb70ab882590",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "mi-gpt",
      "name": "MiGPT",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "platform",
      "family": "mi-gpt",
      "device_scope": "Xiaomi XiaoAI speakers listed in the documented compatibility table.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Service bridge",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "A historical route; read the archive notice and successor recommendations first."
      ],
      "repo_url": "https://github.com/idootop/mi-gpt",
      "github_snapshot_url": "https://github.com/idootop/mi-gpt",
      "website_url": null,
      "tutorial_url": "https://github.com/idootop/mi-gpt/blob/main/README.md",
      "compatibility_url": "https://github.com/idootop/mi-gpt/blob/main/docs/compatibility.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README contains installation, model connection and device compatibility instructions and explicitly announces the end of maintenance.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/idootop/mi-gpt/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:02.368094+00:00",
          "readme_blob_sha": "eb0219634283710e5d770f8b63a5c1526e9695c1",
          "content_sha256": "1a5d92a0d9d9021b7a6090ef8832c24ba89dbd194b5bf2d5d309afec0b3d36ec"
        }
      ],
      "maintenance": {
        "status": "archived",
        "github_archived": true,
        "last_push_at": "2026-04-04T07:53:49Z",
        "checked_at": "2026-10-20T10:06:02.368094+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/idootop/mi-gpt/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:02.368094+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "required-xiaomi"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Always-on host",
          "Model/TTS API"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Stop the Docker/Node service to stop bridging; the original speaker firmware is retained.",
        "recovery_url": null
      },
      "keywords": [
        "MiGPT",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:02.368094+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v4.2.0",
        "url": "https://github.com/idootop/mi-gpt/releases/tag/v4.2.0",
        "published_at": "2024-08-26T14:04:05Z"
      },
      "summary": "Add language-model conversations to XiaoAI speakers through a server-side bridge.",
      "translation": {
        "source_sha256": "d7a5e56492142c6f46f07425173321293c64ac16ec7210834e2953eaf0d39ef4",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "onju-voice",
      "name": "Onju Voice",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "case",
      "family": "onju-voice",
      "device_scope": "Google Nest Mini, second generation, enclosure and peripheral components.",
      "model_examples": [
        "Google Nest Mini 2nd gen"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Replace motherboard",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "This is a board replacement, not a software jailbreak of the original Google firmware."
      ],
      "repo_url": "https://github.com/justLV/onju-voice",
      "github_snapshot_url": "https://github.com/justLV/onju-voice",
      "website_url": null,
      "tutorial_url": "https://github.com/justLV/onju-voice/blob/master/README.md",
      "compatibility_url": "https://github.com/justLV/onju-voice/blob/master/README.md",
      "x_sources": [
        {
          "url": "https://x.com/justLV/status/1681377298308820992",
          "status": "original-text-read",
          "video_viewed": false,
          "checked_at": "2026-10-20T10:18:44.541033+00:00",
          "note": "作者正文通过浏览器读取；未把浏览量或点赞作为成功证据。"
        }
      ],
      "evidence": {
        "level": "E2",
        "reason": "The author provides PCB, firmware and server instructions. The README says active maintenance has ended and points to onju-v2. An independent maker's video description reports a modification demonstration, but the video was not played, so this is not verified independent reproduction. The author's original X text, board-replacement explanation and video component were viewed; video frames were not verified.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/justLV/onju-voice/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:02.368094+00:00",
          "readme_blob_sha": "ea7568b98bac5332c03c7ba2c9e108bc73eebf4f",
          "content_sha256": "9c3f3b1e2055ce3a8239e50d8a58c4ab1ad16012618ceaaa1a3d0303c96178f5"
        }
      ],
      "maintenance": {
        "status": "deprecated",
        "github_archived": false,
        "last_push_at": "2026-04-13T06:53:08Z",
        "checked_at": "2026-10-20T10:06:02.368094+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/justLV/onju-voice/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:02.368094+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "yes",
        "soldering": "assembly-dependent",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Onju PCBA",
          "Disassembly tools",
          "Host",
          "Optional cloud voice/API services"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Keeping the original motherboard offers a hardware rollback option. Software cannot reverse damage caused during disassembly.",
        "recovery_url": null
      },
      "keywords": [
        "Google Nest Mini local assistant",
        "Onju Voice 换板",
        "Onju Voice",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:02.368094+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Replace a Nest Mini motherboard with a custom ESP32-S3 board, reusing the enclosure and speaker.",
      "translation": {
        "source_sha256": "d4f3d90c7d5acf937ac902cabad69bce32d86901ffe8574c7e5bdb9375c39620",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "onju-v2",
      "name": "Onju Voice v2",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "case",
      "family": "onju-voice",
      "device_scope": "Google Nest Mini, second generation, with an Onju replacement board.",
      "model_examples": [
        "Google Nest Mini 2nd gen"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Replace motherboard",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "A successor in the same project family, not an independent hardware reproduction."
      ],
      "repo_url": "https://github.com/justLV/onju-v2",
      "github_snapshot_url": "https://github.com/justLV/onju-v2",
      "website_url": null,
      "tutorial_url": "https://github.com/justLV/onju-v2/blob/master/README.md",
      "compatibility_url": "https://github.com/justLV/onju-v2/blob/master/README.md",
      "x_sources": [
        {
          "url": "https://x.com/justLV/status/1681377298308820992",
          "status": "original-text-read",
          "video_viewed": false,
          "checked_at": "2026-10-20T10:18:44.541033+00:00",
          "note": "作者正文通过浏览器读取；未把浏览量或点赞作为成功证据。"
        }
      ],
      "evidence": {
        "level": "E1",
        "reason": "The README documents the second-generation Nest Mini replacement board, server setup and firmware flashing. Its X link points to an earlier Onju demonstration and is not evidence of testing the new v2 features.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/justLV/onju-v2/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:02.369088+00:00",
          "readme_blob_sha": "8db184c119fa0a5298f1e7144f9bdd92f34a1608",
          "content_sha256": "df7c41761213db21f02fdb78c4d92b18ad55c5bafa2c95abcbd5e0d31f6f443a"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-04-13T17:01:04Z",
        "checked_at": "2026-10-20T10:06:02.369088+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/justLV/onju-v2/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:02.369088+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "yes",
        "soldering": "assembly-dependent",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Onju PCBA",
          "Disassembly tools",
          "Audio/model server",
          "Optional API"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Keep the original motherboard. Assess hardware damage and repair feasibility separately.",
        "recovery_url": null
      },
      "keywords": [
        "Nest Mini ESP32 S3",
        "OnjuClaw local voice",
        "Onju Voice v2",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:02.369088+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Connect a modified Nest Mini to local or cloud conversation agents and support multiple voice endpoints.",
      "translation": {
        "source_sha256": "9c7e5fa18539aaa96adeceedb371ed24312107ec85899c7fc8f09792885bc8d1",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "wyoming-satellite",
      "name": "Wyoming Satellite",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "platform",
      "family": "linux-voice-assistant",
      "device_scope": "Old Raspberry Pi or other Linux-capable host with a microphone and speaker.",
      "model_examples": [
        "Raspberry Pi Zero 2 W + ReSpeaker 2Mic HAT"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Install service",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Requires upstream voice services. A satellite does not run a complete language model locally by itself."
      ],
      "repo_url": "https://github.com/rhasspy/wyoming-satellite",
      "github_snapshot_url": "https://github.com/rhasspy/wyoming-satellite",
      "website_url": null,
      "tutorial_url": "https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md",
      "compatibility_url": "https://github.com/rhasspy/wyoming-satellite/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README offers a Zero 2 W and 2Mic HAT tutorial, explicitly deprecates the project and points to Linux Voice Assistant.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/rhasspy/wyoming-satellite/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:08.572806+00:00",
          "readme_blob_sha": "a73cc8f3081367d84430c7029e972638f986e3ad",
          "content_sha256": "647fd5962ad40b344bd48eaabb160531d5558a584fc4d26685f1d258bf0bd9a0"
        }
      ],
      "maintenance": {
        "status": "archived",
        "github_archived": true,
        "last_push_at": "2026-01-24T13:20:36Z",
        "checked_at": "2026-10-20T10:06:08.572806+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/rhasspy/wyoming-satellite/blob/master/LICENSE.md",
        "checked_at": "2026-10-20T10:06:08.572806+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "accessory-dependent",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Microphone/audio accessories",
          "Server"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "Wyoming Satellite",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:08.572806+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v1.4.1",
        "url": "https://github.com/rhasspy/wyoming-satellite/releases/tag/v1.4.1",
        "published_at": "2025-02-10T17:59:07Z"
      },
      "summary": "Reuse an idle Linux device as a Home Assistant voice satellite.",
      "translation": {
        "source_sha256": "b80d09f337649360fbbc0feb057d11a135a2b1018cccba11da8a4de25eb67d12",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "linux-voice-assistant",
      "name": "Linux Voice Assistant",
      "category": "speaker",
      "ai_relation": "native",
      "entry_type": "platform",
      "family": "linux-voice-assistant",
      "device_scope": "Linux hosts with working audio input and output.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Install service",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check audio drivers, architecture and server capabilities for each device."
      ],
      "repo_url": "https://github.com/OHF-Voice/linux-voice-assistant",
      "github_snapshot_url": "https://github.com/OHF-Voice/linux-voice-assistant",
      "website_url": null,
      "tutorial_url": "https://github.com/OHF-Voice/linux-voice-assistant/blob/main/README.md",
      "compatibility_url": "https://github.com/OHF-Voice/linux-voice-assistant/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README describes an experimental Linux voice satellite with installation, audio and architecture notes. This is not treated as a standalone offline language model.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/OHF-Voice/linux-voice-assistant/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:08.598152+00:00",
          "readme_blob_sha": "92346b6a850d2eb207aea17ce3d0091747017110",
          "content_sha256": "b8c2857a2aa6e5f023b904cccb5bf185819a9091a008bb7beadf3055c4dbd4cb"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-01T20:29:45Z",
        "checked_at": "2026-10-20T10:06:08.598152+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Apache-2.0",
        "url": "https://github.com/OHF-Voice/linux-voice-assistant/blob/main/LICENSE.md",
        "checked_at": "2026-10-20T10:06:08.598152+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "accessory-dependent",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Compatible microphone and speaker",
          "Home Assistant host"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "Linux Voice Assistant",
        "speaker",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:08.598152+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v1.1.15",
        "url": "https://github.com/OHF-Voice/linux-voice-assistant/releases/tag/v1.1.15",
        "published_at": "2026-08-02T22:04:08Z"
      },
      "summary": "Deploy a Home Assistant voice endpoint on existing Linux hardware.",
      "translation": {
        "source_sha256": "2851b5d3f60454184a6abcaf2e4d1ead17252e99cecaf181c541ec1d7c212ac2",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "lineageos",
      "name": "LineageOS",
      "category": "mobile",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "lineageos",
      "device_scope": "Exact Android models and device codenames listed in the official wiki.",
      "model_examples": [
        "Fairphone 2 (FP2)，仅作为 wiki 条目示例，不保证当前仍有构建"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "os-life-extension"
      ],
      "method": "Replace OS",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "The same retail name may cover incompatible regions, carriers and models. Unlocking usually erases data."
      ],
      "repo_url": "https://github.com/LineageOS/lineage_wiki",
      "github_snapshot_url": "https://github.com/LineageOS/lineage_wiki",
      "website_url": null,
      "tutorial_url": "https://wiki.lineageos.org/devices/",
      "compatibility_url": "https://github.com/LineageOS/lineage_wiki/blob/main/_data/devices/FP2.yml",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "Per-device YAML and installation templates were readable in the official wiki source; web access was restricted. A listing does not prove current maintenance: check current builds before installation. FP2 has an empty maintainers list and is only a historical entry, not a recommendation for a currently maintained build.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/LineageOS/lineage_wiki/blob/main/_data/devices/FP2.yml",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:08.641537+00:00",
          "readme_blob_sha": null,
          "content_sha256": null
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T06:00:06Z",
        "checked_at": "2026-10-20T10:06:08.641537+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:06:08.641537+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "expected",
        "bricking": "possible",
        "recovery": "Find the factory image and recovery steps for the exact device first. This catalog does not provide generic bootloader relocking instructions.",
        "recovery_url": null
      },
      "keywords": [
        "LineageOS",
        "mobile",
        "系统延寿"
      ],
      "checked_at": "2026-10-20T10:06:08.641537+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Provide an alternative OS for selected Android phones and tablets whose vendor updates have ended.",
      "translation": {
        "source_sha256": "5ad1897ca16f7f4c09bee62b6f23db18506e7c6710db50b8f483a5305289e8c0",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "ubports",
      "name": "Ubuntu Touch / UBports",
      "category": "mobile",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "ubports",
      "device_scope": "Phones and tablets supported by the UBports device list.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "os-life-extension"
      ],
      "method": "Replace OS",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Match the required bootloader and vendor firmware version."
      ],
      "repo_url": "https://github.com/ubports/ubports-installer",
      "github_snapshot_url": "https://github.com/ubports/ubports-installer",
      "website_url": "https://github.com/ubports/ubports-installer/releases",
      "tutorial_url": "https://github.com/ubports/ubports-installer/blob/master/README.md",
      "compatibility_url": "https://devices.ubuntu-touch.io/",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The official installer README and release channels are available. The UBports devices page determines the supported device range.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/ubports/ubports-installer/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:08:23.344604+00:00",
          "readme_blob_sha": "f30db3b6f2c6fced99e666b5553682818a850b43",
          "content_sha256": "348fdbc89b6cfff9f84196daa1ee4349742b66d126ac16ad9c259f6bcf91f997"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-09-28T18:23:54Z",
        "checked_at": "2026-10-20T10:08:23.344604+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0",
        "url": "https://github.com/ubports/ubports-installer/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:08:23.344604+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "expected",
        "bricking": "possible",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "Ubuntu Touch / UBports",
        "mobile",
        "系统延寿"
      ],
      "checked_at": "2026-10-20T10:08:23.344604+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "0.11.2",
        "url": "https://github.com/ubports/ubports-installer/releases/tag/0.11.2",
        "published_at": "2025-07-01T12:27:21Z"
      },
      "summary": "Install Ubuntu Touch on supported phones using the official installer.",
      "translation": {
        "source_sha256": "6290a97fe8fa1717fd30c2de060e74c03ecbcf53e8c746bf9a38918236f3308d",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "termux",
      "name": "Termux",
      "category": "mobile",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "termux",
      "device_scope": "Phones/tablets meeting the current Android version requirements.",
      "model_examples": [
        "Android 7+（完整应用和软件包支持）"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "linux-terminal"
      ],
      "method": "Install application",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Android background limits and version support still apply; this is not a complete Linux kernel environment."
      ],
      "repo_url": "https://github.com/termux/termux-app",
      "github_snapshot_url": "https://github.com/termux/termux-app",
      "website_url": "https://f-droid.org/en/packages/com.termux",
      "tutorial_url": "https://github.com/termux/termux-app/blob/master/README.md",
      "compatibility_url": "https://github.com/termux/termux-app/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies full support for Android 7+. Android 5/6 only have legacy compatible apps without package update support.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/termux/termux-app/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:14.472722+00:00",
          "readme_blob_sha": "48e43215d01a63b4ff98e1b4d83e6a2d60a5f62b",
          "content_sha256": "3a72268adae0835c31decf186f0059305cd5a45fc2425e64b1520e7ce29897f9"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-09-26T05:11:44Z",
        "checked_at": "2026-10-20T10:06:14.472722+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0-only (file exceptions)",
        "url": "https://github.com/termux/termux-app/blob/master/LICENSE.md",
        "checked_at": "2026-10-20T10:06:14.472722+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "not-expected",
        "bricking": "workflow-dependent",
        "recovery": "Export the Termux private directory before uninstalling. Uninstalling the app normally deletes its data.",
        "recovery_url": null
      },
      "keywords": [
        "old Android Linux server",
        "旧手机 Termux 终端",
        "Termux",
        "mobile",
        "Linux终端"
      ],
      "checked_at": "2026-10-20T10:06:14.472722+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v0.119.0-beta.3",
        "url": "https://github.com/termux/termux-app/releases/tag/v0.119.0-beta.3",
        "published_at": "2025-05-22T22:48:54Z"
      },
      "summary": "Run command-line tools and lightweight services on idle Android hardware without replacing the OS.",
      "translation": {
        "source_sha256": "c5a9ce4814dd96c5c48dab2def5d278ee7631daa3dd06b88fb9639d8a11e0ffa",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "droidcam",
      "name": "DroidCam Linux client",
      "category": "mobile",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "droidcam",
      "device_scope": "Phones compatible with the DroidCam mobile app and a Linux computer.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "camera"
      ],
      "method": "Install application",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "This repository is the Linux client; it does not establish that the entire mobile app is open source. Check the battery before continuous charging."
      ],
      "repo_url": "https://github.com/dev47apps/droidcam-linux-client",
      "github_snapshot_url": "https://github.com/dev47apps/droidcam-linux-client",
      "website_url": "http://www.dev47apps.com",
      "tutorial_url": "https://www.dev47apps.com/droidcam/linux/",
      "compatibility_url": "https://github.com/dev47apps/droidcam-linux-client/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The Linux client README provides installation, build and Raspberry Pi links. Mobile app compatibility needs a separate check.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/dev47apps/droidcam-linux-client/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:14.539040+00:00",
          "readme_blob_sha": "04ad3cf593fce73e56acbeb0200d0b9465bea13f",
          "content_sha256": "92f642f736c3a5ca940bf4d2a2569e7c7522599af29a5fb631ca77da2359c080"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-02-19T03:27:10Z",
        "checked_at": "2026-10-20T10:06:14.539040+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0",
        "url": "https://github.com/dev47apps/droidcam-linux-client/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:14.539040+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Uninstall the client and virtual camera module. Check battery condition on continuously powered devices.",
        "recovery_url": null
      },
      "keywords": [
        "DroidCam Linux client",
        "mobile",
        "摄像头"
      ],
      "checked_at": "2026-10-20T10:06:14.539040+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v2.1.5",
        "url": "https://github.com/dev47apps/droidcam-linux-client/releases/tag/v2.1.5",
        "published_at": "2026-02-19T03:27:10Z"
      },
      "summary": "Use an idle phone as a computer video input.",
      "translation": {
        "source_sha256": "a3cc19fd2850f7b8a30a3836b341e91dbfef72f95b1e618eb29d6194eb786755",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "deskreen",
      "name": "Deskreen",
      "category": "mobile",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "deskreen",
      "device_scope": "Old tablets, phones or computers with a compatible modern browser.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "second-screen"
      ],
      "method": "Install application",
      "difficulty": "easy",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "An independently extended desktop usually also needs a virtual display adapter. Very old browsers may not work."
      ],
      "repo_url": "https://github.com/pavlobu/deskreen",
      "github_snapshot_url": "https://github.com/pavlobu/deskreen",
      "website_url": "https://deskreen.com",
      "tutorial_url": "https://deskreen.com/faq",
      "compatibility_url": "https://github.com/pavlobu/deskreen/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies computer-to-browser screen sharing over WebRTC. The old tablet must run a compatible browser.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/pavlobu/deskreen/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:14.680124+00:00",
          "readme_blob_sha": "d5944b6258985f084c9d7d1bfbc8139170a3a0be",
          "content_sha256": "409338899fb555665ff781b1020dee50b7bff6bcda3f5bed8856c5fee22d3f8f"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-07-08T14:35:42Z",
        "checked_at": "2026-10-20T10:06:14.680124+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "AGPL-3.0",
        "url": "https://github.com/pavlobu/deskreen/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:14.680124+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "A virtual display adapter may be needed for an independently extended desktop"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Stop sharing or uninstall the desktop application. Tablet firmware is not replaced.",
        "recovery_url": null
      },
      "keywords": [
        "Deskreen",
        "mobile",
        "副屏"
      ],
      "checked_at": "2026-10-20T10:06:14.680124+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v3.2.16",
        "url": "https://github.com/pavlobu/deskreen/releases/tag/v3.2.16",
        "published_at": "2026-07-08T16:51:33Z"
      },
      "summary": "Turn an old tablet into an auxiliary display endpoint receiving desktop sharing in a browser.",
      "translation": {
        "source_sha256": "e6e7b8b6538baf3ace5ceb9d4803938964339b1e36501cf9d56106e88de82947",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "oclp",
      "name": "OpenCore Legacy Patcher",
      "category": "computer",
      "ai_relation": "infrastructure",
      "entry_type": "case",
      "family": "oclp",
      "device_scope": "Intel Macs in the official support matrix.",
      "model_examples": [
        "Macmini6,1",
        "Macmini6,2",
        "MacBookPro9,2；其他型号按官方矩阵"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "os-life-extension"
      ],
      "method": "Boot and OS patches",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Not every Mac/OS combination works. OS updates may require patches to be reapplied."
      ],
      "repo_url": "https://github.com/dortania/OpenCore-Legacy-Patcher",
      "github_snapshot_url": "https://github.com/dortania/OpenCore-Legacy-Patcher",
      "website_url": "https://dortania.github.io/OpenCore-Legacy-Patcher/",
      "tutorial_url": "https://dortania.github.io/OpenCore-Legacy-Patcher/",
      "compatibility_url": "https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README gives version ranges. The official matrix lists Intel Mac models and GPU/USB limits. PowerPC and Apple Silicon are not supported.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:14.752116+00:00",
          "readme_blob_sha": "b41910538684fe6bd638356c5657139d40153a3c",
          "content_sha256": "3a079593412e33e5d32af53938872eeb947e8ad4e391ce502813584cec47a609"
        },
        {
          "url": "https://dortania.github.io/OpenCore-Legacy-Patcher/MODELS.html",
          "kind": "official-compatibility-or-install",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:18:44.541033+00:00"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-11T05:17:11Z",
        "checked_at": "2026-10-20T10:06:14.752116+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "BSD 4-clause style / custom attribution terms",
        "url": "https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/LICENSE.txt",
        "checked_at": "2026-10-20T10:06:14.752116+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Installation USB drive",
          "Backup disk",
          "Optional RAM/SSD"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Keep a backup and bootable installation media. Follow official uninstall/recovery documentation to roll back; device recovery was not tested here.",
        "recovery_url": "https://dortania.github.io/OpenCore-Legacy-Patcher/UNINSTALL.html"
      },
      "keywords": [
        "unsupported Intel Mac",
        "旧 Mac 升级 OCLP",
        "OpenCore Legacy Patcher",
        "computer",
        "系统延寿"
      ],
      "checked_at": "2026-10-20T10:06:14.752116+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "3.0.0-rc.3",
        "url": "https://github.com/dortania/OpenCore-Legacy-Patcher/releases/tag/3.0.0-rc.3",
        "published_at": "2026-10-08T01:07:17Z"
      },
      "summary": "Provide boot and driver patches for selected Macs no longer officially supported by newer macOS versions.",
      "translation": {
        "source_sha256": "104e8f06c8eac9d79584e8a8b59b635c615991d689e7dbc5dac73a9e7b763880",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "mrchromebox",
      "name": "MrChromebox firmware utility",
      "category": "computer",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "mrchromebox",
      "device_scope": "ChromeOS x86 devices listed in the MrChromebox support table.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "linux-terminal"
      ],
      "method": "Replace boot firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check the board codename. Write-protection removal varies by model."
      ],
      "repo_url": "https://github.com/MrChromebox/scripts",
      "github_snapshot_url": "https://github.com/MrChromebox/scripts",
      "website_url": null,
      "tutorial_url": "https://github.com/MrChromebox/scripts/blob/main/README.md",
      "compatibility_url": "https://docs.mrchromebox.tech/docs/supported-devices.html",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The official script README describes RW_LEGACY / Full ROM. The official device table gives support by HWID and board.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/MrChromebox/scripts/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:14.949086+00:00",
          "readme_blob_sha": "a25f6da2a61f447cb4fe2567ce70a763c37cd117",
          "content_sha256": "f23b1ccc2e408e6f1aeed7967888feb515ef236317c1141f5a87db00911e1c06"
        },
        {
          "url": "https://docs.mrchromebox.tech/docs/supported-devices.html",
          "kind": "official-compatibility-or-install",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:18:44.541033+00:00"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-19T15:26:28Z",
        "checked_at": "2026-10-20T10:06:14.949086+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Unlicense",
        "url": "https://github.com/MrChromebox/scripts/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:14.949086+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "USB media",
          "Model-specific write-protection/recovery tools"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Save the device's own firmware backup before a full replacement. Recovery depends on the model and external flashing tools.",
        "recovery_url": null
      },
      "keywords": [
        "MrChromebox firmware utility",
        "computer",
        "Linux终端"
      ],
      "checked_at": "2026-10-20T10:06:14.949086+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Install alternative firmware on selected old Chromebooks/Chromeboxes to run other operating systems.",
      "translation": {
        "source_sha256": "74e02e7d5f20fc751c9f6d88cff60302a6f6a3df0d9752dcd5adeea1d298f38a",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "haos",
      "name": "Home Assistant OS",
      "category": "computer",
      "ai_relation": "infrastructure",
      "entry_type": "case",
      "family": "haos",
      "device_scope": "Generic x86-64 hosts / single-board computers supported by the official installation documentation.",
      "model_examples": [
        "UEFI Generic x86-64；官方教程示例为第七代 Intel NUC"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "smart-home"
      ],
      "method": "Replace OS",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Architecture, boot mode and storage requirements apply. Writing the image overwrites the target disk."
      ],
      "repo_url": "https://github.com/home-assistant/operating-system",
      "github_snapshot_url": "https://github.com/home-assistant/operating-system",
      "website_url": null,
      "tutorial_url": "https://www.home-assistant.io/installation/generic-x86-64/",
      "compatibility_url": "https://github.com/home-assistant/operating-system/blob/dev/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The official Generic x86-64 instructions specify UEFI, disabling Secure Boot, 512-byte logical sectors and installation steps.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/home-assistant/operating-system/blob/dev/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:21.014236+00:00",
          "readme_blob_sha": "7ce761f3f0cae36e6a0563e62b9200d85daff0b6",
          "content_sha256": "e94cb85515c28e58f72107dd3f4c42bdf7e9d01a899daac61072d621a3f990f9"
        },
        {
          "url": "https://www.home-assistant.io/installation/generic-x86-64/",
          "kind": "official-compatibility-or-install",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:18:44.541033+00:00"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-19T13:52:06Z",
        "checked_at": "2026-10-20T10:06:21.014236+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Apache-2.0",
        "url": "https://github.com/home-assistant/operating-system/blob/dev/LICENSE",
        "checked_at": "2026-10-20T10:06:21.014236+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-integrations"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Boot USB drive",
          "Healthy system disk",
          "Optional Zigbee/Thread USB adapter"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "expected",
        "bricking": "workflow-dependent",
        "recovery": "Writing the image overwrites the target disk. Save a full disk image first; use original OS installation media for restoration.",
        "recovery_url": null
      },
      "keywords": [
        "thin client Home Assistant",
        "旧小主机 HAOS UEFI",
        "Home Assistant OS",
        "computer",
        "智能家居"
      ],
      "checked_at": "2026-10-20T10:06:21.014236+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "18.3",
        "url": "https://github.com/home-assistant/operating-system/releases/tag/18.3",
        "published_at": "2026-09-17T15:52:18Z"
      },
      "summary": "Turn an old mini PC or thin client into a home automation server.",
      "translation": {
        "source_sha256": "399310efa41df6068de6bdfd496c9d313b38bc82d27a3684101f42ba7ca34a11",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "openmediavault",
      "name": "OpenMediaVault",
      "category": "network",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "openmediavault",
      "device_scope": "x86-64 or supported ARM hosts meeting installation requirements.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "storage-server"
      ],
      "method": "Replace OS",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Plan OS and data disks separately, assess old-disk health and arrange backups."
      ],
      "repo_url": "https://github.com/openmediavault/openmediavault",
      "github_snapshot_url": "https://github.com/openmediavault/openmediavault",
      "website_url": "https://www.openmediavault.org",
      "tutorial_url": "https://docs.openmediavault.org/en/stable/installation/index.html",
      "compatibility_url": "https://github.com/openmediavault/openmediavault/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links Debian installation and official documentation. It explains that the system needs exclusive control of OS configuration and cannot simply run in a container or alongside a desktop environment.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/openmediavault/openmediavault/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:21.021236+00:00",
          "readme_blob_sha": "585632070c159d5d08838470a11e9d099c33450d",
          "content_sha256": "49c14cfcf50e33e7db0801f14ddf973d7ec1053c8bab70cf2d4958c486b7294a"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T01:08:23Z",
        "checked_at": "2026-10-20T10:06:21.021236+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3 (except files stating otherwise)",
        "url": "https://github.com/openmediavault/openmediavault/blob/master/COPYING",
        "checked_at": "2026-10-20T10:06:21.021236+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "storage-dependent",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "System disk",
          "Healthy data disks",
          "Independent backup"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Back up data and configuration first. A NAS or RAID is not a substitute for an independent backup.",
        "recovery_url": null
      },
      "keywords": [
        "OpenMediaVault",
        "network",
        "存储服务器"
      ],
      "checked_at": "2026-10-20T10:06:21.021236+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Turn an old PC and storage hardware into a LAN NAS.",
      "translation": {
        "source_sha256": "180573d27d436d827e2c2fb89fe33b7c0b8a1eadfccf5e03d723ae83d86b0437",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "dietpi",
      "name": "DietPi",
      "category": "computer",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "dietpi",
      "device_scope": "Single-board computers and x86_64 hosts with images on the download page.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "home-server"
      ],
      "method": "Replace OS",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check the image, architecture and RAM limits for the target. Not every old board is supported."
      ],
      "repo_url": "https://github.com/MichaIng/DietPi",
      "github_snapshot_url": "https://github.com/MichaIng/DietPi",
      "website_url": "https://dietpi.com/",
      "tutorial_url": "https://dietpi.com/docs/",
      "compatibility_url": "https://github.com/MichaIng/DietPi/blob/dev/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README describes a lightweight Debian system and x86_64/SBC image links, with deployment documentation.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/MichaIng/DietPi/blob/dev/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:21.099504+00:00",
          "readme_blob_sha": "9ffe8e0894603b7e18e39ed7591853e7cd7014b5",
          "content_sha256": "2267b96e9c89d790e5ec459c993278f22f39ede3f04e0873bb996b82a0e21a58"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T04:51:25Z",
        "checked_at": "2026-10-20T10:06:21.099504+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0",
        "url": "https://github.com/MichaIng/DietPi/blob/dev/LICENSE",
        "checked_at": "2026-10-20T10:06:21.099504+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "expected",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "DietPi",
        "computer",
        "家庭服务器"
      ],
      "checked_at": "2026-10-20T10:06:21.099504+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v10.7",
        "url": "https://github.com/MichaIng/DietPi/releases/tag/v10.7",
        "published_at": "2026-09-12T19:35:16Z"
      },
      "summary": "Reduce the work of deploying services on old single-board computers with a lightweight OS and software management.",
      "translation": {
        "source_sha256": "648cb14fc657ec5f9daa62bf4063cc2c7cb3405d83e89a4e9f95ae836f86893f",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "openwrt",
      "name": "OpenWrt",
      "category": "network",
      "ai_relation": "infrastructure",
      "entry_type": "case",
      "family": "openwrt",
      "device_scope": "Routers with the exact hardware revision listed in the Table of Hardware.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "networking"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Devices with very little flash/RAM may no longer support the current stable release."
      ],
      "repo_url": "https://github.com/openwrt/openwrt",
      "github_snapshot_url": "https://github.com/openwrt/openwrt",
      "website_url": "https://openwrt.org",
      "tutorial_url": "https://openwrt.org/toh/start",
      "compatibility_url": "https://firmware-selector.openwrt.org/",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links the Firmware Selector and installation information. Deployment scope must be narrowed to the exact model and hardware revision.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/openwrt/openwrt/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:08:23.344604+00:00",
          "readme_blob_sha": "dd9f4433e703b689afda88cdd7a0e2e751054498",
          "content_sha256": "4824a270f462191fc92c90fa9cd474b01c6ad0fe0fc3762010ff514bc5e6445b"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T09:28:57Z",
        "checked_at": "2026-10-20T10:08:23.344604+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0-only (other component licenses also apply)",
        "url": "https://github.com/openwrt/openwrt/blob/main/COPYING",
        "checked_at": "2026-10-20T10:08:23.344604+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Ethernet cable",
          "UART/programmer may be needed"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "expected",
        "bricking": "possible",
        "recovery": "Failsafe only applies when the device still boots. A non-booting unit may need model-specific TFTP/UART/programmer recovery. A factory reset is not universal unbricking.",
        "recovery_url": "https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset"
      },
      "keywords": [
        "old router OpenWrt",
        "路由器 硬件版本 恢复",
        "OpenWrt",
        "network",
        "网络设备"
      ],
      "checked_at": "2026-10-20T10:08:23.344604+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v25.12.6",
        "url": "https://github.com/openwrt/openwrt/releases/tag/v25.12.6",
        "published_at": "2026-10-18T23:38:46Z"
      },
      "summary": "Extend networking capabilities and maintenance options on supported routers with open firmware.",
      "translation": {
        "source_sha256": "1670d686a8983a4386f1024f77e36535f042fa59f743b7d79827f55e1f14259c",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "freshTomato",
      "name": "FreshTomato",
      "category": "network",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "freshTomato",
      "device_scope": "Broadcom ARM routers in the official compatibility table.",
      "model_examples": [
        "Netgear R7000",
        "ASUS RT-AC68U 支持修订",
        "Linksys EA6900；完整表见 README"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "networking"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Only the ARM repository is included. Image type, NVRAM and hardware version must match."
      ],
      "repo_url": "https://github.com/FreshTomato-Project/freshtomato-arm",
      "github_snapshot_url": "https://github.com/FreshTomato-Project/freshtomato-arm",
      "website_url": "https://freshtomato.org",
      "tutorial_url": "https://github.com/FreshTomato-Project/freshtomato-arm/blob/arm-master/README.md",
      "compatibility_url": "https://github.com/FreshTomato-Project/freshtomato-arm/blob/arm-master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists supported ARM routers individually and provides downloads and project documentation.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/FreshTomato-Project/freshtomato-arm/blob/arm-master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:26.589385+00:00",
          "readme_blob_sha": "99f0f4548d782fd6f7c238794926a8b61b3d2987",
          "content_sha256": "8ec8b4f6cc5ec2bd5f31ca88c2cddf42069f9935b0d3acf2597a4ac9fe94e55a"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-19T14:29:32Z",
        "checked_at": "2026-10-20T10:06:26.589385+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0",
        "url": "https://github.com/FreshTomato-Project/freshtomato-arm/blob/arm-master/LICENSE.md",
        "checked_at": "2026-10-20T10:06:26.589385+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "expected",
        "bricking": "possible",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "FreshTomato",
        "network",
        "网络设备"
      ],
      "checked_at": "2026-10-20T10:06:26.589385+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "2026.4",
        "url": "https://github.com/FreshTomato-Project/freshtomato-arm/releases/tag/2026.4",
        "published_at": "2026-09-13T15:10:24Z"
      },
      "summary": "Provide alternative firmware and network management on supported old routers.",
      "translation": {
        "source_sha256": "47271d9d71ebe4843b88c511ad4190b8e34c4cd7147adf858f6bfd722be2d23f",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "libreelec",
      "name": "LibreELEC",
      "category": "tv",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "libreelec",
      "device_scope": "Generic x86_64, Raspberry Pi and other devices with official images.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "media-center"
      ],
      "method": "Replace OS",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "This is not universal firmware for every smart TV. Assess DRM service availability separately."
      ],
      "repo_url": "https://github.com/LibreELEC/LibreELEC.tv",
      "github_snapshot_url": "https://github.com/LibreELEC/LibreELEC.tv",
      "website_url": "http://libreelec.tv",
      "tutorial_url": "https://libreelec.tv/",
      "compatibility_url": "https://github.com/LibreELEC/LibreELEC.tv/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The official README describes the media OS and links its website and releases. Check the current image architecture before use.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/LibreELEC/LibreELEC.tv/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:27.217168+00:00",
          "readme_blob_sha": "027927918e49015a4524d01131615934eee32ad4",
          "content_sha256": "2c2ab96e8abed9202cd9962b1937e735718402c5bb533356389af7433f879763"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-19T01:56:33Z",
        "checked_at": "2026-10-20T10:06:27.217168+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0 (README declaration; upstream components separately licensed)",
        "url": "https://github.com/LibreELEC/LibreELEC.tv/blob/master/README.md",
        "checked_at": "2026-10-20T10:06:27.217168+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-content-services"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "LibreELEC",
        "tv",
        "媒体中心"
      ],
      "checked_at": "2026-10-20T10:06:27.217168+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "12.2.1",
        "url": "https://github.com/LibreELEC/LibreELEC.tv/releases/tag/12.2.1",
        "published_at": "2025-10-31T21:41:40Z"
      },
      "summary": "Turn an old mini PC or supported device into a dedicated Kodi player.",
      "translation": {
        "source_sha256": "d757b8267305da3f10e18fbf77187c6d733038660858d83e7365fcb0bf6afbce",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "coreelec",
      "name": "CoreELEC",
      "category": "tv",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "coreelec",
      "device_scope": "Amlogic boxes and exact SoC/board combinations in the official support table.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "media-center"
      ],
      "method": "External boot or OS replacement",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check external-media boot first. The enclosure brand or SoC alone does not establish support."
      ],
      "repo_url": "https://github.com/CoreELEC/CoreELEC",
      "github_snapshot_url": "https://github.com/CoreELEC/CoreELEC",
      "website_url": "https://coreelec.org",
      "tutorial_url": "https://wiki.coreelec.org/",
      "compatibility_url": "https://github.com/CoreELEC/CoreELEC/blob/coreelec-22/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README describes a community Kodi OS and links releases and documentation. This does not establish support for every Amlogic box.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/CoreELEC/CoreELEC/blob/coreelec-22/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:27.345409+00:00",
          "readme_blob_sha": "e2fc7a00ca6d7e9033c0256481df8bfd53c2a053",
          "content_sha256": "0f073109afa051534077071af53c45de5b2a948872873703ee6db9dd82ea37b9"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-18T15:09:16Z",
        "checked_at": "2026-10-20T10:06:27.345409+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0 (README declaration; upstream components separately licensed)",
        "url": "https://github.com/CoreELEC/CoreELEC/blob/coreelec-22/README.md",
        "checked_at": "2026-10-20T10:06:27.345409+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "optional-content-services"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Compatible SD/USB media"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Confirm external boot and the route back to the original OS. Before writing internal storage, separately verify the board's recovery image.",
        "recovery_url": null
      },
      "keywords": [
        "Amlogic CoreELEC device tree",
        "旧电视盒 Kodi 外置启动",
        "CoreELEC",
        "tv",
        "媒体中心"
      ],
      "checked_at": "2026-10-20T10:06:27.345409+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "22.0-Piers_rc1",
        "url": "https://github.com/CoreELEC/CoreELEC/releases/tag/22.0-Piers_rc1",
        "published_at": "2026-10-03T21:26:48Z"
      },
      "summary": "Provide a dedicated media OS for compatible Amlogic TV boxes.",
      "translation": {
        "source_sha256": "7f4b593a6fc7fecf0433f10015f05bd0007cc623ece807973e1f62496951658c",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "armbian-tv",
      "name": "Armbian for Amlogic / Rockchip / Allwinner",
      "category": "tv",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "armbian-tv",
      "device_scope": "Boxes/development boards and exact SoC/DTB combinations in the project's support table.",
      "model_examples": [
        "S905X3、S905X2、S922X 等 SoC 下的项目支持板型；不能只匹配 SoC"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "home-server"
      ],
      "method": "External boot or OS replacement",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Community adaptation is not official Armbian support. eMMC installation is riskier than external boot."
      ],
      "repo_url": "https://github.com/ophub/amlogic-s9xxx-armbian",
      "github_snapshot_url": "https://github.com/ophub/amlogic-s9xxx-armbian",
      "website_url": null,
      "tutorial_url": "https://github.com/ophub/amlogic-s9xxx-armbian/tree/main/documents",
      "compatibility_url": "https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README explicitly extends to TV boxes not supported by official Armbian and includes a support table and installation instructions.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:32.574908+00:00",
          "readme_blob_sha": "4a96bb2b63c4b3ce36051e439f48f309af4fef79",
          "content_sha256": "9a727d7eaff06de4d7b152df67ee5784d779fe65101f75d7b96eefde3d1abd29"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T01:22:53Z",
        "checked_at": "2026-10-20T10:06:32.574908+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0",
        "url": "https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:32.574908+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "First test networking, storage and stability from external media. Recovery files for every box were not verified in this review.",
        "recovery_url": null
      },
      "keywords": [
        "Armbian for Amlogic / Rockchip / Allwinner",
        "tv",
        "家庭服务器"
      ],
      "checked_at": "2026-10-20T10:06:32.574908+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "Armbian_trixie_arm64_server_2026.10",
        "url": "https://github.com/ophub/amlogic-s9xxx-armbian/releases/tag/Armbian_trixie_arm64_server_2026.10",
        "published_at": "2026-10-01T04:54:20Z"
      },
      "summary": "Turn selected idle TV boxes into lightweight Linux service hosts.",
      "translation": {
        "source_sha256": "22caa30fab3b34f089f52e705069b77a8f71b6d4042d0a50951c26f45fb43b98",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "webos-homebrew",
      "name": "webOS Homebrew Channel",
      "category": "tv",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "webos-homebrew",
      "device_scope": "LG webOS TVs meeting root prerequisites.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "app-extension"
      ],
      "method": "Install apps and extend privileges",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Depends on privilege access/development environments available for the exact firmware. This does not repair physical TV faults."
      ],
      "repo_url": "https://github.com/webosbrew/webos-homebrew-channel",
      "github_snapshot_url": "https://github.com/webosbrew/webos-homebrew-channel",
      "website_url": null,
      "tutorial_url": "https://github.com/webosbrew/webos-homebrew-channel/blob/main/README.md",
      "compatibility_url": "https://github.com/webosbrew/webos-homebrew-channel/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists installation, root functions and a failsafe mechanism and identifies this as an unofficial community store.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/webosbrew/webos-homebrew-channel/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:32.926675+00:00",
          "readme_blob_sha": "71fed60ad78db04258fc78c06213f265528b18df",
          "content_sha256": "8f7e3546bf29a18cb3e9322a74036be2ed105012dedb6db21d29d94a57676251"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-08-03T11:05:15Z",
        "checked_at": "2026-10-20T10:06:32.926675+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/webosbrew/webos-homebrew-channel/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:32.926675+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "The README describes a failsafe emergency shell. It cannot be assumed to recover every boot failure.",
        "recovery_url": null
      },
      "keywords": [
        "webOS Homebrew Channel",
        "tv",
        "应用扩展"
      ],
      "checked_at": "2026-10-20T10:06:32.926675+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v0.7.3",
        "url": "https://github.com/webosbrew/webos-homebrew-channel/releases/tag/v0.7.3",
        "published_at": "2026-01-11T16:39:11Z"
      },
      "summary": "Provide community app installation and management on an owner's webOS TV.",
      "translation": {
        "source_sha256": "ac1af4cfe7ad5f6bf074821be210cf8a829dc7bd567542ce73c322bb69d2f72d",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "rootmytv",
      "name": "RootMyTV",
      "category": "tv",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "rootmytv",
      "device_scope": "Old LG webOS firmware versions explicitly listed by the project.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "app-extension"
      ],
      "method": "Privilege unlock",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "New firmware with patched vulnerabilities is not supported. This entry does not provide ways around another person's account lock."
      ],
      "repo_url": "https://github.com/RootMyTV/RootMyTV.github.io",
      "github_snapshot_url": "https://github.com/RootMyTV/RootMyTV.github.io",
      "website_url": "https://RootMy.TV",
      "tutorial_url": "https://github.com/RootMyTV/RootMyTV.github.io/blob/main/README.md",
      "compatibility_url": "https://github.com/RootMyTV/RootMyTV.github.io/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README says the v1/v2 vulnerabilities were patched and firmware from after mid-2022 generally does not work. Included as historical infrastructure.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/RootMyTV/RootMyTV.github.io/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:33.330544+00:00",
          "readme_blob_sha": "bf67fd064e2af7b0c59c00e94e4b65b88769eec3",
          "content_sha256": "2d66186a86b2618a6f6cfb34e19b78c5b37212a4a142a4fee488c15203901a2d"
        }
      ],
      "maintenance": {
        "status": "historical-patched",
        "github_archived": false,
        "last_push_at": "2025-01-05T12:36:20Z",
        "checked_at": "2026-10-20T10:06:33.330544+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/RootMyTV/RootMyTV.github.io/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:33.330544+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "The source says downgrading usually is not possible without existing root. Do not treat an old tutorial as a solution for new firmware.",
        "recovery_url": null
      },
      "keywords": [
        "RootMyTV",
        "tv",
        "应用扩展"
      ],
      "checked_at": "2026-10-20T10:06:33.330544+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v2.0.0",
        "url": "https://github.com/RootMyTV/RootMyTV.github.io/releases/tag/v2.0.0",
        "published_at": "2022-01-14T18:00:40Z"
      },
      "summary": "Preserve a historical route for running homebrew on old webOS TVs.",
      "translation": {
        "source_sha256": "b9b56eae5ab8c9b922fed6f9bfe333f4f8e8b82d96b7be2b6613616f99050c93",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "koreader",
      "name": "KOReader",
      "category": "ereader",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "koreader",
      "device_scope": "Supported Kindle, Kobo, PocketBook and Android reading devices.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "reading"
      ],
      "method": "Install application",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Installation prerequisites vary by platform. Kindle generally requires an available jailbreak."
      ],
      "repo_url": "https://github.com/koreader/koreader",
      "github_snapshot_url": "https://github.com/koreader/koreader",
      "website_url": "http://koreader.rocks/",
      "tutorial_url": "https://github.com/koreader/koreader/wiki",
      "compatibility_url": "https://github.com/koreader/koreader/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists reader platforms, downloads, a user guide and wiki. Kindle and Kobo have different installation prerequisites.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/koreader/koreader/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:08:23.345604+00:00",
          "readme_blob_sha": "a5f638ef5e263a45832ad5236e2459098a4fd999",
          "content_sha256": "c92b4e7f503350c79d4f32ba1f1fb8c6cb273baec03d82ce7696c62606530ec1"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T07:40:14Z",
        "checked_at": "2026-10-20T10:08:23.345604+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "AGPL-3.0",
        "url": "https://github.com/koreader/koreader/blob/master/COPYING",
        "checked_at": "2026-10-20T10:08:23.345604+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-sync"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Uninstall the app using the platform's procedure. Reversing jailbreak or boot changes is a separate step.",
        "recovery_url": null
      },
      "keywords": [
        "KOReader",
        "ereader",
        "阅读扩展"
      ],
      "checked_at": "2026-10-20T10:08:23.345604+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "ota",
        "url": "https://github.com/koreader/koreader/releases/tag/ota",
        "published_at": "2026-09-29T03:03:22Z"
      },
      "summary": "Extend multiformat reading, typography and synchronization on old e-readers.",
      "translation": {
        "source_sha256": "9e47e095d281b31e55d6748407b2c8f2e594882db2d22a6522f0a55f85e32a5c",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "kindle-carousel",
      "name": "Kindle Carousel",
      "category": "ereader",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "kindle-carousel",
      "device_scope": "Old Kindles covered by the project tutorial; check model and jailbreak prerequisites individually.",
      "model_examples": [
        "Kindle 3 Keyboard",
        "Kindle 4 NT"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "information-display"
      ],
      "method": "Install scripts",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Do not assume refresh behavior, buttons and networking scripts work across all models."
      ],
      "repo_url": "https://github.com/qadzek/kindle-carousel",
      "github_snapshot_url": "https://github.com/qadzek/kindle-carousel",
      "website_url": null,
      "tutorial_url": "https://github.com/qadzek/kindle-carousel/blob/main/README.md",
      "compatibility_url": "https://github.com/qadzek/kindle-carousel/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies Kindle 3 / 4 NT, SSH, a three-part installation sequence and an author demo. Continuous button listening affects battery life.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/qadzek/kindle-carousel/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:08:23.344604+00:00",
          "readme_blob_sha": "ddd7da6a526972f181ed1ff1f7d6631a0a08ec06",
          "content_sha256": "58394e9a3c7a74d63b653288fde37042f9d213dbaeecef258309111eb3785a03"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-15T13:38:16Z",
        "checked_at": "2026-10-20T10:08:23.344604+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/qadzek/kindle-carousel/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:08:23.344604+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no-local-server-possible"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Always-on screenshot server",
          "Power supply"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Disable the Kindle scripts and remove automatic startup entries. Check jailbreak recovery separately for the model.",
        "recovery_url": null
      },
      "keywords": [
        "Kindle Carousel",
        "ereader",
        "信息屏"
      ],
      "checked_at": "2026-10-20T10:08:23.344604+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v2.2.1",
        "url": "https://github.com/qadzek/kindle-carousel/releases/tag/v2.2.1",
        "published_at": "2026-10-15T13:38:02Z"
      },
      "summary": "Turn an old Kindle into an information display with switchable content.",
      "translation": {
        "source_sha256": "7d9ae27ebfc4796192e098231b43da7ad13556ae3e46d967d9ba826bb58e6e2c",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "kindle-ha",
      "name": "HA Lovelace Kindle Screensaver",
      "category": "ereader",
      "ai_relation": "infrastructure",
      "entry_type": "case",
      "family": "kindle-ha",
      "device_scope": "Jailbroken Kindles capable of running the screenshot display scripts.",
      "model_examples": [
        "作者另附 Kindle 4 配置；其他 Kindle 需确认 online screensaver"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "information-display"
      ],
      "method": "Install scripts",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Needs Home Assistant and a screenshot service. The screen is not running a complete browser application."
      ],
      "repo_url": "https://github.com/sibbl/hass-lovelace-kindle-screensaver",
      "github_snapshot_url": "https://github.com/sibbl/hass-lovelace-kindle-screensaver",
      "website_url": null,
      "tutorial_url": "https://github.com/sibbl/hass-lovelace-kindle-4",
      "compatibility_url": "https://github.com/sibbl/hass-lovelace-kindle-screensaver/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links a Home Assistant screenshot service, online screensaver and the author's Kindle 4 setup.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/sibbl/hass-lovelace-kindle-screensaver/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:39.272156+00:00",
          "readme_blob_sha": "1e163c231cb2e8f7b40da60682f1b4fa3d089d9a",
          "content_sha256": "e06bb0b14cd0df8a651aa11103d32277fe78443abd72209f08b5fc4e4da75abe"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-04T19:40:53Z",
        "checked_at": "2026-10-20T10:06:39.272156+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/sibbl/hass-lovelace-kindle-screensaver/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:39.272156+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no-local-server-possible"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Home Assistant and screenshot server"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Remove scheduled download/display scripts and revoke the Home Assistant token. Retaining the original reading functions depends on how it was installed.",
        "recovery_url": null
      },
      "keywords": [
        "Kindle 4 Home Assistant dashboard",
        "旧 Kindle 家庭看板",
        "HA Lovelace Kindle Screensaver",
        "ereader",
        "信息屏"
      ],
      "checked_at": "2026-10-20T10:06:39.272156+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v1.2.1",
        "url": "https://github.com/sibbl/hass-lovelace-kindle-screensaver/releases/tag/v1.2.1",
        "published_at": "2026-10-04T19:33:13Z"
      },
      "summary": "Render Home Assistant pages on a server and use an old Kindle only for display.",
      "translation": {
        "source_sha256": "1f604178143a2c87063d2a864a90ed92b1ef37d83f84c82c7e597d4f7755abd8",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "kindle-dashboard",
      "name": "Kindle Dashboard",
      "category": "ereader",
      "ai_relation": "adjacent",
      "entry_type": "platform",
      "family": "kindle-dashboard",
      "device_scope": "Jailbroken Kindle Paperwhite with SSH / FBInk.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "information-display"
      ],
      "method": "Install application and scripts",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Displaying AI usage does not mean running AI on the device. The project does not handle jailbreaking."
      ],
      "repo_url": "https://github.com/alexishida/kindle-dashboard",
      "github_snapshot_url": "https://github.com/alexishida/kindle-dashboard",
      "website_url": null,
      "tutorial_url": "https://github.com/alexishida/kindle-dashboard/blob/main/README.md",
      "compatibility_url": "https://github.com/alexishida/kindle-dashboard/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README explains the PC/Kindle architecture, SSH/FBInk prerequisites, setup UI and script removal. Its AI relationship is limited to displaying AI tool usage.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/alexishida/kindle-dashboard/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:39.947766+00:00",
          "readme_blob_sha": "ce575fdf92820ed887826662959623e31b5278e0",
          "content_sha256": "d6249bd42c8a785fe05fa2af8ac7170b529cc34a8406782c2b6bcc44cc45916d"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-07-15T23:33:08Z",
        "checked_at": "2026-10-20T10:06:39.947766+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:06:39.947766+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "depends-on-displayed-services"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Windows 10/11 host"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Remove Kindle scripts using the project UI. This does not automatically reverse the jailbreak.",
        "recovery_url": null
      },
      "keywords": [
        "Kindle Dashboard",
        "ereader",
        "信息屏"
      ],
      "checked_at": "2026-10-20T10:06:39.947766+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v1.0.6",
        "url": "https://github.com/alexishida/kindle-dashboard/releases/tag/v1.0.6",
        "published_at": "2026-07-01T04:40:43Z"
      },
      "summary": "Use an old Paperwhite as a desktop information screen displaying AI tool usage.",
      "translation": {
        "source_sha256": "5c74b7cf3fc7825ed2ab324164dfafb95304d107cd791624b32358d3c56f57f4",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "kindle-phonekit",
      "name": "Kindle PhoneKit",
      "category": "ereader",
      "ai_relation": "native",
      "entry_type": "platform",
      "family": "kindle-phonekit",
      "device_scope": "Jailbroken Kindle with KUAL and the required Python environment.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "partial",
      "use_cases": [
        "conversation"
      ],
      "method": "Install KUAL extension",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Models run in external services. Check TLS/Python support on the old device."
      ],
      "repo_url": "https://github.com/Keylessboi/kindle-phonekit",
      "github_snapshot_url": "https://github.com/Keylessboi/kindle-phonekit",
      "website_url": "https://keylessboi.github.io/kindle-phonekit/",
      "tutorial_url": "https://github.com/Keylessboi/kindle-phonekit/blob/master/README.md",
      "compatibility_url": "https://github.com/Keylessboi/kindle-phonekit/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README documents a KUAL extension, LLM endpoint setup and installation. No reliable model-by-model hardware test matrix was found.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/Keylessboi/kindle-phonekit/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:39.948766+00:00",
          "readme_blob_sha": "1f747983a2745935d60a01df349c11daa37c6f8a",
          "content_sha256": "e1ec8e620d386f99737bb2e5a2f01ef04e096f844846f5b2c12126f52f561b87"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-08-09T00:01:11Z",
        "checked_at": "2026-10-20T10:06:39.948766+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0",
        "url": "https://github.com/Keylessboi/kindle-phonekit/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:39.948766+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-external-model"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Available model service"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Back up configuration and remove plaintext API keys before deleting the extension. Handle jailbreak rollback separately.",
        "recovery_url": null
      },
      "keywords": [
        "Kindle PhoneKit",
        "ereader",
        "对话终端"
      ],
      "checked_at": "2026-10-20T10:06:39.948766+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Use an old Kindle as a lightweight chat and messaging endpoint for OpenAI-compatible APIs.",
      "translation": {
        "source_sha256": "d5a18107eb1c93532607db8c9505b932ec01bbbc97da1aa4921811932504a2cb",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "kindle-whoop",
      "name": "Kindle for WHOOP",
      "category": "ereader",
      "ai_relation": "assisted",
      "entry_type": "case",
      "family": "kindle-whoop",
      "device_scope": "Jailbroken Kindles supported by the project configuration.",
      "model_examples": [
        "Kindle Paperwhite 2"
      ],
      "firmware_requirement": "5.10.3 (the author's only verified range)",
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "information-display"
      ],
      "method": "Install scripts",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "AI-assisted setup does not verify that all code was AI-developed. Requires external accounts/APIs."
      ],
      "repo_url": "https://github.com/kaibuildsai/kindle-for-whoop",
      "github_snapshot_url": "https://github.com/kaibuildsai/kindle-for-whoop",
      "website_url": null,
      "tutorial_url": "https://github.com/kaibuildsai/kindle-for-whoop/blob/main/docs/ai-assisted-setup.md",
      "compatibility_url": "https://github.com/kaibuildsai/kindle-for-whoop/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E2",
        "reason": "The author's README explicitly reports Paperwhite 2 / 5.10.3 manual refresh and one full RTC wake, network refresh and sleep cycle. No independent reproduction was found.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/kaibuildsai/kindle-for-whoop/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:43.582356+00:00",
          "readme_blob_sha": "06e2039e82391a88fd70b066d486699de967fd77",
          "content_sha256": "0084b2adbfda3f507054d9c1216b22fe0feb6a3d6067e2ee43467f4afa31dfc6"
        },
        {
          "url": "https://github.com/kaibuildsai/kindle-for-whoop/blob/main/docs/ai-assisted-setup.md",
          "kind": "ai-setup-doc",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:18:44.541033+00:00"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-08-10T07:11:32Z",
        "checked_at": "2026-10-20T10:06:43.582356+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/kaibuildsai/kindle-for-whoop/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:43.582356+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "required-whoop"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "WHOOP account/service",
          "Data service host"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "First disable automatic wake/refresh, remove client configuration and revoke API authorization no longer needed. Keep backups of the original device files.",
        "recovery_url": null
      },
      "keywords": [
        "Paperwhite 2 WHOOP",
        "Kindle AI assisted setup",
        "Kindle for WHOOP",
        "ereader",
        "信息屏"
      ],
      "checked_at": "2026-10-20T10:06:43.582356+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Turn an old Kindle into a WHOOP health-data display, with documentation for AI-assisted setup.",
      "translation": {
        "source_sha256": "3ae71042f5fd3ccfeac5f0866d3e7231df49637d3d0f00b1c239bc159df5b900",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "winterbreak",
      "name": "WinterBreak",
      "category": "ereader",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "winterbreak",
      "device_scope": "Kindle model/firmware combinations explicitly supported by the official jailbreak guide.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "app-extension"
      ],
      "method": "Privilege unlock",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "This is infrastructure, not a complete information-display or AI conversion."
      ],
      "repo_url": "https://github.com/KindleModding/WinterBreak",
      "github_snapshot_url": "https://github.com/KindleModding/WinterBreak",
      "website_url": null,
      "tutorial_url": "https://kindlemodding.org/jailbreaking/WinterBreak",
      "compatibility_url": "https://github.com/KindleModding/WinterBreak/blob/winterbreak/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links the official WinterBreak installation guide and release notes. Read firmware-specific exceptions before proceeding.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/KindleModding/WinterBreak/blob/winterbreak/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:45.402358+00:00",
          "readme_blob_sha": "c7e08494538d586d19dabdf7e39f8a0cc0014c1a",
          "content_sha256": "fefa0e8bf0f5f4cb72084d2b639dce9e46b843f92930539d1db6db1cf7217868"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-06-28T06:19:29Z",
        "checked_at": "2026-10-20T10:06:45.402358+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:06:45.402358+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "model-dependent"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "A factory reset does not necessarily remove every jailbreak component. Verify recovery for the exact model.",
        "recovery_url": null
      },
      "keywords": [
        "WinterBreak",
        "ereader",
        "应用扩展"
      ],
      "checked_at": "2026-10-20T10:06:45.402358+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v2.1.0",
        "url": "https://github.com/KindleModding/WinterBreak/releases/tag/v2.1.0",
        "published_at": "2026-06-28T06:19:29Z"
      },
      "summary": "Provide a prerequisite unlock route for installing community software on supported Kindles.",
      "translation": {
        "source_sha256": "42f9898b453e57f9546ecdc526dc18dd915e628207ab745654f3b9da2f7c7b0c",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "fbink",
      "name": "FBInk",
      "category": "ereader",
      "ai_relation": "infrastructure",
      "entry_type": "prerequisite",
      "family": "fbink",
      "device_scope": "Supported Linux framebuffer / Kindle / Kobo environments.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "information-display"
      ],
      "method": "Low-level tool",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "A drawing library is not a ready-to-use product. It needs higher-level scripts and device permissions."
      ],
      "repo_url": "https://github.com/NiLuJe/FBInk",
      "github_snapshot_url": "https://github.com/NiLuJe/FBInk",
      "website_url": "https://www.mobileread.com/forums/showthread.php?t=299110",
      "tutorial_url": "https://github.com/NiLuJe/FBInk/blob/master/README.md",
      "compatibility_url": "https://github.com/NiLuJe/FBInk/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists tested device families and documents the library and CLI. Several display projects use it for screen output.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/NiLuJe/FBInk/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:45.991366+00:00",
          "readme_blob_sha": "2a79660852211c1a478a887bf1b5fa7913381fcd",
          "content_sha256": "06177a0bb87826fe2ff4490a14fdd03ecc359b4ec31814dcb27d012614d4148f"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-08-06T00:39:48Z",
        "checked_at": "2026-10-20T10:06:45.991366+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0",
        "url": "https://github.com/NiLuJe/FBInk/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:45.991366+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "FBInk",
        "ereader",
        "信息屏"
      ],
      "checked_at": "2026-10-20T10:06:45.991366+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v1.25.0",
        "url": "https://github.com/NiLuJe/FBInk/releases/tag/v1.25.0",
        "published_at": "2022-12-05T02:50:38Z"
      },
      "summary": "Provide low-level e-ink drawing tools for information-display projects on old readers.",
      "translation": {
        "source_sha256": "bdba84a62598fabb8c520adb5ebbd587a92835656788a67a06c0585689b9ef6b",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "valetudo",
      "name": "Valetudo",
      "category": "robot",
      "ai_relation": "infrastructure",
      "entry_type": "case",
      "family": "valetudo",
      "device_scope": "Exact robot vacuum models in the Valetudo support list.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "offline-control"
      ],
      "method": "Cloud service replacement",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Not all robots are supported. Rooting and recovery difficulty vary by model."
      ],
      "repo_url": "https://github.com/Hypfer/Valetudo",
      "github_snapshot_url": "https://github.com/Hypfer/Valetudo",
      "website_url": "https://valetudo.cloud",
      "tutorial_url": "https://valetudo.cloud/",
      "compatibility_url": "https://valetudo.cloud/pages/general/supported-robots/",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README describes a local cloud-replacement layer running on vendor firmware. Official documentation supplies the supported-robot list and model-specific installation methods.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/Hypfer/Valetudo/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:46.270991+00:00",
          "readme_blob_sha": "f568d2cfd396bc67e61671fbfd351b58e179f279",
          "content_sha256": "4054768d30e96613d5212078c01ab85520ebf36952320dae7d9a8ba298cdc490"
        },
        {
          "url": "https://valetudo.cloud/pages/general/supported-robots/",
          "kind": "official-compatibility-or-install",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:18:44.541033+00:00"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-18T17:15:02Z",
        "checked_at": "2026-10-20T10:06:46.270991+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Apache-2.0",
        "url": "https://github.com/Hypfer/Valetudo/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:46.270991+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Model-specific flashing/connection tools"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Back up according to the exact robot's rooting method. This review has not verified unbricking for any model.",
        "recovery_url": null
      },
      "keywords": [
        "robot vacuum offline Valetudo",
        "扫地机器人 本地控制",
        "Valetudo",
        "robot",
        "离线控制"
      ],
      "checked_at": "2026-10-20T10:06:46.270991+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "2026.10.0",
        "url": "https://github.com/Hypfer/Valetudo/releases/tag/2026.10.0",
        "published_at": "2026-10-18T17:25:11Z"
      },
      "summary": "Retain local control of compatible robot vacuums and reduce vendor-cloud dependence.",
      "translation": {
        "source_sha256": "721d92cdefb235b9bd552923fca4e2a231714f0b87206bf523dab7aae9ee2d94",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "wirepod",
      "name": "wire-pod",
      "category": "robot",
      "ai_relation": "native",
      "entry_type": "case",
      "family": "wirepod",
      "device_scope": "Anki / Digital Dream Labs Vector robots within the setup documentation's scope.",
      "model_examples": [
        "Vector 1.0",
        "Vector 2.0"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "voice-assistant"
      ],
      "method": "Cloud service replacement",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Firmware and pairing must match. Having a server alone does not prove any Vector can be restored."
      ],
      "repo_url": "https://github.com/kercre123/wire-pod",
      "github_snapshot_url": "https://github.com/kercre123/wire-pod",
      "website_url": null,
      "tutorial_url": "https://github.com/kercre123/wire-pod/wiki/Installation",
      "compatibility_url": "https://github.com/kercre123/wire-pod/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies Vector 1.0/2.0 and production-robot support, with installation wiki and troubleshooting links.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/kercre123/wire-pod/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:46.473375+00:00",
          "readme_blob_sha": "f1620459a6fe2d1e38bdb4a514125078c13960a4",
          "content_sha256": "f6396a69982629eacceeb8700ceca53e2df44ef6cf056821a2d2dfa144af205e"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-15T01:04:49Z",
        "checked_at": "2026-10-20T10:06:46.473375+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/kercre123/wire-pod/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:06:46.473375+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-knowledge-provider"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Always-on server"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Keep pairing and firmware information. Redeploying the server alone does not guarantee a fix for firmware or hardware faults.",
        "recovery_url": null
      },
      "keywords": [
        "Anki Vector wire pod offline",
        "Vector 机器人 复活",
        "wire-pod",
        "robot",
        "语音助手"
      ],
      "checked_at": "2026-10-20T10:06:46.473375+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v1.1.2",
        "url": "https://github.com/kercre123/wire-pod/releases/tag/v1.1.2",
        "published_at": "2023-11-21T04:25:57Z"
      },
      "summary": "Reuse Vector robots with community voice services and optional knowledge-question backends.",
      "translation": {
        "source_sha256": "74d258eed2deda0eddad88cb0b019b7e183e7e25f515c3aa6abda3ac73b6d306",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "openlumi",
      "name": "OpenLumi",
      "category": "smarthome",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "openlumi",
      "device_scope": "Xiaomi gateway hardware revisions supported by OpenLumi documentation.",
      "model_examples": [
        "DGNWG05LM / mieu01 欧版",
        "Aqara ZHWG11LM；不支持 DGNWG02LM"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "offline-control"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check UART, backup and flashing instructions for the exact board."
      ],
      "repo_url": "https://github.com/openlumi/openlumi.github.io",
      "github_snapshot_url": "https://github.com/openlumi/openlumi.github.io",
      "website_url": "https://openlumi.github.io",
      "tutorial_url": "https://github.com/openlumi/openlumi.github.io/blob/master/README.md",
      "compatibility_url": "https://github.com/openlumi/openlumi.github.io/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README limits hardware revisions and includes backup, OTA failure recovery and return-to-stock-firmware sections.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/openlumi/openlumi.github.io/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:49.636501+00:00",
          "readme_blob_sha": "8c92d17b65fa60b32d3b7209d7179286967ca8c7",
          "content_sha256": "192fd6891374136c83e90ece2e57610f8d6dc92e48619c940728ad84bde811dc"
        }
      ],
      "maintenance": {
        "status": "stale",
        "github_archived": false,
        "last_push_at": "2025-02-15T11:27:11Z",
        "checked_at": "2026-10-20T10:06:49.636501+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:06:49.636501+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "method-dependent",
        "soldering": "method-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Keep this device's own rootfs tar.gz backup. Another device's generic backup cannot replace unique device data.",
        "recovery_url": "https://github.com/openlumi/openlumi.github.io#return-to-stock-firmware"
      },
      "keywords": [
        "OpenLumi",
        "smarthome",
        "离线控制"
      ],
      "checked_at": "2026-10-20T10:06:49.636501+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Reuse old smart-gateway hardware with an open system and local Zigbee services.",
      "translation": {
        "source_sha256": "a73855a9a9caa140f990bdca19d2ae0103fb5903bdc4257d7c22dc8c684e89dd",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "tasmota",
      "name": "Tasmota",
      "category": "smarthome",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "tasmota",
      "device_scope": "Smart devices with compatible ESP8266 / ESP32 chips and pin templates.",
      "model_examples": [
        "ESP8266/ESP8285/受支持 ESP32 系列；具体设备查模板"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "offline-control"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "The chip can change within the same product name. Disassembling mains-powered devices is unsuitable for inexperienced users."
      ],
      "repo_url": "https://github.com/arendst/Tasmota",
      "github_snapshot_url": "https://github.com/arendst/Tasmota",
      "website_url": "https://tasmota.github.io/docs",
      "tutorial_url": "https://tasmota.github.io/docs/",
      "compatibility_url": "https://github.com/arendst/Tasmota/blob/development/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists chip families, local control and official documentation. Different batches of the same product still require hardware identification.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/arendst/Tasmota/blob/development/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:51.568536+00:00",
          "readme_blob_sha": "aa0024ded7c333ad71a3a925c422a328a23a57a1",
          "content_sha256": "706eb8ae890cf22086f0810087d6e8c535b7edb67367b3b13b65de1e07032136"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-19T15:51:40Z",
        "checked_at": "2026-10-20T10:06:51.568536+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0",
        "url": "https://github.com/arendst/Tasmota/blob/development/LICENSE.txt",
        "checked_at": "2026-10-20T10:06:51.568536+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "USB serial tools, depending on device"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Save firmware and calibration data first. Serial recovery feasibility is device-specific.",
        "recovery_url": null
      },
      "keywords": [
        "Tasmota",
        "smarthome",
        "离线控制"
      ],
      "checked_at": "2026-10-20T10:06:51.568536+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v16.0.0",
        "url": "https://github.com/arendst/Tasmota/releases/tag/v16.0.0",
        "published_at": "2026-10-16T07:53:42Z"
      },
      "summary": "Replace firmware on selected smart plugs, lights and sensors to regain local control.",
      "translation": {
        "source_sha256": "1558a054b80068bf1ca2b0c41b6bb03f28812372dc4efc053654316303a8cbdf",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "openbeken",
      "name": "OpenBeken",
      "category": "smarthome",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "openbeken",
      "device_scope": "Supported chips such as BK7231 and matching board designs.",
      "model_examples": [
        "BK7231T",
        "BK7231N",
        "其他 README 支持芯片"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "offline-control"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Confirm chip, pins, calibration data and flashing method for every board."
      ],
      "repo_url": "https://github.com/openshwprojects/OpenBK7231T_App",
      "github_snapshot_url": "https://github.com/openshwprojects/OpenBK7231T_App",
      "website_url": "https://openbekeniot.github.io/webapp/devicesList.html",
      "tutorial_url": "https://github.com/openshwprojects/OpenBK7231T_App/blob/main/README.md",
      "compatibility_url": "https://github.com/openshwprojects/OpenBK7231T_App/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists chips, modules and flashing documentation, with MQTT / Home Assistant local-control routes.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/openshwprojects/OpenBK7231T_App/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:52.265924+00:00",
          "readme_blob_sha": "41a3225d9d58e034f326b50e7a30813836c9f4b7",
          "content_sha256": "adf6cc2ca02657f31402ea4792bdbe63795466e6aa4776d45374fd83c98a76a8"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-13T06:11:20Z",
        "checked_at": "2026-10-20T10:06:52.265924+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:06:52.265924+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Keep original flash/calibration data. Do not assume another device's pinout applies.",
        "recovery_url": null
      },
      "keywords": [
        "OpenBeken",
        "smarthome",
        "离线控制"
      ],
      "checked_at": "2026-10-20T10:06:52.265924+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "1.18.318",
        "url": "https://github.com/openshwprojects/OpenBK7231T_App/releases/tag/1.18.318",
        "published_at": "2026-10-13T06:14:16Z"
      },
      "summary": "Give selected non-ESP cloud-dependent smart devices local MQTT and similar control.",
      "translation": {
        "source_sha256": "9171d1ec9389f7eea95536e94c4ef3d516c582f437ca3e7b466f2cc7e9fd2dfc",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "esphome",
      "name": "ESPHome",
      "category": "smarthome",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "esphome",
      "device_scope": "ESP and other microcontroller devices covered by supported platforms and device configurations.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "offline-control"
      ],
      "method": "Replace firmware",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Assess reuse by exact device configuration. A demo on a newly bought development board is not a successful old-hardware revival."
      ],
      "repo_url": "https://github.com/esphome/esphome",
      "github_snapshot_url": "https://github.com/esphome/esphome",
      "website_url": "https://esphome.io/",
      "tutorial_url": "https://esphome.io/",
      "compatibility_url": "https://github.com/esphome/esphome/blob/dev/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links official documentation and releases. Included as a reuse platform for supported devices, not a reproduction on one specific old device.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/esphome/esphome/blob/dev/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:52.437139+00:00",
          "readme_blob_sha": "16497ee0be21c8eddbfd6941f78e35bc07a147a2",
          "content_sha256": "1c54cf43c54cc139720bd37f349fd4372c38fee2d36bd4664f863bb91cdf2b31"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T10:05:17Z",
        "checked_at": "2026-10-20T10:06:52.437139+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT + GPL-3.0 (by code type)",
        "url": "https://github.com/esphome/esphome/blob/dev/LICENSE",
        "checked_at": "2026-10-20T10:06:52.437139+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "ESPHome",
        "smarthome",
        "离线控制"
      ],
      "checked_at": "2026-10-20T10:06:52.437139+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "2026.10.0b5",
        "url": "https://github.com/esphome/esphome/releases/tag/2026.10.0b5",
        "published_at": "2026-10-19T01:03:08Z"
      },
      "summary": "Reconfigure programmable old sensors, plugs and DIY boards for local uses.",
      "translation": {
        "source_sha256": "f20b5693088f5d64ddaef62cd394fa7a0fcfb947421ab7f9981e1b38d55c59a8",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "openipc",
      "name": "OpenIPC",
      "category": "camera",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "openipc",
      "device_scope": "Camera SoC/sensor/flash combinations supported by OpenIPC.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "camera"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Identical enclosures do not prove identical hardware. Original firmware backups and network recovery matter."
      ],
      "repo_url": "https://github.com/OpenIPC/firmware",
      "github_snapshot_url": "https://github.com/OpenIPC/firmware",
      "website_url": "https://openipc.org",
      "tutorial_url": "https://github.com/OpenIPC/wiki",
      "compatibility_url": "https://github.com/OpenIPC/firmware/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README lists camera SoC families and an official wiki. Images also depend on sensor/storage configuration.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/OpenIPC/firmware/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:52.445298+00:00",
          "readme_blob_sha": "9ce071b8b903fe935c8cacc69a39b696a28345d2",
          "content_sha256": "9be2fe1c32e12f027e187e818f12e4eaa5b382d11ca334367b447f00da4f40dc"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T09:43:15Z",
        "checked_at": "2026-10-20T10:06:52.445298+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/OpenIPC/firmware/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:52.445298+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Back up original flash, MAC and sensor configuration. Verify UART/network recovery for the exact board.",
        "recovery_url": null
      },
      "keywords": [
        "OpenIPC",
        "camera",
        "摄像头"
      ],
      "checked_at": "2026-10-20T10:06:52.445298+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "nightly",
        "url": "https://github.com/OpenIPC/firmware/releases/tag/nightly",
        "published_at": "2026-05-20T23:50:39Z"
      },
      "summary": "Replace firmware on selected IP cameras to obtain video streams under the owner's control.",
      "translation": {
        "source_sha256": "d40c1e325b0a4856f99af13c6d13f2d7cf05a9f2e24602b310079105025deae9",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "dafang",
      "name": "Xiaomi Dafang Hacks",
      "category": "camera",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "dafang",
      "device_scope": "Xiaofang/Dafang and selected Ingenic cameras in the README support table.",
      "model_examples": [
        "Xiaomi Dafang",
        "Xiaofang 1S T20",
        "Wyze Cam v2",
        "Wyze Cam Pan；其他见 README"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "camera"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "A historical project; some production batches and bootloaders may not work."
      ],
      "repo_url": "https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks",
      "github_snapshot_url": "https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks",
      "website_url": null,
      "tutorial_url": "https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/hacks/install_cfw.md",
      "compatibility_url": "https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README has a model table, FAQ and custom-firmware installation guide, warning that newer vendor firmware can invalidate this method.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:55.713905+00:00",
          "readme_blob_sha": "78331b917743558633207246f3f0e5e78deeaaf6",
          "content_sha256": "bda2087684a83569cfea1d1151a01633622301df958148c55ec0bc5093a14b9e"
        }
      ],
      "maintenance": {
        "status": "stale",
        "github_archived": false,
        "last_push_at": "2024-11-25T06:53:53Z",
        "checked_at": "2026-10-20T10:06:55.713905+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:06:55.713905+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "method-dependent",
        "soldering": "method-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Read the exact model's FAQ and original firmware backup method first. Do not assume T20L and T20 are identical.",
        "recovery_url": null
      },
      "keywords": [
        "Xiaomi Dafang Hacks",
        "camera",
        "摄像头"
      ],
      "checked_at": "2026-10-20T10:06:55.713905+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Add local video streams and extended control to selected old cameras.",
      "translation": {
        "source_sha256": "8ac177bb42b76f9f78c54dfb78aafc936b56b2cd4d2c6bab2afd12bb938fa85f",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "thingino",
      "name": "Thingino",
      "category": "camera",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "thingino",
      "device_scope": "Ingenic IP cameras in the project's support list.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "camera"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Choose the build by SoC, sensor and exact configuration."
      ],
      "repo_url": "https://github.com/themactep/thingino-firmware",
      "github_snapshot_url": "https://github.com/themactep/thingino-firmware",
      "website_url": "https://thingino.com",
      "tutorial_url": "https://github.com/themactep/thingino-firmware/blob/master/README.md",
      "compatibility_url": "https://github.com/themactep/thingino-firmware/blob/master/docs/hardware/supported-hardware.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links supported-hardware files and build instructions and distinguishes stable/development branches.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/themactep/thingino-firmware/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:58.423901+00:00",
          "readme_blob_sha": "05b1bf83e705764192dfd88fd76086af3d5df9e6",
          "content_sha256": "debd0ef3af16f6e2964cf6f9cf35075b38212a29244899c688c2439d41d66bf6"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T04:23:36Z",
        "checked_at": "2026-10-20T10:06:58.423901+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/themactep/thingino-firmware/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:06:58.423901+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Needs original flash backups and board-specific recovery instructions. No camera firmware was written during this review.",
        "recovery_url": null
      },
      "keywords": [
        "Thingino",
        "camera",
        "摄像头"
      ],
      "checked_at": "2026-10-20T10:06:58.423901+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "firmware-2026-10-04",
        "url": "https://github.com/themactep/thingino-firmware/releases/tag/firmware-2026-10-04",
        "published_at": "2026-10-04T16:54:35Z"
      },
      "summary": "Extend local use of supported cameras with lightweight open firmware.",
      "translation": {
        "source_sha256": "5e0941a2d5fa6be9b39f1908a8640321973cd2edbd944d2770bf29a2ce415e1e",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "frigate",
      "name": "Frigate",
      "category": "camera",
      "ai_relation": "native",
      "entry_type": "platform",
      "family": "frigate",
      "device_scope": "Old IP cameras providing supported streams, plus a server meeting requirements.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "video-analysis"
      ],
      "method": "Install analysis server",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "AI runs on the server. It cannot restore a broken camera or one unable to output a stream."
      ],
      "repo_url": "https://github.com/blakeblackshear/frigate",
      "github_snapshot_url": "https://github.com/blakeblackshear/frigate",
      "website_url": "https://frigate.video",
      "tutorial_url": "https://docs.frigate.video/",
      "compatibility_url": "https://github.com/blakeblackshear/frigate/blob/dev/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies local IP-camera object detection, recording and detector documentation. The reused component is the existing video source.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/blakeblackshear/frigate/blob/dev/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:58.761741+00:00",
          "readme_blob_sha": "1fb158b19161962d49473aa6659356e684434121",
          "content_sha256": "d7872d9c4ca070331d0008bbb1111d931e119a00a8ed0992fa4393a5de84135b"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T06:19:47Z",
        "checked_at": "2026-10-20T10:06:58.761741+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT",
        "url": "https://github.com/blakeblackshear/frigate/blob/dev/LICENSE",
        "checked_at": "2026-10-20T10:06:58.761741+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no-for-core-detection"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Video-processing host",
          "Optional AI accelerator",
          "Recording disk"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Stopping the service does not replace camera firmware. Save required recordings and configuration before deleting the service.",
        "recovery_url": null
      },
      "keywords": [
        "Frigate",
        "camera",
        "视频分析"
      ],
      "checked_at": "2026-10-20T10:06:58.761741+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v0.18.2",
        "url": "https://github.com/blakeblackshear/frigate/releases/tag/v0.18.2",
        "published_at": "2026-10-15T22:41:47Z"
      },
      "summary": "Connect existing cameras to local object detection and recording.",
      "translation": {
        "source_sha256": "b281ec8edf9d64cd787951b2d445c569fbc5c6bc94de85a4041ddd5dbf11bab4",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "squeezelite",
      "name": "Squeezelite",
      "category": "audio",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "squeezelite",
      "device_scope": "Old PC / Linux single-board computer able to run a supported-platform binary.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "music"
      ],
      "method": "Install player",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "A software player does not guarantee restoration of cloud features on every physical Squeezebox."
      ],
      "repo_url": "https://github.com/ralph-irving/squeezelite",
      "github_snapshot_url": "https://github.com/ralph-irving/squeezelite",
      "website_url": "https://sourceforge.net/projects/lmsclients/files/squeezelite/",
      "tutorial_url": "https://ralph-irving.github.io/squeezelite.html",
      "compatibility_url": "https://github.com/ralph-irving/squeezelite/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The repository provides the player implementation and official manpage. It needs a server such as Lyrion.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/ralph-irving/squeezelite/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:58.863061+00:00",
          "readme_blob_sha": "bcaedfa92a3bd1ebc89facf1c4e5b0bf4f19e785",
          "content_sha256": "c91962a0a1980fedf50ef87fe9e8a73d29eccfad26ac02834412bb203e1ac1c7"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-10T13:33:46Z",
        "checked_at": "2026-10-20T10:06:58.863061+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0-or-later + OpenSSL exception / other components",
        "url": "https://github.com/ralph-irving/squeezelite/blob/master/LICENSE.txt",
        "checked_at": "2026-10-20T10:06:58.863061+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-music-services"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Stop or uninstall the player to end this use.",
        "recovery_url": null
      },
      "keywords": [
        "Squeezelite",
        "audio",
        "音乐播放"
      ],
      "checked_at": "2026-10-20T10:06:58.863061+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Turn an old host into a lightweight network audio player for Squeezebox-compatible servers.",
      "translation": {
        "source_sha256": "188883b1edf7416f07ce736ddb7bfedd984aab20b51112e01024cbffe55686a7",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "lyrion",
      "name": "Lyrion Music Server",
      "category": "audio",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "lyrion",
      "device_scope": "Squeezebox ecosystem players and supported DIY players.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "music"
      ],
      "method": "Cloud service replacement",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Online music depends on individual plugins and service policies. Not every historical feature is guaranteed."
      ],
      "repo_url": "https://github.com/LMS-Community/slimserver",
      "github_snapshot_url": "https://github.com/LMS-Community/slimserver",
      "website_url": "https://lyrion.org",
      "tutorial_url": "https://lyrion.org/",
      "compatibility_url": "https://github.com/LMS-Community/slimserver/blob/public/9.2/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README and project description target Squeezebox and compatible players and provide official deployment documentation.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/LMS-Community/slimserver/blob/public/9.2/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:06:59.272416+00:00",
          "readme_blob_sha": "a4ea2e244b5cdaefc9565b5eade8dd3d930cba6d",
          "content_sha256": "81b033616e12cd17965b8c06ff556d61bcda78cc856d2621bcf5fe2da09d1ae3"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T09:13:17Z",
        "checked_at": "2026-10-20T10:06:59.272416+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Mixed: Perl GPL-2.0; firmware/assets have separate terms",
        "url": "https://github.com/LMS-Community/slimserver/blob/public/9.2/License.txt",
        "checked_at": "2026-10-20T10:06:59.272416+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-music-services"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Always-on host",
          "Optional storage"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Back up music-library indexes and configuration. The old vendor cloud may not be recoverable.",
        "recovery_url": null
      },
      "keywords": [
        "Lyrion Music Server",
        "audio",
        "音乐播放"
      ],
      "checked_at": "2026-10-20T10:06:59.272416+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Continue using Squeezebox devices and compatible players with a local music server.",
      "translation": {
        "source_sha256": "16bfc303417652cafdf9d1d2a536f56f42ba26663daadeadc0583c03941e3380",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "rockbox",
      "name": "Rockbox",
      "category": "audio",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "rockbox",
      "device_scope": "iPod, SanDisk and other players in the Rockbox support list.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "music"
      ],
      "method": "Replace player firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Distinguish stable, development and unusable ports. Not all iPods are supported."
      ],
      "repo_url": "https://github.com/Rockbox/rockbox",
      "github_snapshot_url": "https://github.com/Rockbox/rockbox",
      "website_url": "https://git.rockbox.org/?p=rockbox.git;a=summary",
      "tutorial_url": "https://www.rockbox.org/",
      "compatibility_url": "https://github.com/Rockbox/rockbox/blob/master/docs/README",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "Build steps were readable in the official source mirror. Use the Rockbox website's categories for model support.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/Rockbox/rockbox/blob/master/docs/README",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:01.880707+00:00",
          "readme_blob_sha": "665078545f85027c548664f938739004541e10f5",
          "content_sha256": "6a6e5fb16c1dc9761ee48f000b0924295074392805ca23fc62cc39d20601b3fc"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T02:25:49Z",
        "checked_at": "2026-10-20T10:07:01.880707+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:07:01.880707+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Uninstall the bootloader following the official manual for that player. Simply deleting audio files is not enough.",
        "recovery_url": null
      },
      "keywords": [
        "Rockbox",
        "audio",
        "音乐播放"
      ],
      "checked_at": "2026-10-20T10:07:01.880707+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Provide open firmware and additional format support on compatible old music players.",
      "translation": {
        "source_sha256": "38fb1ed1d470a0cb54a04ca93a9eab3b8f29a897e571f7d2df27a0b4b4cb8235",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "spotify-ipod",
      "name": "Retro iPod Spotify client",
      "category": "audio",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "spotify-ipod",
      "device_scope": "The author's fourth-generation iPod design with Raspberry Pi and other replacement hardware.",
      "model_examples": [
        "iPod 4th generation (2004) + Raspberry Pi Zero W"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "music"
      ],
      "method": "Replace internal hardware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "A custom hardware project. Historical Spotify APIs and dependencies need fresh verification."
      ],
      "repo_url": "https://github.com/dupontgu/retro-ipod-spotify-client",
      "github_snapshot_url": "https://github.com/dupontgu/retro-ipod-spotify-client",
      "website_url": null,
      "tutorial_url": "https://hackaday.io/project/177034-spot-spotify-in-a-4th-gen-ipod-2004",
      "compatibility_url": "https://github.com/dupontgu/retro-ipod-spotify-client/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies a 2004 iPod and Pi Zero W and links the original author's Hackaday project and installation steps. Current cloud API compatibility was not hardware-tested.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/dupontgu/retro-ipod-spotify-client/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:04.954654+00:00",
          "readme_blob_sha": "d3498a453468442542ca15da8730fbd3f88d1d80",
          "content_sha256": "dfe6bd71556f3c066ca2e48fce91bf08d72310da1f6cdc455555272a238533af"
        }
      ],
      "maintenance": {
        "status": "stale",
        "github_archived": false,
        "last_push_at": "2022-03-25T16:58:52Z",
        "checked_at": "2026-10-20T10:07:04.954654+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Apache-2.0",
        "url": "https://github.com/dupontgu/retro-ipod-spotify-client/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:07:04.954654+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "yes",
        "soldering": "yes",
        "cloud_api": "required-spotify"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Pi Zero W",
          "Display/audio/power components",
          "Tools",
          "Music service"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Save original parts. Cutting, soldering and power modifications may prevent lossless rollback.",
        "recovery_url": null
      },
      "keywords": [
        "Retro iPod Spotify client",
        "audio",
        "音乐播放"
      ],
      "checked_at": "2026-10-20T10:07:04.954654+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Retain an old iPod's interaction and appearance while replacing its internals for network music.",
      "translation": {
        "source_sha256": "7571183c30bd2cbf5c37d0095d7684e752a4d772022384ff46487dc75ec6973c",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "gadgetbridge",
      "name": "Gadgetbridge",
      "category": "wearable",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "gadgetbridge",
      "device_scope": "Bands/watches in the official support matrix and an Android phone.",
      "model_examples": [
        "Pebble",
        "Mi Band",
        "Amazfit Bip 等；以当前 gadgets 表为准"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "offline-control"
      ],
      "method": "Replace phone companion app",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "GitHub may be a mirror. Support level, authentication keys and available functions vary by device."
      ],
      "repo_url": "https://codeberg.org/Freeyourgadget/Gadgetbridge",
      "github_snapshot_url": "https://github.com/Freeyourgadget/Gadgetbridge",
      "website_url": "https://gadgetbridge.org/",
      "tutorial_url": "https://github.com/Freeyourgadget/Gadgetbridge/blob/master/README.md",
      "compatibility_url": "https://gadgetbridge.org/gadgets/",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The GitHub README explicitly points to Codeberg and the device matrix. The archived repository is a mirror, not evidence that the entire project stopped development.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/Freeyourgadget/Gadgetbridge/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:05.069774+00:00",
          "readme_blob_sha": "a4d99b2cdf58aa8f910e2d134e8dea4c14229b01",
          "content_sha256": "df8b15adaa257ee3ce23713dce5ec24ce8ee5bc12261181310d508be7d5917d0"
        }
      ],
      "maintenance": {
        "status": "moved",
        "github_archived": true,
        "last_push_at": "2024-12-23T17:24:07Z",
        "checked_at": "2026-10-20T10:07:05.069774+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "AGPL-3.0 (GPL-3.0 / MIT file exceptions)",
        "url": "https://github.com/Freeyourgadget/Gadgetbridge/blob/master/LICENSE",
        "checked_at": "2026-10-20T10:07:05.069774+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no-for-supported-workflows"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Back up local data before returning to the original companion app. Re-pairing may affect watch storage.",
        "recovery_url": null
      },
      "keywords": [
        "Gadgetbridge",
        "wearable",
        "离线控制"
      ],
      "checked_at": "2026-10-20T10:07:05.069774+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Connect selected wearables through a local open-source phone app, reducing vendor-cloud dependence.",
      "translation": {
        "source_sha256": "2dde7544990d383d6ef9f03cccc1267b9c36862abd8b46b20fa43fd36608b18e",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "infinitime",
      "name": "InfiniTime",
      "category": "wearable",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "infinitime",
      "device_scope": "PineTime smartwatch.",
      "model_examples": [
        "PineTime"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "os-life-extension"
      ],
      "method": "Replace firmware",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Only for the specified hardware. It cannot be used directly on ordinary commercial watches."
      ],
      "repo_url": "https://github.com/InfiniTimeOrg/InfiniTime",
      "github_snapshot_url": "https://github.com/InfiniTimeOrg/InfiniTime",
      "website_url": null,
      "tutorial_url": "https://github.com/InfiniTimeOrg/InfiniTime/blob/main/doc/gettingStarted/gettingStarted-1.0.md",
      "compatibility_url": "https://github.com/InfiniTimeOrg/InfiniTime/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links getting-started, update, bootloader and SWD/OpenOCD documentation.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/InfiniTimeOrg/InfiniTime/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:05.590286+00:00",
          "readme_blob_sha": "68d8779d0e122df28a2dd609117daa0282c642fa",
          "content_sha256": "9019bf2b20cb9deda116b8ffd21139612bf5b859a6e6da3c42a38aaeade441a1"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-18T13:49:28Z",
        "checked_at": "2026-10-20T10:07:05.590286+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-3.0",
        "url": "https://github.com/InfiniTimeOrg/InfiniTime/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:07:05.590286+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "recovery-dependent",
        "soldering": "recovery-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Firmware updates and bootloader recovery are different layers. Deep recovery may need SWD.",
        "recovery_url": null
      },
      "keywords": [
        "InfiniTime",
        "wearable",
        "系统延寿"
      ],
      "checked_at": "2026-10-20T10:07:05.590286+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "1.16.1",
        "url": "https://github.com/InfiniTimeOrg/InfiniTime/releases/tag/1.16.1",
        "published_at": "2026-07-05T17:03:57Z"
      },
      "summary": "Provide open watch firmware and continued feature development for an existing PineTime.",
      "translation": {
        "source_sha256": "da937c4f8f88a09ad2ffc4c46164f1b3964567464080da524ae36a068b16886d",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "asteroidos",
      "name": "AsteroidOS",
      "category": "wearable",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "asteroidos",
      "device_scope": "Android Wear watches listed in the AsteroidOS device table.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "os-life-extension"
      ],
      "method": "Replace OS",
      "difficulty": "high",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check Bluetooth, sensors, battery and temporary-boot support for the exact model."
      ],
      "repo_url": "https://github.com/AsteroidOS/asteroid",
      "github_snapshot_url": "https://github.com/AsteroidOS/asteroid",
      "website_url": "http://asteroidos.org",
      "tutorial_url": "https://asteroidos.org/wiki/documentation/",
      "compatibility_url": "https://github.com/AsteroidOS/asteroid/blob/2.0/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README links build and official documentation. Use per-model tables for supported devices and feature maturity.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/AsteroidOS/asteroid/blob/2.0/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:07.900542+00:00",
          "readme_blob_sha": "00028311e055609010da31019681be8f24757b77",
          "content_sha256": "d79ace2aab91b75254885ef30687caf5e01eac785802ab3b00ea2f201772590f"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-09-09T10:41:01Z",
        "checked_at": "2026-10-20T10:07:07.900542+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "GPL-2.0",
        "url": "https://github.com/AsteroidOS/asteroid/blob/2.0/LICENSE",
        "checked_at": "2026-10-20T10:07:07.900542+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "model-dependent",
        "soldering": "model-dependent",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "possible",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "AsteroidOS",
        "wearable",
        "系统延寿"
      ],
      "checked_at": "2026-10-20T10:07:07.900542+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Install an alternative Linux OS on selected old Wear watches.",
      "translation": {
        "source_sha256": "21d683f5d48be52aeb02eda96057f83f35b24009c83849c1c2d3e3b46118fecc",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "batocera",
      "name": "Batocera.linux",
      "category": "gaming",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "batocera",
      "device_scope": "PCs / single-board computers / handhelds with official images.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "retro-gaming"
      ],
      "method": "External boot or OS replacement",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Performance is hardware-limited. The OS does not grant copyright permissions for game ROMs."
      ],
      "repo_url": "https://github.com/batocera-linux/batocera.linux",
      "github_snapshot_url": "https://github.com/batocera-linux/batocera.linux",
      "website_url": "https://batocera.org",
      "tutorial_url": "https://wiki.batocera.org/",
      "compatibility_url": "https://github.com/batocera-linux/batocera.linux/blob/master/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README explicitly describes USB/SD boot and repurposing existing computers as consoles, with compatibility and download links.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/batocera-linux/batocera.linux/blob/master/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:10.940719+00:00",
          "readme_blob_sha": "06ab9e8eb9da152b8d44f52c6924f94d93c3433d",
          "content_sha256": "745da39154dc47b7cf199e073792e157ffe64331d66ca83291b26a856f516fe7"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T07:12:11Z",
        "checked_at": "2026-10-20T10:07:10.940719+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": "https://github.com/batocera-linux/batocera.linux/blob/master/COPYING",
        "checked_at": "2026-10-20T10:07:10.940719+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "USB/SD media",
          "Compatible controller"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Remove external boot media to return to the original OS. Back up first if installing on the internal disk.",
        "recovery_url": null
      },
      "keywords": [
        "Batocera.linux",
        "gaming",
        "复古游戏"
      ],
      "checked_at": "2026-10-20T10:07:10.940719+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "uboot-rockpro64",
        "url": "https://github.com/batocera-linux/batocera.linux/releases/tag/uboot-rockpro64",
        "published_at": "2021-03-26T19:52:27Z"
      },
      "summary": "Turn old computers or supported devices into dedicated retro-gaming systems.",
      "translation": {
        "source_sha256": "6ff628eabaaa05dfdf1156b824d61132847b10e2d4f4c4ad900b3adaae3d0cdf",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "lakka",
      "name": "Lakka",
      "category": "gaming",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "lakka",
      "device_scope": "PCs / single-board computers with official Lakka images.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "retro-gaming"
      ],
      "method": "External boot or OS replacement",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Check GPU, audio and boot compatibility. Obtain game content lawfully and separately."
      ],
      "repo_url": "https://github.com/libretro/Lakka-LibreELEC",
      "github_snapshot_url": "https://github.com/libretro/Lakka-LibreELEC",
      "website_url": "https://www.lakka.tv",
      "tutorial_url": "https://www.lakka.tv/",
      "compatibility_url": "https://github.com/libretro/Lakka-LibreELEC/blob/Lakka-v6.1/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README specifies reuse of low-performance computers, installation websites and PS3/Xbox360 controller support.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/libretro/Lakka-LibreELEC/blob/Lakka-v6.1/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:11.233127+00:00",
          "readme_blob_sha": "74c37015b6171ac5d2e0b7832653176fbb48aa09",
          "content_sha256": "de0aa6b0063086b242edab3bf709fa77ff7bb30a5bcd1b0dd3a20bbfdc7243ce"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-08-26T13:30:53Z",
        "checked_at": "2026-10-20T10:07:11.233127+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "UNKNOWN",
        "url": null,
        "checked_at": "2026-10-20T10:07:11.233127+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "Lakka",
        "gaming",
        "复古游戏"
      ],
      "checked_at": "2026-10-20T10:07:11.233127+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "v6.1",
        "url": "https://github.com/libretro/Lakka-LibreELEC/releases/tag/v6.1",
        "published_at": "2026-02-21T07:27:29Z"
      },
      "summary": "Reuse old PCs and supported single-board computers with a lightweight RetroArch system.",
      "translation": {
        "source_sha256": "1e53cfba630e6e19bb203cfecdccd06a4b87ae34c3fc70d8b0e6520c00bf5a16",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "bazzite",
      "name": "Bazzite",
      "category": "gaming",
      "ai_relation": "infrastructure",
      "entry_type": "platform",
      "family": "bazzite",
      "device_scope": "PCs meeting current hardware requirements and supported handhelds.",
      "model_examples": [],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "gaming-os"
      ],
      "method": "Replace OS",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "Not a universal solution for very old computers. GPU support and image type are firm prerequisites."
      ],
      "repo_url": "https://github.com/ublue-os/bazzite",
      "github_snapshot_url": "https://github.com/ublue-os/bazzite",
      "website_url": "https://bazzite.gg",
      "tutorial_url": "https://docs.bazzite.gg/",
      "compatibility_url": "https://github.com/ublue-os/bazzite/blob/main/README.md",
      "x_sources": [],
      "evidence": {
        "level": "E1",
        "reason": "The README documents PC/handheld installation and hardware capabilities. Included as a life-extension platform, not proof of support for any ancient GPU.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/ublue-os/bazzite/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:11.366577+00:00",
          "readme_blob_sha": "f57e946975943e9129826c9a460174e62f69efd6",
          "content_sha256": "e6dcfe9a65cb00649a537d090e55adda3623a1e607eff243a2eaf24e1f850c31"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-20T07:25:33Z",
        "checked_at": "2026-10-20T10:07:11.366577+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "Apache-2.0",
        "url": "https://github.com/ublue-os/bazzite/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:07:11.366577+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "optional-game-platforms"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "Check whether the existing device, power supply, storage and connection accessories are sufficient for the exact model."
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "Verify the recovery procedure for the exact model. This catalog has not tested unbricking; back up before making changes.",
        "recovery_url": null
      },
      "keywords": [
        "Bazzite",
        "gaming",
        "游戏系统"
      ],
      "checked_at": "2026-10-20T10:07:11.366577+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": {
        "tag": "unstable-45.20261020.4",
        "url": "https://github.com/ublue-os/bazzite/releases/tag/unstable-45.20261020.4",
        "published_at": "2026-10-20T07:25:33Z"
      },
      "summary": "Provide a maintainable gaming OS for PCs and handhelds with sufficient remaining performance.",
      "translation": {
        "source_sha256": "1df62784845a9549d6c6fbc838895dc39b860ae19ab630e8d354716c07057918",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    },
    {
      "id": "printer-spl3",
      "name": "HP Laser 1008a macOS driver",
      "category": "peripheral",
      "ai_relation": "assisted",
      "entry_type": "case",
      "family": "printer-spl3",
      "device_scope": "HP Laser 1003/1006/1008 a/w over USB + Apple Silicon macOS 26 (author's test scope).",
      "model_examples": [
        "HP Laser 1003 a/w",
        "HP Laser 1006 a/w",
        "HP Laser 1008 a/w"
      ],
      "firmware_requirement": null,
      "region_requirement": null,
      "compatibility_status": "follow-upstream-matrix",
      "use_cases": [
        "driver-repair"
      ],
      "method": "Install driver",
      "difficulty": "medium",
      "difficulty_basis": "Editorial assessment of installation, firmware, assembly and troubleshooting; not an author-provided score.",
      "limitations": [
        "AI-assisted development needs original author evidence. USB testing does not establish Wi-Fi support."
      ],
      "repo_url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos",
      "github_snapshot_url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos",
      "website_url": null,
      "tutorial_url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos/blob/main/README.md",
      "compatibility_url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos/blob/main/README.md",
      "x_sources": [
        {
          "url": "https://x.com/kuberwastaken/status/2089377982536388964",
          "status": "original-text-read",
          "video_viewed": false,
          "checked_at": "2026-10-20T10:18:44.541033+00:00",
          "note": "作者正文通过浏览器读取；未把浏览量或点赞作为成功证据。"
        },
        {
          "url": "https://x.com/kuberwastaken/status/2089721130127094071",
          "status": "original-text-read",
          "video_viewed": false,
          "checked_at": "2026-10-20T10:18:44.541033+00:00",
          "note": "作者正文通过浏览器读取；未把浏览量或点赞作为成功证据。"
        }
      ],
      "evidence": {
        "level": "E2",
        "reason": "The author's README reports USB testing on Apple Silicon macOS 26 and provides installation, removal and print-pipeline analysis. An author-hosted Claude session supports the AI-assisted-development classification. X access status is recorded separately. The author's original X post and replies were read, confirming their claim of using Claude through repeated trial and error.",
        "hardware_tested_by_catalog": false,
        "independent_reproduction_verified": false
      },
      "sources": [
        {
          "url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos/blob/main/README.md",
          "kind": "upstream-document",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:07:11.888949+00:00",
          "readme_blob_sha": "e6f057a50ef7293158a26b33edf6a302901bceec",
          "content_sha256": "5d8a739bc1b978b9ac4d38222aa186228b0acdecb90735b1f8953be450db861d"
        },
        {
          "url": "https://cdn.kuber.studio/chat/hp-laser-1008a-driver",
          "kind": "author-process",
          "status": "content-reviewed",
          "checked_at": "2026-10-20T10:18:44.541033+00:00"
        }
      ],
      "maintenance": {
        "status": "not-archived",
        "github_archived": false,
        "last_push_at": "2026-10-04T10:39:56Z",
        "checked_at": "2026-10-20T10:07:11.888949+00:00",
        "note": "Unarchived/recent push is not proof a model works; mirror migration is not the end of development."
      },
      "license": {
        "label": "MIT glue + GPL-2.0 SpliX / patches",
        "url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos/blob/main/LICENSE",
        "checked_at": "2026-10-20T10:07:11.888949+00:00",
        "scope": "Root license/README declaration only; firmware, models, brands and third-party components may have different licenses."
      },
      "requirements": {
        "disassembly": "no",
        "soldering": "no",
        "cloud_api": "no-at-runtime"
      },
      "cost": {
        "amount": null,
        "currency": null,
        "status": "UNKNOWN",
        "items": [
          "USB data cable",
          "Compatible Mac"
        ],
        "note": "Not priced; open source does not imply zero hardware, hosting, electricity or cloud cost."
      },
      "risk": {
        "data_loss": "possible",
        "bricking": "workflow-dependent",
        "recovery": "The repository provides uninstall.sh. The README explains reversing changes to ippusbd. Installation requires administrator privileges.",
        "recovery_url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos/blob/main/uninstall.sh"
      },
      "keywords": [
        "HP Laser 1008a macOS driver Claude",
        "旧打印机 AI 驱动",
        "HP Laser 1008a macOS driver",
        "peripheral",
        "驱动修复"
      ],
      "checked_at": "2026-10-20T10:07:11.888949+00:00",
      "editorial_reviewed_at": "2026-10-20T10:18:44.541033+00:00",
      "latest_release": null,
      "summary": "Restore use of selected HP Laser printers without official macOS drivers through the native macOS print path.",
      "translation": {
        "source_sha256": "cec5581399350636cda491e7a87473bcbfdf3c17697e3cd5362e56e6ebfcb022",
        "status": "reviewed",
        "reviewed_at": "2026-10-20",
        "review_scope": "Editorial translation of existing research; no new upstream or hardware verification."
      }
    }
  ],
  "language": "en"
}
