Studio
Eelden Studio is the engine's first client: a Vue UI that talks to eelden serve over HTTP (and WebSocket for CDC). It never opens page/WAL files itself.
Do not confuse with the Playground: Studio is serve-backed (App.vue); the playground is in-tab wasm (LocalPlayground.vue) with a different phone tab shell.
Start
Two ways to run it:
bash
# HMR — seeds mydb-studio if needed, API on :8787, UI on :5173
cd clients/studio && npm install && npm run build:wasm && npm run dev
# open http://127.0.0.1:5173/?token=studio-devbash
# Built UI served by the engine (opens the browser)
cd clients/studio && npm run build:wasm && npm run build
cargo run -p eelden-cli -- studio ./mydb-studio examples/demo_schema.eel --ui clients/studio/distnpm run dev starts eelden serve (default DB mydb-studio, schema examples/demo_schema.eel, token studio-dev) and Vite with an /api proxy (including WebSocket). Override with EELDEN_DB, EELDEN_SCHEMA, EELDEN_TOKEN, EELDEN_PORT, VITE_PORT.
The URL carries a bearer token. API calls send Authorization: Bearer …, X-Eelden-Token, and/or ?token=.
What you get
- Collections sidebar + virtualized table grid (no mobile card presenter — cards are playground-only)
- CodeMirror editor with language intel (same
eelden-langwasm as the engine) |power key →|>+ stage menu; hover at pipe boundaries for row shape; Shape button + long-press on touch; as-you-type diagnostics- Write-mode gate for mutations, plus action log and atomic conflict banners
- Plan strip — index vs collection scan from
/query - Tenant switcher via hash route
/#/t/:tenant(create / fork are write-mode gated) - Time-travel pin →
Eelden-Snapshoton every API call - Schema & migration panel (fingerprints,
pending_migration) - Live CDC — WebSocket
…/tailwith HTTP poll fallback (transport badge showsws/poll) - Health panel — corruption reports, WAL/checkpoint lag, fsync histogram (
GET /api/v1/health/detail) - Visual / Code segmented control — stage cards for filter / join / sort / take / skip / asof / group / distinct / insert / update / delete (
&&andatomicstay in Code; mutate / unparseable examples force Code) - Mobile shell — drawer for collections/examples; header ⋮ sheet (Write, Live CDC, Schema, Diff, Health, Create/Fork tenant, Theme); Log bottom sheet; touch-sized controls
- Examples rail for the serve-backed Users demo (
examples.ts) — join / asof storefront demos live on the Playground
Rules
- Read-oriented by default — toggle Write mode before inserts / updates / deletes / tenant ops / snapshot create.
/queryaccepts one pipeline or oneatomicblock — not schema decls or tenant ops (those go through/opsor schema files at serve start).- When a snapshot is pinned, write mode and live CDC are off (you're looking at the past).
Related
- Playground — wasm engine in-tab, no serve
- HTTP API — routes Studio uses
- CLI —
eelden serve/eelden studio - Examples — demo schema used by
npm run dev