Sprint 10 closed: Desktop polish and a cloud spike
Sprint 10 is closed.
Sprint 9 put Meronq on the desktop. Sprint 10 turned that first shell into something that starts itself, lets you search your project's memory, serves many projects from one MCP, and — for the first time — sketches what a team cloud could look like without giving up local-first.
What Sprint 10 delivered
Every item on the roadmap is checked off:
- Auto-start & supervise the sidecar from Tauri — the Rust shell now launches the Node sidecar on boot, waits for
GET /health, and runs a watchdog: probe every 5s, restart after 3 consecutive failures (or a child exit), capped at 5 restarts per session, then a clear offline state. Clean process-tree shutdown on exit. - Memory search UI in the desktop — after you connect a project, the Memory panel searches the Canonical Engineering Model directly, using the same contract as the MCP
memory_searchtool (POST /api/memory-search). Hits are ranked, selectable, and reinforce access events. - Multi-project MCP registry (ADR-0011) — one MCP process serves many projects. A persisted registry at
~/.meronq/projects.jsonplus hybrid session selection (workspace path → active project → single-project auto-activate). - Cloud workspace API spike (CRUD only) — a first sketch of the future
cloud_apisurface (details below). - Verified native Tauri builds on Windows and macOS (arm64 + Intel) via CI.
The desktop stays a shell over existing packages (@meronq/server-core, @meronq/memory, @meronq/mcp-server), consistent with ADR-0008 and ADR-0010.
The cloud spike — deliberately small
ADR-0008 always framed cloud as optional team sync and admin, never the source of truth for project intelligence. Sprint 10 delivers the first concrete step from that ADR's follow-up list — "Cloud API sketch and workspace CRUD" — as a new app, apps/cloud-api (@meronq/cloud-api).
It is a plain Node HTTP service over the team model already typed in @meronq/product:
Organization → Workspace → ProjectLink
└──────→ WorkspaceMember (owner/admin/member/viewer)
- Full CRUD for organizations, workspaces, project links, and members
- Referential integrity with cascade deletes and per-org slug uniqueness
404/400error semantics, a request body cap, and store + HTTP tests
What it is not: there is no persistence, authentication, or hosting. Those stay open questions in ADR-0008 (end-to-end encryption, region/hosting, GitHub OAuth) and deserve their own ADR before a real implementation. Local .meronq/ remains authoritative for every project; the cloud would only ever hold workspace metadata.
This is a spike on purpose: enough to make the shape real, small enough to throw away.
The through-line
Each sprint has pushed the same idea from a different angle:
- Local-first — nothing above requires an account or a server; the desktop and MCP work offline against local SQLite.
- Memory-driven — search, handshake, and ranking all read from the Canonical Engineering Model, not ad-hoc prompts.
- AI as a team member — the MCP surface makes that memory usable by any AI client, and the multi-project registry lets one server cover a whole workspace.
Sprint 11 — next
Sprint 10 closes the desktop packaging track and opens the cloud question. Sprint 11 is where we decide how much of that cloud sketch becomes real — starting with the persistence and auth ADR the spike deliberately deferred.
Follow along
Sprint 9 put Meronq on the desktop. Sprint 10 made it self-sufficient — and drew the first line toward the cloud.