HelixDB has an embedded mode (docs) — open it like LadybugDB or DuckDB, without the helix daemon or an HTTP server. Moonkale should offer it as an opt-in source (moonkale-sources-graph, feature helix) on desktop and the server, same Source shape as LadybugDB; the browser build keeps the plain-HTTP server mode (POST /v2/query) only.
Findings (2026-09-19)
- Embedded mode exists in the repo:
sdks/rust(cratehelix-db3.0.0) hasembedded = ["dep:db"]; with itClient::open(HelixDbSource::Disk { root, database }).await(alsoMemory, and S3-compatible object storage) opens storage in-process; queries use the sameQueryRequestcontract as server mode (HelixQL throughhelix-dsl-macros). No daemon, no CLI at runtime. - Not on crates.io yet: the published
helix-db 3.0.0(2026-08-04) hasfeatures = { default = [] }and nodbdependency — the engine (crates/db0.1.0) is an unpublished workspace crate. Embedded Helix therefore means a git dependency onHelixDB/helix-db, andcrates/dbpulls a git fork ofslatedb(pinned rev) plus tantivy, foyer,object_store(aws), rkyv, rayon, … — a heavy tree that followsmain. Storage is SlateDB (LSM over disk/object storage), not LMDB as in Helix 1.x/2.x. - Where it would pay off beyond “another graph engine”: graph + vector in one store for the RAG index (
moonkale-index::embed).
What “done” looks like
sources-graph/src/helix.rsimplementsSourcefor the embedded client behindhelix(git dep, pinned rev; desktop + server only; never the web client), with the server mode (HTTP) as the second backend of the same file.- Explorer: a
.helix/folder (or a configured path) opens as a graph source; the graph editor draws query results as it does for LadybugDB (Cypher → HelixQL dialect indialect.rs). - One unit test against
HelixDbSource::Memory; an E2E step only if the server build enables the feature by default (it should not until the crate is published). - Crate note + Problem Log entry with the measured clean-build cost.
Decision
Wait until crates/db is published on crates.io (or the git tree stabilises), unless the RAG index needs Helix’s vectors first. Until then the stub stays as it is.
Done 2026-09-28 (Milestone 17)
Embedded HelixDB is a source: sources-graph feature helix (git dependency on HelixDB/helix-db, pinned to f0d1b554f4), HelixSource in src/helix.rs. A *.helix directory (the object-store root; its one database, or main) opens from the Sources tree, read-only (open_reader): node and edge labels as tables, vertices and edges as a graph (v:<Label>:<id>, EdgeKind::Custom), the helix dialect (nodes [<label>] [limit n], edges …) in the table editor, Show in Graph included. Tests: sources-graph/tests/helix.rs (a Disk store written through the SDK, then read through the source), E2E stores.mjs. The HTTP server mode is not done. Known: an open writes a manifest into the store (P-145). See Milestone 17 - Implementation Log.