@scopeblind/ai-sdk
v0.1.0
Published
Receipt-signing middleware for the Vercel AI SDK. Ed25519 cryptographic audit trail for every AI generation and tool call.
Maintainers
Readme
@scopeblind/ai-sdk
Receipt-signing middleware for the Vercel AI SDK. Every generateText and streamText call produces an Ed25519-signed receipt capturing tool calls, model, usage, and timing.
Install
npm install @scopeblind/ai-sdkUsage
import { wrapLanguageModel, generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { receiptSigningMiddleware } from '@scopeblind/ai-sdk';
const middleware = receiptSigningMiddleware();
const model = wrapLanguageModel({
model: openai('gpt-4o'),
middleware,
});
const result = await generateText({
model,
prompt: 'What is the weather in SF?',
tools: { /* ... */ },
});
// Receipt is attached to provider metadata
console.log(result.providerMetadata?.scopeblind);
// { receiptId: "sha256:a1b2...", publicKey: "...", sequence: 1 }Persistence
const middleware = receiptSigningMiddleware({
onReceipt: (receipt) => {
// Append to file, send to dashboard, store in DB
fs.appendFileSync('receipts.jsonl', JSON.stringify(receipt) + '\n');
},
});What Gets Signed
Each receipt captures:
- Tool calls: name, input hash (privacy-preserving), call ID
- Model: model ID, provider
- Usage: prompt/completion tokens
- Timing: duration in milliseconds
- Chain: sequence number + hash of previous receipt (tamper-evident ordering)
Verification
npx @veritasacta/verify receipts.jsonl --key <public_key_hex>Privacy
Tool inputs are SHA-256 hashed by default. The receipt proves which tool was called without revealing the actual arguments. Set includeToolInputs: true to include raw inputs.
License
MIT
Built by ScopeBlind | protect-mcp | IETF Draft
