{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/CONTRIBUTING.md",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/.gitmodules",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/Makefile",
    "https://github.com/toniebox-reverse-engineering/teddycloud/tree/78c3b38e36f665d3a5fffe907f73a02725176377/proto",
    "https://github.com/toniebox-reverse-engineering/teddycloud/tree/78c3b38e36f665d3a5fffe907f73a02725176377/contrib/certs",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/dev-sandbox/README.md",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/tests/test_tonies_custom_json_api.py",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/.github/workflows/build_release.yml",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/.github/workflows/publish_docker_matrix_base.yml",
    "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/LICENSE",
    "https://github.com/toniebox-reverse-engineering/teddycloud/releases/tag/tc_v0.7.0",
    "https://tonies-wiki.revvox.de/docs/tools/teddycloud/setup/"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reimplements the Boxine cloud services a Toniebox talks to as a self-hosted C server, so the box can fetch audio, settings and over-the-air content locally while the owner controls what reaches the manufacturer. It serves and caches tonie audio, converts other audio into the box’s TAF format, can pass requests through to the original cloud, and adds a web interface, MQTT and Home Assistant integration. Protobuf definitions in the repository describe the box’s freshness-check, RTNL log and TAF header messages.",
  "description_zh": "以可自托管的 C 服务器重新实现 Toniebox 所连接的 Boxine 云服务，使盒子能在本地获取音频、设置和无线下发内容，同时由用户控制哪些数据发往厂商。它可提供并缓存 tonie 音频，把其他音频转换为盒子使用的 TAF 格式，可将请求透传到原云端，并提供网页界面、MQTT 及 Home Assistant 集成。仓库中的 protobuf 定义描述了盒子的 freshness-check、RTNL 日志和 TAF 头部报文。",
  "entry_url": "https://awesomerea.org/resources/teddycloud-toniebox-server-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/teddycloud-toniebox-server-case/",
  "evidence_url": "https://github.com/toniebox-reverse-engineering/teddycloud/blob/78c3b38e36f665d3a5fffe907f73a02725176377/README.md",
  "group": "cases",
  "id": "teddycloud-toniebox-server-case",
  "json_url": "https://awesomerea.org/resources/teddycloud-toniebox-server-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/teddycloud-toniebox-server-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/teddycloud-toniebox-server-case/index.md",
  "name": "TeddyCloud: a self-hosted replacement for the Toniebox cloud",
  "name_zh": "TeddyCloud：可自托管的 Toniebox 云端替代服务器",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "Reviewed at the stable master head of 2026-08-25, the v0.7.0 merge; release tc_v0.7.0 was tagged the same day, and active development continues on the develop branch. The project’s setup guide covers Toniebox 1 boxes with CC3200, CC3235 or ESP32 chips, and the README lists Toniebox 2 support as planned.",
    "Setup is invasive and specific to each box: the project guide has owners dump their own box’s client certificates, flash a replacement CA into the box and redirect its DNS, and the server can extract or inject certificates in an ESP32 firmware dump. The repository ships no box certificates, firmware or tonie audio (those directories are empty placeholders). The dev-sandbox’s pre-generated certificates are self-signed and meant only for local testing.",
    "Builds with a hand-written Makefile, protoc-c and a C toolchain, plus submodules for CycloneTCP/SSL/Crypto, cJSON, Opus, Ogg, the teddycloud_web frontend and emsdk; Linux debug builds enable AddressSanitizer and UBSan, and Docker is the recommended path on macOS. Release tc_v0.7.0 attaches an amd64 zip from the Windows/Linux release workflow, and Debian, Ubuntu and Alpine Docker images are published for several platforms. Stream conversion uses ffmpeg.",
    "Python API tests for the custom-tonie JSON endpoints and a WASM TAF-encoder test run through Makefile targets; the reviewed workflows build and publish without running them. A dev-sandbox serves mock tonies, box and TAF data. Behavior with real boxes and the Boxine cloud remains project-reported.",
    "GPL-2.0 (LICENSE); the vendored Cyclone stack, Opus, Ogg, cJSON and FatFs keep their own terms. Tonie audio, box firmware and Boxine’s services keep their own rights."
  ],
  "requirements_zh": [
    "审阅对象为 2026-08-25 的稳定版 master 最新提交，即 v0.7.0 合并提交；tc_v0.7.0 发布于同日打标签，日常开发在 develop 分支进行。项目的安装指南覆盖使用 CC3200、CC3235 或 ESP32 芯片的 Toniebox 1，README 将 Toniebox 2 支持列为计划中。",
    "安装过程具有侵入性，且每台盒子各不相同：项目指南要求用户导出自己盒子的客户端证书、向盒子刷入替代 CA 并重定向其 DNS；服务器还可以在 ESP32 固件转储中提取或注入证书。仓库不提供任何盒子证书、固件或 tonie 音频（相应目录只是空占位）。dev-sandbox 中预先生成的证书为自签名证书，仅用于本地测试。",
    "构建使用手写的 Makefile、protoc-c 和 C 工具链，并需要 CycloneTCP/SSL/Crypto、cJSON、Opus、Ogg、teddycloud_web 前端及 emsdk 等子模块；Linux 调试构建默认启用 AddressSanitizer 和 UBSan，在 macOS 上推荐使用 Docker 构建。tc_v0.7.0 版附带由 Windows/Linux 发布工作流生成的 amd64 压缩包，并为多个平台发布 Debian、Ubuntu 和 Alpine Docker 镜像。音频流转换使用 ffmpeg。",
    "自定义 tonie JSON 接口的 Python API 测试和 WASM TAF 编码器测试通过 Makefile 目标运行；所审阅的工作流只构建并发布，不运行这些测试。dev-sandbox 提供模拟的 tonie、盒子和 TAF 数据。与真实盒子及 Boxine 云端配合的表现仍属项目报告。",
    "采用 GPL-2.0（LICENSE）；内置的 Cyclone 协议栈、Opus、Ogg、cJSON 和 FatFs 保留各自条款。tonie 音频、盒子固件和 Boxine 的服务保留各自权利。"
  ],
  "targets": [
    "firmware",
    "protocol"
  ],
  "url": "https://github.com/toniebox-reverse-engineering/teddycloud",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
