Why AeorDB
Xenocept is built on top of AeorDB — a content-addressed, single-file embedded database. AeorDB runs in-process inside the Xenocept binary; there is no separate server or client lib involved.
What Xenocept Needs From Storage
Xenocept’s storage workload has a specific shape:
- Many PNG images. Every comment captures one focus PNG (its annotated crop). Every Submit also writes a full-frame screenshot, and optionally a clean (background-only) copy. A long-running install accumulates many of these.
- High redundancy. Two captures of the same UI overlap on most pixels. Most of the bytes are identical.
- Searchable over text. Users want to fuzzy-search past sessions by comment text, bubble text, OCR’d UI text, AI-generated descriptions, etc.
- Reactive UI. When a session is submitted or dispatched, the Sessions list should update without polling.
- No external dependencies. Xenocept is a desktop app. Spinning up Postgres or Redis to power it would be absurd.
What AeorDB Provides
| Need | AeorDB Feature |
|---|---|
| Many PNGs | Single-file, embedded, no setup. |
| High redundancy | Content-addressed storage with BLAKE3 hashing — identical chunks are stored once. Captures with overlapping pixels dedupe automatically. |
| Searchable text | Trigram fuzzy-search indexes over comment / bubble / text / OCR / description fields. See Indexes. |
| Reactive UI | An internal event bus and SSE machinery. Xenocept builds its own session-event broadcast on top — see Events & Reactivity. |
| No external deps | One .aeordb file. Compressed (zstd) on disk. Crash-recoverable via WAL. |
AeorDB’s query operators are eq, gt, lt, between, in, contains, similar, fuzzy, phonetic, and match, combined via and / or / not. The authoritative list lives in the AeorDB querying docs.
The Net Effect
The same in-process .aeordb file powers:
- The submitted session history (
/sessions/) - The screenshot capture history (
/screenshots/) - Settings, destinations, and auto-send config (
/config/) - The session-content fuzzy-search index (
/sessions/.aeordb-config/indexes.json)
One file. One library link. No deployment story.