VelarIQ VELARIQ

Every AI output, with a receipt.

Attestic is an OpenAI-compatible gateway. Point an existing application at it and every response is signed, chained to the one before it and verifiable by anyone holding the public key. It works with the models an organisation already uses.

StatusIn production InterfaceOpenAI-compatible SignatureEd25519
Attestic receipt #000184 227
Issued2026-09-30T05:41:12Z
Route/v1/chat/completions
Requestsha256:7f3a9c1e…4be2
Responsesha256:c91e04d7…a61f
Previoussha256:2d80b5aa…9c03
Merkle root0x5e1f…b7d4
Signatureed25519:9QeK…w1Zs
Verifiedchain intact · key valid

Illustrative receipt. Values shortened for display.

Try it

Alter one receipt. Watch the chain fail.

Five receipts are hashed in your browser with SHA-256, each over the hash before it. Edit the output of #000184 227. Verification walks from the first receipt, so the edited one fails and nothing after it can be anchored. The 3D chain follows every keystroke.

Fig. 1 · Receipt chain in 3DLive
#225Verified
#226Verified
#227Verified
#228Verified
#229Verified
Drag to rotate

Five receipts linked by their hashes.

Receipt chainSealing
Recorded head

Illustrative. Hashes are real SHA-256 values computed on this page. Signatures and Merkle proofs are left out.

Integration

Change one line. Keep your models.

Attestic speaks the OpenAI API, so an existing client points at the gateway instead of the model provider. Requests pass through to the models the organisation already uses, and every response comes back signed and chained.

A

Signed

Each response carries an Ed25519 signature over the request and the output.

B

Chained

Receipts are hash-chained, so altering one breaks every receipt after it.

C

Provable

Merkle roots let an auditor verify a single response without the full log.

ClientPython · illustrative
from openai import OpenAI

# Only the base URL changes.
client = OpenAI(
    base_url="https://<gateway>/v1",
    api_key="<attestic-key>",
)

reply = client.chat.completions.create(
    model="<your-model>",
    messages=[{"role": "user",
               "content": "Summarise the Q3 exposure."}],
)
# The response comes back signed and chained.

Host, key and model are placeholders.

Build the cooler, smarter data centre with us.

Operators, partners and investors. We'd like to hear from you.

Request a briefing contact@velariq.ai