Dev Servers
SnakeFlow can manage any number of dev servers — Next.js, Vite, FastAPI, Django, Rails, Go, Rust, PHP — any runtime, any command.
Each server runs in a named VS Code terminal and is monitored via TCP port check + terminal presence. Status is visible in the sidebar and status bar in real time.
Server Configuration
Add servers to .vscode/settings.json:
"devManager.project.servers": [ { "id": "web", "label": "Frontend", "command": "npm run dev", "path": "", "port": 3000 }, { "id": "api", "label": "API Server", "command": "python manage.py runserver 8000", "path": "backend", "port": 8000 }]Server Fields
| Field | Required | Description |
|---|---|---|
id | ✅ | Unique identifier — used as terminal name prefix |
label | ✅ | Display name in sidebar and status bar |
command | ✅ | Shell command to start the server |
path | — | Relative working directory from project root ("" = root) |
port | — | TCP port to monitor for live status (0 = no monitoring) |
Commands
| Action | Keybinding | Menu |
|---|---|---|
| Start all servers | Ctrl+M S | Main menu → Start Servers |
| Stop all servers | Ctrl+M Q | Main menu → Stop Servers |
| Restart all servers | Ctrl+M R | Main menu → Restart Servers |
| Start/stop individual | — | Sidebar → click server |
Examples
Single-app (Node.js)
[ { "id": "web", "label": "Dev Server", "command": "npm run dev", "path": "", "port": 3000 }]Monorepo (Turborepo / pnpm)
[ { "id": "web", "label": "Frontend", "command": "pnpm run dev", "path": "apps/web", "port": 5173 }, { "id": "api", "label": "API", "command": "pnpm run dev", "path": "apps/api", "port": 8787 }, { "id": "inngest", "label": "Inngest", "command": "pnpm dlx inngest-cli@latest dev", "path": "apps/web", "port": 8288 }]Python + React
[ { "id": "frontend", "label": "React", "command": "npm run dev", "path": "frontend", "port": 3000 }, { "id": "backend", "label": "Django", "command": "python manage.py runserver 8000", "path": "backend", "port": 8000 }, { "id": "celery", "label": "Celery Worker", "command": "celery -A config worker -l info", "path": "backend", "port": 0 }]Go microservices
[ { "id": "gateway", "label": "API Gateway", "command": "go run ./cmd/gateway", "path": "services/gateway", "port": 8080 }, { "id": "auth", "label": "Auth", "command": "go run ./cmd/auth", "path": "services/auth", "port": 8081 }]Status Monitoring
Server status is shown in:
- Sidebar — colored icon next to each server name
- Status bar — per-server indicator at the bottom of the IDE
Status uses a combined check: TCP port open AND the terminal is still running. This avoids false positives from external processes using the same port.
| Status | Meaning |
|---|---|
| 🟢 Running | Port is open and terminal is alive |
| 🔴 Stopped | Port is closed or terminal was closed |
| ⚪ No port | Server has port: 0 — terminal presence only |