AFiR · Stream · Voice Patent Pending

Sign every inference. Even the streaming ones.

These are fast Ed25519 receipts that stay off the hot path. We measured 11.59µs against a 100µs budget, so the call never waits on signing. An ML-DSA-65 post-quantum anchor locks the session at close. Five layers of protection built for HIPAA voice, PCI call centers, and agentic streams. You can check it offline on a laptop, no secret key needed.

11.59µs
measured max overhead
100µs
hot path budget we set
ML-DSA-65
post-quantum session anchor
10 of 10
acceptance criteria pass
The problem we solved

Voice and streaming inference broke every receipt design before this one.

A three-minute HIPAA voice call packs in hundreds of model turns. Older designs made you pick two out of three: fast, tamper-proof, or checkable offline. You never got all three at once.

×Approach 1

Sign every turn inline

This adds milliseconds to every segment. Your latency budget is gone before the first packet even ships. Voice gets choppy, and people switch to the next vendor.

×Approach 2

Sign once at session close

This is fast on the wire. But if someone tampers with a segment in the middle of the stream, you won't see it until the call ends. And if they also tamper with the close, you might never see it. There's no way to catch a mid-stream tamper.

×Approach 3

Verify online with a key holder

Here the auditor has to call your service just to check a receipt. Now the audit depends on you staying online. That's not how compliance works. PCI and HIPAA reviewers need to check things on their own hardware.

How it works

One hot path, one off path, and one post-quantum close.

The producer never waits on signing. The sidecar never blocks the producer. The post-quantum anchor never runs on the hot path. You get three separate lanes and one proof you can check.

HOT PATH                                 OFF PATH                       AT SESSION CLOSE
--------                                 --------                       ----------------
producer  -->  enqueue(seg)  ----+
( voice / LLM stream )           |
                                 v
                       +---------------------+         +-----------------------+
                       |  sidecar  queue     |  --->   |  per-segment receipt  |
                       |  (non-blocking)     |         |  Ed25519, off-path    |
                       +---------------------+         +-----------------------+
                                                                   |
                                                                   v
                                                            chain of segment
                                                            receipts ( hash-
                                                            linked, tamper-
                                                            detectable )
                                                                   |
                                                                   v
                                                          +-------------------+
                                                          |  ML-DSA-65 anchor | <-- session.close()
                                                          |  PQ-finalized     |
                                                          +-------------------+
                                                                   |
                                                                   v
                                                          one verifiable proof
                                                          ( offline, zero-secret )
hot path: the producer never waits off path: signing happens here close: one post-quantum anchor for the whole session
The five layers of protection

Every layer makes the receipt harder to attack and easier to check.

We built these in the order D, C, A, B, E, but you can read them in any order. Each one stands on its own. All five are tied into the same signature chain, so tampering with any of them breaks verification.

A Continuity

Drops, resumes, and transfers stay one record.

A dropped connection, a network change, or a transfer to a human agent never breaks the chain. The next segment after the gap carries a continuation block that points back to both the session root and the prior segment's fingerprint.

  • sidecar.mark_interruption(cause=transport_close|network_change|transfer)
  • sidecar.mark_transfer(to_handler=did:...) for warm-handoff scenarios
  • verify_chain accepts seq jumps iff a continuation block is present
  • a missing continuation block means the chain gets rejected as incomplete
Auditor sees: one session record, gap timestamps recorded, no silent dropouts.
B Source-role attribution

Every segment names whether the model or the other person said it.

source_role is required on every SegmentInput. It's tied into the segment's signature, so tampering with attribution breaks verification. The asserts field spells out the limit clearly: this tells you who spoke within the session, not who that person really is.

  • source_role: "model_side" | "counterparty_side" (required field)
  • asserts: stream_provenance_only; source_role_is_origin_not_identity
  • tamper test: flipping source_role on one segment fails offline verify
  • no overclaim: the receipt never says who the other person actually is
Auditor sees: for every line in the transcript, which side said it. This is provable, and it doesn't stretch the claim.
C Latency attestation

The "~0ms" claim is measured and signed, not just asserted.

The sidecar measures its own hot-path overhead on every enqueue call and embeds {max, p99, mean, declared_budget_us, within_budget, n_samples} in the SessionReceipt. This measurement is tied into the post-quantum signature. Change it, and verification fails.

  • measured max in smoke test: 11.59 µs against a 100 µs declared budget
  • within_budget = (max ≤ declared_budget_us): this is reported, not just claimed
  • changing declared_budget_us after the fact breaks ML-DSA-65 verification
  • n_samples is reported so the auditor can see how many samples were tested
Auditor sees: a latency limit backed by evidence, not a marketing claim.
D Verification-state sealing

Live receipts and sealed sessions look different, on purpose.

Every segment receipt carries verification_state="live_provisional" and sig_alg="ed25519". The SessionReceipt at close carries verification_state="sealed" and sig_alg="ML-DSA-65". So auditors and downstream systems can never mix up a per-segment receipt with the final session anchor.

  • segment receipts: live_provisional / Ed25519 (fast, off-path)
  • session receipt: sealed / ML-DSA-65 (post-quantum substrate)
  • verify path picks the right algorithm based on the state field
  • there's no way to replay a live receipt as a sealed one
Auditor sees: at a glance, which receipts are still provisional and which carry the audit-grade post-quantum seal.
E Redaction-compatible provenance

PCI and PHI never land in the receipt, but the receipt still proves they were there.

A card number, a social security number, or a medical record value gets redacted in the input before the segment is even enqueued. Only {pos, class, commit, in_boundary} go into the receipt. The plain text never enters the chain. Later, an authorized auditor who has the secret key and the value can prove the held value matches the committed span.

  • redact_text(cleartext, spans) → (redacted_text, span_dicts, salts)
  • commit = SHA-256(domain || salt || class || value): you can't reverse this to get the original value
  • verify_disclosure(span, salt, value) is the check that reveals only what's needed
  • wrong value fails, wrong salt fails, wrong class fails
Auditor sees: that the protected value existed, its class, its position, and its boundary status. They never see the value itself.
The proof behind the proof

We proved it works, we measured the numbers, and we tested that tampering gets caught.

Both test suites run from a fresh checkout. There are five base criteria and five reinforcement criteria. All ten pass. We measured the bench overhead on a 200-segment stream running at a 300ms cadence.

Acceptance smoke 10 of 10 pass

  • 1~0ms added latency on the live stream
  • 2Session receipt reconstructs from the segment chain
  • 3Offline zero-secret verify of the whole chain
  • 4Tampering one segment breaks the chain
  • 5PQ-finalize session root post-stream and verify offline
  • 6Layer D: live_provisional segments vs. sealed session
  • 7Layer C: latency measurement within budget, tied into the post-quantum signature
  • 8Layer A: drop and resume verifies end to end through the continuation block
  • 9Layer B: source_role is tied in, and tampering breaks verification
  • 10Layer E: PCI data never appears in the receipt, and selective disclosure matches

Bench & latency attestation

84.9µs
control mean (no attestation)
135.2µs
test mean (with sidecar)
+50.2µs
overhead (1.59x)
1.21ms
PQ finalize (one-time, post-stream)
11.59µs
Layer C measured max
100µs
declared budget

This test ran 200 segments at a 300ms cadence. The off-path approach held up from start to finish. These numbers ship with every session receipt as signed evidence.

Hook in

Wrap your stream, issue receipts, and check them offline.

The sidecar sits right next to your producer, whether that's an LLM emitter, voice text-to-speech, or an agentic loop. You call enqueue() for each segment, and it returns right away. At session close, you get back one post-quantum-finalized receipt. Anyone with the public keys can check the whole chain offline.

voice_call_handler.py
from hive_stream import StreamSidecar, SegmentInput, Grounding, LiveSigner, PQFinalizer
from hive_stream.boundary import ComplianceBoundary
from hive_stream.redaction import redact_text

# 1. open a sidecar. (the hot path is whatever follows; this runs once per session)
sidecar = StreamSidecar(
    session_id="did:hive:tenant:my-call-center",
    model_ref="mir:hivecompute/voice-pci-v1",
    live=LiveSigner.from_key(LIVE_ED25519_KEY),
    pq=PQFinalizer.from_key(PQ_MLDSA_KEY),
    declared_budget_us=100,
).start()

# 2. for each segment in the live stream: this is the hot path
for seg in voice_stream:
    redacted_input,  spans_in,  salts_in  = redact_text(seg.heard, seg.pii_spans_in)
    redacted_output, spans_out, salts_out = redact_text(seg.said,  seg.pii_spans_out)

    sidecar.enqueue(SegmentInput(
        seq=seg.i,
        t_start=seg.t0, t_end=seg.t1,
        input_window=redacted_input,
        output=redacted_output,
        model_ref="mir:hivecompute/voice-pci-v1",
        grounding=Grounding(score=seg.grounding_score, claims_root=seg.claim_hash),
        boundary=ComplianceBoundary(in_scope=True, pii_class="phi"),
        source_role="model_side",                # Layer B
        redacted_spans=spans_in + spans_out,    # Layer E
    ))
    # enqueue() returns right away. signing happens off the hot path.

# 3. mid-stream interruption? just one line. (Layer A)
if transport.dropped():
    sidecar.mark_interruption(cause="transport_close")

# 4. close the session: this makes the ML-DSA-65 post-quantum anchor
session_receipt = sidecar.close_session()
# session_receipt.verification_state == "sealed"     (Layer D)
# session_receipt.latency_attestation                (Layer C)
# verify offline anywhere:
#   from hive_stream.session import verify_chain
#   ok, why = verify_chain(sidecar.chain, LIVE_PUBLIC_KEY)
Who it's for

Built for streams that have to hold up to an audit the next business day.

This is for anywhere a model is talking to a person about regulated material.

Healthcare

HIPAA voice

Telehealth intake, behavioral health sessions, and voice agents that touch PHI. Layer E keeps the data type on the receipt while keeping the actual data out of it.

Payments

PCI call centers

Card-not-present voice flows where card numbers have to be auditable without ever landing in log storage. Your PCI scope shrinks, and what you can prove to an auditor grows.

Agents

Agentic streaming

Long-running agent loops where the model talks to other models or tools for hours at a time. Continuity, Layer A, means transfers and reconnects all stay part of one record.

Platform

LLM proxies for regulated industries

If you resell inference to banks, insurers, or hospitals, AFiR-Stream is the first thing your customers' auditors will ask for.

Live endpoint · hit it now

The signer is live. Not a slide.

The AFiR-Stream signer runs in production today at receipts.thehiveryiq.com. It signs a segment off the hot path, seals the session at close, and checks the chain. Every response is a real Ed25519-signed envelope, and the sealed session shows its ML-DSA-65 post-quantum anchor.

GET/v1/afir-stream/healthLive
POST/v1/afir-stream/segmentprovisional per-segment receipt, signed off the hot path
POST/v1/afir-stream/sealfinalized session receipt + latency attestation + PQ anchor
POST/v1/afir-stream/verifyre-checks the signature and rejects any tampering
GET/v1/afir-stream/examplesa real signed streamed session, interruptions and all
curl -sS https://receipts.thehiveryiq.com/v1/afir-stream/examples | python3 -m json.tool

Measured, not marketed. The example session seals seven segments with a worst-case off-path signing latency of about 12µs against a declared 100µs budget. The hot path is never blocked. These latency numbers show the system is alive and working, not a production SLA.

Hook in and run a million receipts.

It's self-serve from the signup page. The product is the pitch. No meetings, no demos to schedule.

AFiR-Stream · Patent Pending · USDC on Base
AFiR-Stream is a patent-pending Hive Civilization primitive. The signer is live in production at receipts.thehiveryiq.com/v1/afir-stream/*. Health, segment, seal, verify, and examples all return real signed envelopes right now. The acceptance numbers above come from the smoke test (smoke/smoke_afir_stream.py) and bench (bench/bench_afir_stream.py) checked into the AFiR-Stream substrate. The receipt schema and offline verifier ship with the API key. SiGR, MiR, GCA, GiTM, QPuF, AFiR-CacheSign, and AFiR-Manifest are live at /.
Inference Receipts · Verifiable Provenance · Third-Party Verified · Hive

Certified third-party receipts

This work is independently verified by Hive

Every receipt on this page is signed by Hive as an independent third party, and you can check it offline against one published key. The mark is a visible sign that the proof came from outside the stack, and you can display it on your own site too.

Verify a receipt → ML-DSA-65 · NIST FIPS 204 Offline-verifiable
Put this on your site
<a href="https://thehiveryiq.com/verify/" rel="noopener">
  <img src="https://thehiveryiq.com/assets/hive-receipt-badge.jpg"
       alt="Third-party verified inference receipts by Hive"
       width="120" height="120" loading="lazy">
</a>
Private by design. Hive does not store your prompts. Every request is already receipted by a one-way SHA-256 fingerprint, not the words. Proof, not surveillance.