michel-run-local-dev-stacklisted
Install: claude install-skill PackmindHub/packmind
# Run the Packmind local dev stack
One reliable way to bring Packmind up locally, confirm it's serving, and take it back down. Other skills (`michel-ui-demo-recorder`, `michel-cli-demo-recorder`) and the Michel worker prompt all defer here instead of carrying their own copy — so the lifecycle stays correct in one place.
## What the stack is
Defined by `docker-compose.yml` at the repo root. Every service runs from the base `node:24.15.0-alpine` image with the repo bind-mounted at `/packmind` — there is **no app image to build**. Code runs via `nx serve`/`nx dev` with polling file-watchers, so **source edits hot-reload**; you almost never pass `--build`.
### What is reachable from the host — read this before you `curl` anything
**Only these ports are published to the host:** `4200` (frontend), `443` (nginx), `5432` (postgres), `6379` (redis), `2345` (pgAdmin). The `backend` and `mcp-server` containers have **no `ports:` mapping** — their ports (`3000` and `3001`) exist only inside the compose network. **`curl localhost:3000` always fails from the host. This is the #1 runtime trap — do not fall into it.**
You reach the API and MCP from the host **through the frontend**: the Vite dev server on `:4200` proxies `/api` → `backend:3000` and `/mcp` → `mcp-server:3001` (see `apps/frontend/vite.config.ts`). nginx on `:443` proxies everything to the frontend, so it works through `:443` too.
| Service | How to reach it from the host