{
  "schema": "dawnvpn-agent-install/1",
  "generated": "2026-10-28",
  "safety": {
    "allowed_domains": ["tinystone.us", "www.tinystone.us", "client.tinystone.us", "apps.apple.com"],
    "verify_sha256": true,
    "hash_sources": {
      "windows_and_links": "https://client.tinystone.us/api/public/win/meta",
      "router_gw": "https://client.tinystone.us/api/public/gw/meta",
      "manifest": "https://www.tinystone.us/downloads/manifest.json"
    },
    "ask_human_before": ["flashing firmware", "rooting a device", "changing router or network settings", "installing a TODO item"],
    "credentials": "User types email/password into the app; never persist them."
  },
  "platforms": {
    "windows": {
      "version": "1.1.22",
      "download": "https://client.tinystone.us/api/public/win/latest?kind=setup",
      "alt_download": "https://tinystone.us/download/windows/DawnVPN-Setup.exe",
      "sha256_from": "win/meta builds.setup.sha256",
      "install": "Run installer GUI (UAC). Silent flags: TODO",
      "verify": "App shows connected; public IP changed",
      "uninstall": "Settings > Apps > DawnVPN > Uninstall"
    },
    "android": {
      "version": "1.2.2",
      "download": "https://tinystone.us/download/android/DawnVPN.apk",
      "alt_download": "https://www.tinystone.us/downloads/latest/android/apk",
      "sha256_from": "manifest products[id=android].files[0].sha256",
      "install": "adb install -r DawnVPN.apk",
      "package_name": "TODO",
      "android_tv": {"status": "pending", "note": "Same APK; wait for 1.2.3 (1.2.2 has TV remote issues)"}
    },
    "mifi": {
      "device": "DawnVPN MiFi M3A (arm64-v8a)",
      "install": "Via the Windows DawnVPN setup tool over USB (steps TODO)",
      "root_helper": "https://www.tinystone.us/downloads/latest/m3a-su/su",
      "sha256_from": "manifest products[id=m3a-su]",
      "mifi_apk_download": "TODO"
    },
    "router": {
      "recommended": "Cudy TR3000 256MB v1",
      "base_url": "https://tinystone.us/download/router/{model}/pack/20261028-ffd8045b/",
      "packs": [
        {"model": "tr3000", "openwrt": "24.10.5", "pkg": "opkg", "file": "quicvpn-tr3000-openwrt-24.10.5-20261028-ffd8045b.tar.gz", "sha256": "abd881f3b529c924fe0a504e2f78d5af9d21860d6586fee3f636a27da7ba74ae"},
        {"model": "tr3000", "openwrt": "25.12.6", "pkg": "apk", "file": "quicvpn-tr3000-openwrt-25.12.6-20261028-ffd8045b.tar.gz", "sha256": "7821c6ddd36e54d867eae7a5901f6e4df304e3949c2af109652dba3432325a7f"},
        {"model": "ac2100", "openwrt": "23.05.5", "pkg": "opkg", "file": "quicvpn-ac2100-openwrt-23.05.5-20261028-ffd8045b.tar.gz", "sha256": "f65bf0ed245c25282b2ca29f2a84b2301e192562abd7530e30b43aabc65e4fb3"}
      ],
      "sha256_file": "<file>.sha256 next to each pack",
      "firmware": "manifest products[id=tr3000] (ask human before flashing)",
      "steps": ["ask human", "identify board/uname -m/openwrt_release", "download+sha256sum -c", "tar xzf", "scp -O -r <dir> root@192.168.8.1:/tmp/qvpack", "copy files per MANIFEST.json", "sh /tmp/install_quicvpn.sh -> INSTALL_*_DONE"],
      "verify": "curl -s http://127.0.0.1/api/discover on router; admin page http://192.168.8.1/",
      "uninstall": "TODO"
    },
    "linux": {
      "status": "TODO: no published binary (/api/public/linux/meta 404)",
      "component": "quicvpn-linux-gw (CentOS/RHEL LAN gateway)",
      "install_from_source": ["cargo build -p quicvpn-linux-gw --release", "bash deploy/linux-gw/install-linux-gw.sh"],
      "web_ui": "http://HOST:8088/",
      "service": "quicvpn-linux-gw"
    },
    "apple": {
      "ios": "https://apps.apple.com/app/id1518181400",
      "macos": {"url": "https://apps.apple.com/app/id6816577177", "note": "not in China storefront"},
      "tvos": "https://apps.apple.com/app/id6816577135"
    }
  }
}
