The on-prem bander

The only component that ever sees a raw value.

It runs inside your institution, next to the trade-finance extract. Raw values go in; salted band commitments come out; nothing else leaves. It has no network, it refuses the corridor secret on the command line, it scans its own output before writing it, and it records who ran it — never what it saw.

These builds are not code-signed. Windows SmartScreen and macOS Gatekeeper will block them on first run, and single-file Node builds commonly trip antivirus heuristics. Check the sha256 below before you run anything — the hash is the assurance here, not the operating system's silence.

Start here

One file, identical on every platform. It is the same kernels the operator verifies against, wrapped for a single file — and it is what a security team should actually read: no dependency tree, no node_modules, no install step, greppable end to end.

Standalone builds

Same code, with the Node runtime embedded so nothing needs installing. Each is built against the official Node runtime for that platform, verified by checksum against nodejs.org/dist/…/SHASUMS256.txt during the build.

It runs from a command window. Double-clicking a build opens a short guide and waits for Enter (earlier builds printed their help and closed at once, which looked like a crash). On Windows, open PowerShell in the download folder (click File Explorer's address bar, type powershell, press Enter) and run .\mirror-bander-win-x64.exe fingerprint. On macOS or Linux, open Terminal in the folder, run chmod +x on the file once, then ./mirror-bander-darwin-arm64 fingerprint. The builds are not code-signed yet, so Windows SmartScreen and macOS Gatekeeper warn on the first run; check the sha256 below before you allow it.

Verify it before you trust it

The published sha256 is the bander's identity — it is what a counterparty pins and what mirror-bander attest signs. Checking it is the whole point.

  1. Confirm the hash matches what is published above.
    shasum -a 256 mirror-bander-linux-x64 # macOS / Linux certutil -hashfile mirror-bander-win-x64.exe SHA256 # Windows
  2. Watch it refuse the network. It prints every outbound entry point it has sealed, and you can confirm from outside with a network monitor or by running it air-gapped.
    mirror-bander verify-diode
  3. Read its bill of materials, compiled in — which primitives it uses, at which parameters, and what a quantum adversary does to each.
    mirror-bander cbom
  4. Band a file and look at what comes out. The raw values stay on the machine; the output is salted commitments and a role name.
    mirror-bander band --in legs.csv --out batch.json \ --edges 50,100,150,200 --secret-file secret.txt --tolerance 1
  5. Put yourself on record for the binary you run, then load the batch into the console — the operator will report whether both parties ran a bander the other recognises.
    mirror-bander attest --key member-private.jwk --party "Bank A" --out attestation.json

The manifest

Every hash and size on this page is read from downloads.json, which bander/gen-download-manifest.js computes from the bytes on disk - never typed by hand. Scripts and package managers should pin the sha256 from it. Version 1.0.0, built against Node v24.16.0; signed: no.

FilePlatformSizesha256Hosted hereCheck it
mirror-bander.bundle.jsany - Node 20+0.7 MB0b0e52e0ce94457a92a25daa433f0e8466ee6faf6582502dd18f05379391f0c8yesshasum -a 256 mirror-bander.bundle.js
mirror-bander-win-x64.exeWindows x6488.8 MBdb7f720876631c4f5adfb9adca515f2b8e50624d43ea2de772a0b8b075a85469yescertutil -hashfile mirror-bander-win-x64.exe SHA256
mirror-bander-darwin-arm64macOS Apple silicon114.6 MB897a0595b79404e03c03f200ebe0004077568c12b9ed7c8e76e9dfa784ae49ccyesshasum -a 256 mirror-bander-darwin-arm64
mirror-bander-darwin-x64macOS Intel116.8 MBe1a416cad856bfcf9b9234c5e080920aa1383490c212521908082e2ea9526349build from sourceshasum -a 256 mirror-bander-darwin-x64
mirror-bander-linux-x64Linux x64118.5 MB3c12d9a7f41a379d13aee7d6db6ef9b2a199d4892e4a787c4a0fab0eadd6f7c3build from sourcesha256sum mirror-bander-linux-x64

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. Read the raw manifest.

What it does not do

It does not zeroize memory. V8 strings cannot be wiped, so a raw value lives in the heap until garbage collection and may reach a swap file or a crash dump — buffers are wiped, strings are not. The network seal is defence in depth against accidental egress, not a sandbox: code deliberately reaching for process.binding could get around it, which is why the claim worth making is the one you can check from outside the process. And the output scan matches field names and the secret string, so a raw number emitted under a name nobody anticipated would pass — that is why the operator runs its own independent raw-data wall. Two checks, neither trusted alone.

Anyone who needs true memory zeroization needs a native bander, and should be told so rather than sold this one. The protocol spec states the rest of the boundaries.