{
  "v": 1,
  "type": "mirror.download-manifest",
  "product": "mirror-bander",
  "version": "1.0.0",
  "node_runtime": "v24.16.0",
  "bundle": {
    "file": "mirror-bander.bundle.js",
    "href": "/mirror-bander.bundle.js",
    "bytes": 725237,
    "sha256": "0b0e52e0ce94457a92a25daa433f0e8466ee6faf6582502dd18f05379391f0c8",
    "available": true,
    "requires": "Node 20 or newer",
    "run": "node mirror-bander.bundle.js band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
    "verify_windows": "certutil -hashfile mirror-bander.bundle.js SHA256",
    "verify_unix": "shasum -a 256 mirror-bander.bundle.js",
    "why": "The same kernels, byte for byte, in one readable file. It runs identically on Windows, macOS and Linux, and it is what a security team should actually read - no dependency tree, no node_modules, no install step, greppable end to end.",
    "not_an_exe": "This is the small, readable JavaScript build - 708 KB, the same kernels byte for byte. It is not the only option: Windows x64 and macOS Apple silicon are hosted directly (brotli-compressed under the host's file limit, inflated by your browser to the full binary), and macOS Intel and Linux x64 are reproducible from source with one command. Pick whichever your security team prefers to audit.",
    "launchers": [
      {
        "os": "Windows",
        "file": "mirror-bander.cmd",
        "href": "/mirror-bander.cmd",
        "run": "mirror-bander band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
        "note": "Put it next to the bundle and run it like a normal program - no need to type 'node' or the filename."
      },
      {
        "os": "macOS / Linux",
        "file": "mirror-bander.sh",
        "href": "/mirror-bander.sh",
        "run": "chmod +x mirror-bander.sh && ./mirror-bander.sh band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
        "note": "Same thing for a POSIX shell. It execs the bundle next to it and passes your arguments through."
      }
    ]
  },
  "platforms": [
    {
      "id": "win-x64",
      "os": "Windows",
      "arch": "x64",
      "file": "mirror-bander-win-x64.exe",
      "run": "mirror-bander.exe band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
      "verify": "certutil -hashfile mirror-bander-win-x64.exe SHA256",
      "available": true,
      "bytes": 93130752,
      "sha256": "db7f720876631c4f5adfb9adca515f2b8e50624d43ea2de772a0b8b075a85469",
      "hostable_on_pages": true,
      "stored_bytes": 24055852,
      "stored_encoding": "br",
      "href": "/mirror-bander-win-x64.exe",
      "note": "Hosted brotli-compressed (22.9 MiB stored) and inflated by your browser to the full 88.8 MiB executable on download. Its sha256 is below; check the file you receive.",
      "build_command": "node bander/build-bander.js --target win-x64 --download"
    },
    {
      "id": "darwin-arm64",
      "os": "macOS",
      "arch": "Apple silicon",
      "file": "mirror-bander-darwin-arm64",
      "run": "./mirror-bander band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
      "verify": "shasum -a 256 mirror-bander-darwin-arm64",
      "available": true,
      "bytes": 120126348,
      "sha256": "897a0595b79404e03c03f200ebe0004077568c12b9ed7c8e76e9dfa784ae49cc",
      "hostable_on_pages": true,
      "stored_bytes": 25518559,
      "stored_encoding": "br",
      "href": "/mirror-bander-darwin-arm64",
      "note": "Hosted brotli-compressed (24.3 MiB stored) and inflated by your browser to the full 114.6 MiB executable on download. Its sha256 is below; check the file you receive.",
      "build_command": "node bander/build-bander.js --target darwin-arm64 --download"
    },
    {
      "id": "darwin-x64",
      "os": "macOS",
      "arch": "Intel",
      "file": "mirror-bander-darwin-x64",
      "run": "./mirror-bander band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
      "verify": "shasum -a 256 mirror-bander-darwin-x64",
      "available": true,
      "bytes": 122429388,
      "sha256": "e1a416cad856bfcf9b9234c5e080920aa1383490c212521908082e2ea9526349",
      "hostable_on_pages": false,
      "stored_bytes": null,
      "stored_encoding": null,
      "href": null,
      "note": null,
      "build_command": "node bander/build-bander.js --target darwin-x64 --download"
    },
    {
      "id": "linux-x64",
      "os": "Linux",
      "arch": "x64",
      "file": "mirror-bander-linux-x64",
      "run": "./mirror-bander band --in legs.csv --out batch.json --edges 50,100,150,200 --secret-file secret.txt",
      "verify": "sha256sum mirror-bander-linux-x64",
      "available": true,
      "bytes": 124259520,
      "sha256": "3c12d9a7f41a379d13aee7d6db6ef9b2a199d4892e4a787c4a0fab0eadd6f7c3",
      "hostable_on_pages": false,
      "stored_bytes": null,
      "stored_encoding": null,
      "href": null,
      "note": null,
      "build_command": "node bander/build-bander.js --target linux-x64 --download"
    }
  ],
  "hosting": {
    "pages_max_bytes": 26214400,
    "native_binaries_hosted": true,
    "hosted_ids": [
      "win-x64",
      "darwin-arm64"
    ],
    "build_from_source_ids": [
      "darwin-x64",
      "linux-x64"
    ],
    "why": "Hosted directly, brotli-compressed under this host's 25 MiB per-file limit and inflated by your browser on download: Windows x64 and macOS Apple silicon. Still too large compressed, so build-from-source: macOS Intel and Linux x64 - the same code, reproducible in one command against a checksum-verified runtime.",
    "to_host_the_rest": "Enable R2 in the Cloudflare dashboard and macOS Intel and Linux x64 can be uploaded uncompressed as direct links too."
  },
  "signing": {
    "signed": false,
    "warning": "These binaries are NOT code-signed. Windows SmartScreen and macOS Gatekeeper will block them on first run, and single-file Node builds commonly trip antivirus heuristics. Verify the sha256 below before running anything, and expect to clear the OS warning by hand. Code signing needs a certificate the publisher has to buy; until then, the hash is the assurance - not the operating system's silence."
  },
  "note": "Every hash here is computed from the bytes on disk by bander/gen-download-manifest.js. None is typed by hand. A published sha256 is the bander identity: it is what a counterparty pins and what `mirror-bander attest` signs."
}