<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pulkit Srivastava</title>
    <description>The latest articles on DEV Community by Pulkit Srivastava (@pulkit_srivastava_8ce4f05).</description>
    <link>https://dev.to/pulkit_srivastava_8ce4f05</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3958756%2F0b57b9b7-6ee2-4d32-9dec-c48299d684ba.jpg</url>
      <title>DEV Community: Pulkit Srivastava</title>
      <link>https://dev.to/pulkit_srivastava_8ce4f05</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pulkit_srivastava_8ce4f05"/>
    <language>en</language>
    <item>
      <title>How to generate a cryptographic receipt for every AI inference</title>
      <dc:creator>Pulkit Srivastava</dc:creator>
      <pubDate>Sat, 27 Jun 2026 07:31:34 +0000</pubDate>
      <link>https://dev.to/pulkit_srivastava_8ce4f05/how-to-generate-a-cryptographic-receipt-for-every-ai-inference-3j6p</link>
      <guid>https://dev.to/pulkit_srivastava_8ce4f05/how-to-generate-a-cryptographic-receipt-for-every-ai-inference-3j6p</guid>
      <description>&lt;p&gt;The EU AI Act enforcement starts August 2026. Article 13(3)(c) requires &lt;br&gt;
technical documentation of every automated AI decision made by high-risk &lt;br&gt;
systems. The fine for non-compliance: €15M or 3% of global revenue.&lt;/p&gt;

&lt;p&gt;Most teams are not ready for this.&lt;/p&gt;

&lt;p&gt;The problem isn't understanding the regulation. It's that right now, every &lt;br&gt;
AI output your system produces is unverifiable. Anyone can edit it after &lt;br&gt;
the fact. There's no proof it came from a specific model at a specific time. &lt;br&gt;
No proof the output wasn't changed. No audit trail that would survive a &lt;br&gt;
legal dispute.&lt;/p&gt;

&lt;p&gt;AetherProof fixes this with one function call.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it generates
&lt;/h2&gt;

&lt;p&gt;Every inference produces a receipt — a cryptographically signed JSON record &lt;br&gt;
that proves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WHAT model ran (provider-reported model id, not a guess)&lt;/li&gt;
&lt;li&gt;WHAT the input was (SHA-256 commitment)&lt;/li&gt;
&lt;li&gt;WHAT the output was (SHA-256 hash)&lt;/li&gt;
&lt;li&gt;WHEN it happened (millisecond timestamp)&lt;/li&gt;
&lt;li&gt;That none of it was altered (Ed25519 signature — one bit changes, 
verification fails)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The receipt is verifiable offline, forever, with only a public key. &lt;br&gt;
No servers. No API calls. No dependency on AetherProof infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;pip install aetherproof&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud API usage (OpenAI, Claude, Grok, DeepSeek, Gemini)
&lt;/h2&gt;

&lt;p&gt;from aetherproof.core.receipt import Receipt&lt;br&gt;
from aetherproof.core.keystore import load_or_create_signer&lt;br&gt;
from aetherproof.core.log import ReceiptLog&lt;/p&gt;

&lt;h1&gt;
  
  
  your normal API call
&lt;/h1&gt;

&lt;p&gt;resp = client.chat.completions.create(&lt;br&gt;
    model="gpt-4o",&lt;br&gt;
    messages=[{"role": "user", "content": user_prompt}]&lt;br&gt;
)&lt;/p&gt;

&lt;h1&gt;
  
  
  generate the receipt
&lt;/h1&gt;

&lt;p&gt;r = Receipt.for_api_call(&lt;br&gt;
    provider="openai",&lt;br&gt;
    model_id=resp.model,              # from the API response, not typed&lt;br&gt;
    prompt=user_prompt,&lt;br&gt;
    output_text=resp.choices[0].message.content,&lt;br&gt;
    response_metadata={&lt;br&gt;
        "system_fingerprint": resp.system_fingerprint,&lt;br&gt;
        "response_id": resp.id,&lt;br&gt;
        "created": resp.created,&lt;br&gt;
    },&lt;br&gt;
)&lt;/p&gt;

&lt;h1&gt;
  
  
  sign and log it
&lt;/h1&gt;

&lt;p&gt;signer = load_or_create_signer()&lt;br&gt;
r.signature = signer.sign(r.signing_bytes())&lt;br&gt;
ReceiptLog().append(r)&lt;/p&gt;

&lt;p&gt;The receipt JSON looks like this:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "receipt_version": "1.1",&lt;br&gt;
  "model_weight_root": "e04054baac10b5d2a36213244af1b979...",&lt;br&gt;
  "model_root_type": "api_attested",&lt;br&gt;
  "input_commitment": "52cb6b5e4a038af1756708f98afb718a...",&lt;br&gt;
  "output_hash": "a54fe368ce973a036ccb2271627f8fa4...",&lt;br&gt;
  "timestamp_ms": 1719400000000,&lt;br&gt;
  "log_sequence": 1,&lt;br&gt;
  "signature": "d5b00bf29e891892d87ee4a864b4e695...",&lt;br&gt;
  "log_anchor": "local://log/1"&lt;br&gt;
}&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify it offline — no AetherProof code required
&lt;/h2&gt;

&lt;p&gt;import json, hashlib&lt;br&gt;
from cryptography.hazmat.primitives.serialization import load_pem_public_key&lt;/p&gt;

&lt;p&gt;r = json.load(open("receipt.json"))&lt;br&gt;
pub = load_pem_public_key(open("public.pub", "rb").read())&lt;/p&gt;

&lt;p&gt;fields = [&lt;br&gt;
    r["receipt_version"], r["model_weight_root"], r["model_root_type"],&lt;br&gt;
    r["input_commitment"], r["output_hash"], str(r["timestamp_ms"]),&lt;br&gt;
    str(r["log_sequence"]),&lt;br&gt;
    json.dumps(r["hw_evidence"], sort_keys=True, separators=(",", ":")),&lt;br&gt;
    r["log_anchor"],&lt;br&gt;
]&lt;br&gt;
preimage = "".join(f"{len(f)}:{f}" for f in fields).encode("utf-8")&lt;br&gt;
pub.verify(bytes.fromhex(r["signature"]), preimage)&lt;br&gt;
print("valid")&lt;/p&gt;

&lt;p&gt;That's the entire trust model. SHA-256 + Ed25519. Standard crypto. &lt;br&gt;
Runs anywhere, forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  An important honesty note about cloud models
&lt;/h2&gt;

&lt;p&gt;With cloud APIs (GPT-4o, Claude, Grok), you cannot hash the weights — &lt;br&gt;
they live on the provider's servers. AetherProof is honest about this: &lt;br&gt;
model_root_type is set to api_attested, not artifact_hash.&lt;/p&gt;

&lt;p&gt;What it does prove is the part you are liable for: the exact input your &lt;br&gt;
system sent, the exact output it acted on, the model the API claimed, &lt;br&gt;
the timestamp, and that none of it was edited afterward. That's your &lt;br&gt;
record-keeping obligation under EU AI Act and SEC 17a-4.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works with 17 model families
&lt;/h2&gt;

&lt;p&gt;OpenAI, Anthropic, xAI/Grok, DeepSeek, Google, Mistral, Meta, Cohere, &lt;br&gt;
Alibaba — tested in the matrix test suite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apache 2.0 — fully open source
&lt;/h2&gt;

&lt;p&gt;pip install aetherproof&lt;br&gt;
github.com/pulkit6732/aetherproof&lt;/p&gt;

&lt;p&gt;If you're hitting audit trail requirements from enterprise clients, &lt;br&gt;
I'd love to hear about it.&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>security</category>
      <category>compliance</category>
    </item>
    <item>
      <title>I built a cryptographic audit receipt for Claude Mythos (and any AI model) — here's how it works</title>
      <dc:creator>Pulkit Srivastava</dc:creator>
      <pubDate>Fri, 29 May 2026 15:47:13 +0000</pubDate>
      <link>https://dev.to/pulkit_srivastava_8ce4f05/i-built-a-cryptographic-audit-receipt-for-claude-mythos-and-any-ai-model-heres-how-it-works-5hbn</link>
      <guid>https://dev.to/pulkit_srivastava_8ce4f05/i-built-a-cryptographic-audit-receipt-for-claude-mythos-and-any-ai-model-heres-how-it-works-5hbn</guid>
      <description>&lt;p&gt;Anthropic's Mythos model can autonomously find zero-day &lt;br&gt;
vulnerabilities. Their CVD disclosure process uses manual &lt;br&gt;
SHA-3-512 hash commitments to prove findings existed.&lt;/p&gt;

&lt;p&gt;I built something that automates that in one line of Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AetherProof does
&lt;/h2&gt;

&lt;p&gt;One function call generates a 128-byte Ed25519-signed receipt &lt;br&gt;
that proves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What model ran&lt;/strong&gt; — FNV-1a hash of provider/model ID&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it produced&lt;/strong&gt; — hash of the output&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When&lt;/strong&gt; — cryptographic nanosecond timestamp&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tamper-evident&lt;/strong&gt; — flip any byte anywhere → INVALID&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
import aetherproof

receipt = aetherproof.for_anthropic(
    "Find vulnerabilities in this binary.",
    finding_text,
    model="claude-mythos-preview"
)

receipt.save("CVE-2026-001.receipt")
print(receipt.verify())  # True
Try it in 30 seconds

pip install aetherproof
python -c "
import aetherproof
r = aetherproof.for_anthropic('question', 'answer')
print(r.verify())   # True
print(r.pretty())
"
The unusual part — invisible Unicode watermarking
Receipts embed invisibly into any text using Unicode
Private Use Area codepoints (U+E000–U+E0FF).

AI output carries its own audit trail. Works in any language —
Arabic, Chinese, Devanagari, Hebrew, Thai, Japanese all tested.


signed_output = aetherproof.embed(ai_response, receipt.to_bytes())
# Text looks identical. Receipt is inside.

aetherproof.verify_embedded(signed_output)  # True
Numbers
187 tests, 0 failures
128/128 byte flips all detected
1000/1000 tamper probes pass
Cross-language: Python generates, Rust CLI verifies
15,446 receipts/sec (Python) · 5,472/sec (Rust)
Why AGPL-3.0
Free for open source. Commercial use needs a license.
This is the compliance layer under your AI stack —
it should be open, auditable, and not vendor-locked.

GitHub
https://github.com/pulkit6732/aetherproof

Built by Pulkit. Feedback welcome.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>python</category>
      <category>rust</category>
      <category>security</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
