| name | nova-deploy-local |
| description | Run Nova locally end-to-end (Docker Compose + PM2 + dev-entrypoint.sh). Use when the user says "how do I run this", "start Nova", "make dev", "spin it up locally", or "I just cloned the repo". Goes through pre-flight (Docker, PM2, uv, pnpm checks) → `make dev` → nginx :2026 + gateway :8001 + frontend :3000 → verification (curl `/`, curl `/health`, curl `/workspace/chats/<id>`). The canonical local dev path: `make dev` starts `docker compose -f docker/docker-compose-dev.yaml -f docker/docker-compose.dood.yaml up` under PM2 supervision. Triggers on phrases like "run Nova locally", "make dev", "I just cloned the repo", "first time setup". |
nova-deploy-local
Pre-flight (5 min)
docker --version
which uv && uv --version
which node && node --version
which pnpm
which pm2 && pm2 --version
which gh && gh --version
Deploy
cp config.example.yaml config.yaml
cp .env.example .env
make install
cd backend && uv sync --all-packages
cd frontend && pnpm install
make dev
pm2 start ecosystem.config.js
./scripts/start-daemon.sh
Verify
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:2026/
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8001/health
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:3000/
curl -s -o /dev/null -w "%{http_code}\n" \
http://localhost:2026/workspace/chats/bbb04f5d-1e96-4211-bbc2-01972b7ac13e
Stop
pm2 stop deerflow
./scripts/serve.sh --stop
docker compose -f docker/docker-compose-dev.yaml -f docker/docker-compose.dood.yaml -p deer-flow-dev down
Common issues
- Port 2026 already in use:
lsof -i :2026; kill the process or change nginx port
- Config.yaml not found: the gateway app raises
FileNotFoundError: 'config.yaml' file not found in the project root or legacy backend/repository root locations (per app_config.py:205)
- AIO container won't start:
docker logs deer-flow-aio-{uuid} --tail 30; check enterprise-public-cn-beijing.cr.volces.com/vefaas-public/all-in-one-sandbox:latest is pullable
- PM2 doesn't restart on crash:
pm2 status deerflow; check ecosystem.config.js for autorestart: true
Anti-patterns
- ❌ Don't run
uvicorn app.gateway.app:app directly — bypasses PM2 supervision and the dood overlay
- ❌ Don't edit
config.yaml while Nova is running — mtime-based hot reload exists but doesn't cover all fields
- ❌ Don't use
docker compose down -v — deletes the AIO container cache