Behavioral infrastructure
with receipts.
Empress is an immutable ledger for behavior. Anything your agents, users, or systems do becomes a queryable xAPI statement — stored forever, isolated per tenant, exportable in full. Not session logs. A permanent record.
The first minute
Send a statement. Watch it arrive.
This is the whole pitch, executable: your first statement appears in your ledger seconds after you send it — and the dashboard shows it land live. Then take everything home.
1 — Emit a statement
curl -X POST https://empress-api.jdnyzio.workers.dev/statements \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"actor": { "account": { "name": "agent-7",
"homePage": "https://empress.eco" } },
"verb": { "id": "https://empress.eco/verbs/resolved" },
"object": { "id": "https://example.com/tickets/892" },
"result": { "success": true }
}' 2 — It's in the ledger. Read it back, or take it all home.
# your statements, isolated to your tenant
curl https://empress-api.jdnyzio.workers.dev/statements \
-H "Authorization: Bearer YOUR_API_KEY"
# your ENTIRE ledger, as NDJSON
curl https://empress-api.jdnyzio.workers.dev/export \
-H "Authorization: Bearer YOUR_API_KEY" These commands run against production. The full surface is documented in the live OpenAPI spec, and the same first minute is what the dashboard teaches a new key.
The guarantees
Four things we can prove.
The ledger is immutable
Every statement is stored forever, exactly as emitted. Hygiene happens at query time — never by rewriting history. Your audit trail is a fact, not a promise.
Tenant isolation is machine-verified
Isolation is proven in both directions by a repeatable production test: your reads and exports return your data and only yours. This test caught and killed a real leak before any customer did.
Any verb is accepted
Empress validates structure, not vocabulary. Unknown verbs are stored and become queryable — meaning lives in interpretation, not ingestion rejection. Your domain's language is welcome.
Your data leaves whole
GET /export streams your entire ledger as cursor-paged NDJSON, tenant-scoped at the SQL level. No lock-in, no partial exports, no export tax.
The truth table
What ships today.
This table is the whole story — nothing on this site claims more than it. "Planned" is an honest word.
| Surface | What it does | Status |
|---|---|---|
POST /statements | xAPI ingestion — the critical path | Live |
GET /export | Full-ledger NDJSON export, cursor-paged | Live |
GET /analytics/* | Trending, rerank, difficulty, actor stats, summary | Live |
GET /belief/:actorId | FSRS belief state + recommendations | Live |
GET /openapi.json | The sold surface, machine-readable | Live |
Node SDK (@empress-eco/client) | Typed zero-dependency client | Built — npm release pending |
Python / Go SDKs | On the roadmap | Planned |
Private beta.
Empress runs in production today, proving itself through its first tenant. If you want the second key, tell us what you'd observe.
Email [email protected]