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_search tool (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.json plus hybrid session selection (workspace path → active project → single-project auto-activate).
  • Cloud workspace API spike (CRUD only) — a first sketch of the future cloud_api surface (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 / 400 error 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.

← Back to blog