One Event Store

Ingest events once. Replay object changes, investigate collected data locally, and query compact summaries without loading every event.

ServerBrowser
.sum5-Minute Columnar Summaries → Daily Packets → Charts
Select a StageData Shapes Are Schematic
Server / Ingress

Accept the Change

A PIL record arrives under a negotiated Definition. The seed journal supports recovery; recent records stay in native memory for live search and replay.

Bad records go to Lost Events with their original content.

Record ViewExample Data
payment / transactionsPIL Record
event_idUUIDv7
idTransaction UUID
revision_id17
stateauthorized
Append to .seedAvailable in Memory

Query Paths

Time, object identity, and text each have
a useful way into the journal.

Time & Text

Bound a search by time, then refine by fields or text. Collect the matching hours for local investigation.

Time Trie + Tantivy

Object Replay

Follow one object’s revisions. The optional collection index supports history and replay without rebuilding the full object.

collection.idx → Writes

Analytics

Render counts, errors, and duration distributions from summaries. Daily totals also feed weekly, monthly, and yearly rollups.

.sum → Analytic Columns

Retention is configured per resource and branch. Completeness and lost events remain visible. Scheduled reports and external alert delivery are still planned.

PIL / Positional Interchange Layout

PIL Definitions

Field positions, types, and dictionaries live in a shared Definition. A record can carry complete state or a single changed field.

Definitions are encoded as CBOR. CDDL describes their structure; the codec enforces the remaining semantic rules.

Download the Definition Schema
A DefinitionJSON View of CBOR
{
  "definition": "payment/transactions",
  "pil": 0,
  "version": 0,
  "fields": [
    { "name": "id",           "type": "UUID" },
    { "name": "revision_id",  "type": "U16"  },
    { "name": "state", "type": "STRING",
      "values": ["pending", "authorized", "captured"] }
  ]
}
A Changestate: authorizedOmitted fields remain omitted.

Storage Measurements

1,000,000 synthetic events. 30 days. Five resources.
Indexes, journals, and metadata included.

168.41 MB

Total logical storage

Read the Benchmark
Event Pods
44.78 MB
Tries
3.57 MB
Indexes
28.53 MB
Summaries
4.88 MB
Journals & Other
6.49 MB

153.6 KB median daily summary transfer across the fixture’s resources.

168.4 bytes/event including optional collection indexing and Tantivy in this fixture.

Expanded JSONL: 428.60 MB. Gzip-6 JSONL: 25.44 MB, without equivalent search indexes.

These are development measurements, not production guarantees. The linked report includes allocation, coverage, and format tradeoffs.

Front-Facing Snoot Anteater
Snoot

Search & Investigation

Search the journal, inspect a change, and look at the pattern. Snoot brings the detail and the summaries into the same research session.