This page is kept honest: “shipped” means merged, tested, and covered by the benchmark gate; “next” lists the real reason each item is not done yet. Dated summaries of each pass live in the changelog.
Recently shipped
The 2026-07 application pass:
- Immediate Mongo-style writes everywhere.
update-one/update-many/find-one-and-update/delete-manywith explicit scan/mutation bounds, explicit-seed upsert, and ordered atomicbulk-write— on the CLI, over MCP, and in the TypeScript/Python clients. - One-request transactions. An ordered
insert/get/replace/deleteprogram with read-your-writes visibility, one durable commit, and canonical-log authorization that never trusts derived cache files. - Collection and index lifecycle.
create/list/drop-collectionand stable named indexes (create-index --name,list-indexes,drop-index) as authoritative op-log operations;count-documentsanddistinctround out the read surface. - A real
dangerousMCP scope.drop_collectionexists only aboveread-write— an agent cannot even see it unless the server was deliberately started with the higher ceiling.
The 2026-07 native-search pass:
- Full-text search.
define-search-indexwrites a versioned, typed index definition into the op-log — replayed, transacted, and compacted like any other operation. Queries are a strict AST (term, phrase, prefix, fuzzy, regex, boolean) scored by deterministic BM25, with per-field weights, English/Greek/keyword/n-gram analyzers, bounded highlighted snippets, and--explainscore breakdowns. - One call, both worlds.
--filterintersects a MongoDB-style structured filter with the text query before ranking, at one consistent log boundary. - Semantic and hybrid modes.
search --mode semanticranks by exact cosine over locally computed embeddings;--mode hybridfuses lexical and semantic rankings with versioned deterministic reciprocal-rank fusion. - Pinned local models.
omgdb models pullinstallsbge-small-en-v1.5ormultilingual-e5-smallwith checksum, license, and read-back verification — the only network path in the engine. Search itself never downloads, and builds without model support say so instead of silently substituting a weaker embedder. - Honest derived generations. The accelerated index records its exact log boundary, definition/analyzer digests, and rebuild reason;
search-index-statusreports them, and a stale or corrupt generation is rebuilt, never served.
The 2026-07 performance pass:
- Much faster writes. Bulk import commits in batches with one fsync each — 50,000 documents load in about 2 seconds — and single durable writes now run at the fsync wall, the same physical wall every embedded database hits.
- Deferred cache persistence. Derived cache sidecars are no longer rewritten on every operation; checkpoints may lag the durable log by a bounded tail, and readers heal them lazily. Persistence is an optimization, never a correctness event.
describeshows the write contract. The live manual now includes each collection’s indexes and validation rules, so an agent knows what a write must satisfy before attempting it.- Incremental vector sync.
vsyncskips embeddings that are already fresh, andvsearch/contextreuse persisted vectors instead of re-embedding on every call. - MCP contract hardening. Unknown tool names report “unknown tool”, destructive tools carry real destructive hints, and every tool declares its required parameters in the schema.
- Structured missing-collection errors.
explainanddiagnosefail loudly on a missing collection with a did-you-mean hint, instead of silently returning nothing. - Compaction preserves history. Compacting the op-log keeps each surviving record’s original timestamp, so compaction no longer rewrites when things happened.
Next
Each item was deferred for a real reason, listed with it:
- Warm-open fast path. Opening from a checkpoint is benchmarked but not yet measurably faster than replaying the log — it ships when it actually wins.
- Paged caches, then a paged store. Point reads now decode only the entries they probe (per-entry offset tables); paging or memory-mapping the remaining whole-file reads (full scans, the secondary-index cache) is the stepping stone to datasets bigger than RAM — the main gap to production scale.
UniformDone (2026-07):--jsonoutput flag.explain,verify,validateandinspectemit stable, test-pinned JSON schemas.A real neural embedder (ONNX).Done (2026-07): pinned, checksum-verified local models (bge-small-en-v1.5,multilingual-e5-small) with ONNX inference behindsearch --mode semantic|hybridon supported native builds. The deterministic hashing embedder remains the dependency-free baseline, and targets without model support (browser WASI, Windows GNU) report the capability as unavailable instead of downloading or substituting silently.- TypeScript + Python clients — in final testing. Both ride a versioned stdio driver protocol (
omgdb driver) with a written contract and fixtures, instead of parsing CLI text:@omgdb/clientfor Node (ESM + CommonJS, zero runtime dependencies) and anomgdbPython package (sync + native asyncio). They ship with the first public release. - HNSW vector index. Flat exact kNN is correct and fine at current scale; an approximate index must stay a derived, rebuildable artifact like every other binary file.
- Log-native rollback. Undo expressed in the op-log itself, rather than only in sidecar change files.
Splitting the two largest source files.Done (2026-07): both the store and query crates are split into concern modules small enough to read whole — the codebase now passes its own legibility bar.
Principles
- The text stays canonical. The NDJSON op-log is the single source of truth. Binary artifacts — caches, vector indexes, future paged checkpoints — are allowed only as derived, deletable, rebuildable files that
verifycan check at runtime. - Honest limitations. Every feature ships with a plain statement of its current limit, and this site never claims past it. If the docs and the engine disagree, that’s a bug in the docs.
- Every claim is verified. Behavior is proven by tests, and performance by a benchmark harness with a regression gate — a reintroduced hot-path cost fails loudly. A number you read here was measured, not estimated.