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 sixty-second demo
One request in, queryable forever.
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. Query it, 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.
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 hello@empress.eco