Get started
Quickstart
The Vault records what your AI agents knew and did in a tamper-evident, hash-chained ledger. Send an event, watch it appear, prove it later. Two steps to your first record.
1. Create an ingest key
Open the Vault, go to Settings → New key, and copy the key (shown once). It authenticates every event you send and looks like vk_live_….
2. Send your first event
Every event has a type — know (something the agent recalled), did (an action it took), or decision — plus a human-readable summary. Everything else is optional.
curl -X POST https://vouchstone.dev/api/ingest \
-H "Authorization: Bearer vk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent": "deploy-bot",
"type": "did",
"action": "db.migrate",
"status": "ok",
"summary": "applied 20260703_004 to production",
"payload": { "migration": "20260703_004", "rows": 12 }
}'The response confirms the record and returns its position and hash in your chain:
{ "ok": true, "recorded": [ { "seq": 4127, "type": "did", "hash": "9f2a1c…" } ] }From your code
It’s a plain HTTP POST — call it from anywhere your agent runs.
await fetch("https://vouchstone.dev/api/ingest", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VOUCHSTONE_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
agent: "research-agent",
type: "know",
action: "memory.recall",
summary: "recalled: user deploys to Hetzner, never Railway",
}),
});import os, requests
requests.post(
"https://vouchstone.dev/api/ingest",
headers={"Authorization": f"Bearer {os.environ['VOUCHSTONE_KEY']}"},
json={
"agent": "research-agent",
"type": "decision",
"summary": "chose Postgres over SQLite for the ledger",
"status": "ok",
},
)3. See it — and prove it
Refresh your Vault. The event is on the Timeline, counted in your KPIs and the activity chart, and grouped under its agent. Open Integrity and hit Re-verify — the whole chain recomputes from genesis, and any tampering is caught and located.
{ "events": [ … ] } with up to 100 events — see the API reference.