Skip to content

Status — what works today

Eelden is pre-alpha. This page is the honesty contract: if a capability isn't listed as Yes here, other pages should not imply it ships.

Engine

CapabilityStatus
Durable on-disk pages + WALYes
Crash recovery (WAL replay)Yes
Multi-page B+tree (splits, interiors, root growth)Yes
insert / update / delete (tombstones)Yes
filter / selectYes
sort / take / skipYes (stable sort; Int counts)
joinYes — follows a ref field (inner)
group … aggregateYes — count / sum / min / max / avg
distinctYes
asofYes — pins nearest named snapshot ≤ time (not raw page history)
atomic { … }Yes — SI pin, RYW, single-process first-committer-wins — Transactions
ULID row idsYes
Secondary indexes (field: Type @index)Yes — equality; planner picks index vs scan
Access planner (index vs scan hint)Yes — shape-only hint[^plan]
Multi-tenant catalog / fork / snapshot / suspend / deleteYes
Compact (v1)Yes — eelden compact / Studio ops
Lazy migration Slice AYes — fingerprint apply-on-touch; pending_migration clears
Page corruption surfaced (checksum)Yes — never silent; GET …/health/detail
Cross-process first-committer-winsNot yet
across tenants(…) executionNot yet (parsed only)
Cloud backends (R2 / Durable Objects)Not yet

Language front-end

CapabilityStatus
Lexer / parser / ASTYes
Typechecker (Money, enums, joins-as-types, is / as)Yes
Named queries (query Name(params) { … })Yes
Wasm intel for Studio (complete / diagnose / hover)Yes
Packaged LSP serverNot yet (design only)

TypeScript (@eelden/client)

CapabilityStatus
Money class (bigint minors)Yes
eelden\…`` tagged templateYes
Named-query codegen (eelden-codegen)Yes
EeldenExecutor interfaceYes
Shipping HTTP / IPC transportNot yet

Studio

CapabilityStatus
Collections + virtualized gridYes
Query editor + RunYes
Editor intel (| power key, completions, hover, Shape + long-press, squiggles)Yes
Write-mode mutation consoleYes
Plan hint (index vs scan)Yes
Tenant switcher / create / forkYes
Time-travel pin (named snapshots)Yes
Schema & migration panelYes
Live CDC (WebSocket /tail + HTTP poll fallback)Yes
Health panelYes
Mobile-first shell (Studio)Yes — drawer nav, header ⋮ overflow, bottom-sheet log, safe-area
Visual query builderYes — stage cards (filter/join/sort/asof/group/… + CRUD); compound/atomic stay in Code
Local playground (?local=1)Yes — in-browser app builder; guided tour; steps Data / Screens / Try it; App menu Advanced (Build/Code); Editing; Actions; refresh-after-write + now() clock tick; OPFS “Saved on this device”; Share app / Open app file (package v2); Crops walkthrough in playground docs
Time ± Duration at runtimeYes — now() + 5s, planted_at - 7d in eval (typeck already allowed)
100k-row grid tripwireYes — ?bench=grid100k Playwright scroll budget
Playground mobile PlaywrightYes on apex (playground-e2e / npm run test:playground:ci); PR gate still rust+docs only
Playground app export packageYes — JSON v2 { version, schema, workbook, seedQueries, rows } (live data); Open app file via App menu; v1 seeds-only still imports; zip not yet

Browser engine

CapabilityStatus
File + in-memory storage backends[^traits]Yes
Injected wall clockYes
Wasm session engineYes
Durable OPFS engineYes — main-thread MVP; Worker sync-handle later

What's next

  • @breaking drop + page-history compaction (lazy migration Slice B+)
  • asof over raw page-version history
  • OPFS Worker + createSyncAccessHandle
  • Cross-process conflict detection
  • TS transport + export/import packaging
  • Execute across tenants under capability grants

Agent plans and crate-level design live under Maintainers → Internals — not product promises.

[^plan]: Implemented in the eelden-plan crate for maintainers who are tracing the workspace. [^traits]: Storage and recovery are pluggable behind PageStore / WalSink traits (file and mem backends). Product users only need to know that disk and browser share the same execution model.

Pre-alpha. Local-first. Stdlib-only Rust engine. Tenant concerns shifted left into the database.