Skip to main content
The most sophisticated ventures use a workspace orchestrator: a thin parent repo that owns only cross-cutting tooling and turns a set of independent child repos into a single, one-command local platform. GreekCore v2 is the fullest example.

The single front door

mise.toml is the one entry point. It pins the toolchain (Node 22, pnpm 9.15.0, process-compose) and defines every dev task for every child repo. A clean clone goes:

How the pieces fit

repos.manifest

Clones the independent GitHub repos (api, web, infra, docs) — gitignored, not submodules. The workspace owns only cross-cutting tooling.

process-compose + Docker

Supervise local Postgres (RLS roles, pgbouncer), Drizzle migrations, and seeds, then launch the apps.

Setup as a DAG

mise run setup and mise run dev enforce an ordered dependency graph rather than a flat script:
1

Clone & install

Read repos.manifest, clone missing repos, install node packages.
2

Fan out secrets

Distribute secrets from .env.workspace into each child’s .env.
3

Bring up data

Health-check the Postgres container, then run migrations and seeds.
4

Build in order

Compile shared packages (@greekcore/db, @greekcore/ui, @greekcore/auth-web) in dependency order.
5

Launch

Start the API and web apps simultaneously under process-compose.

Skills as pinned dependencies

skills-lock.json pins external agent skills by content hash — third-party skills are vendored and pinned just like package dependencies.

Clerk skills

Auth-related agent skills, content-pinned.

GetStream skills

stream, stream-builder, stream-react, stream-docs — pinned by hash.
Pinning skills by content hash means an agent’s available capabilities are reproducible and reviewable — the same idea as a lockfile, applied to agent tooling.

Why this shape

Thin workspace, real repos

Child repos stay independently versioned and deployable; the workspace never becomes a monorepo bottleneck.

Zero-config onboarding

One mise run setup && mise run dev brings up the database, migrations, seeds, backend, and every frontend.
Last modified on June 22, 2026