malibu-verify

Buyer-side verification for signed inference receipts. Pure Go, no runtime deps.
malibu-verify checks an X-Malibu-Receipt value against the buyer’s recorded request and response, resolves the provider receipt key, and returns a deterministic valid, invalid, or inconclusive result.

Install

Release artifacts are published on tags named verify-v<version>, for example verify-v1.1.0.

macOS Apple Silicon

macOS Intel

Linux amd64

Quickstart

Verify a captured receipt header when you already have the canonical prompt and output hashes:
Verify raw buyer captures instead — place the receipt, OpenAI request body, OpenAI response body, and provider_id in a bundle JSON file and run:

CLI Reference

Running against a private coordinator

By default, --coordinator rejects literal loopback, RFC1918, link-local, and unspecified IP hosts. This prevents accidental verification against a private endpoint when a buyer expected the public coordinator. For local development or an explicitly private deployment, set MALIBU_VERIFY_ALLOW_PRIVATE_COORDINATOR=1 before using a private coordinator URL. Hostnames are not blocked by this literal-IP guard; operators remain responsible for choosing trusted DNS names.

Input modes

--bundle and --receipt are mutually exclusive; --offline prevents live fetches; --pubkey prevents resolver failures from downgrading an otherwise valid explicit-key verification.

Exit codes

Version compatibility

Locked 1.0.x verifiers report v0.3 receipts as invalid. Roll out v1.1.x to buyers before v0.3-emitting providers reach them.

Trust boundary

A valid result proves the signer of the tuple was a holder of the provider’s receipt key and that the verifier resolved that key through the configured trust source. It does not prove model honesty, timestamp honesty, response uniqueness, privacy, or replay resistance. See Security & trust model.