Skip to content

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

FieldRequiredDescription
idUnique identifier — used as terminal name prefix
labelDisplay name in sidebar and status bar
commandShell command to start the server
pathRelative working directory from project root ("" = root)
portTCP port to monitor for live status (0 = no monitoring)

Commands

ActionKeybindingMenu
Start all serversCtrl+M SMain menu → Start Servers
Stop all serversCtrl+M QMain menu → Stop Servers
Restart all serversCtrl+M RMain menu → Restart Servers
Start/stop individualSidebar → 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.

StatusMeaning
🟢 RunningPort is open and terminal is alive
🔴 StoppedPort is closed or terminal was closed
⚪ No portServer has port: 0 — terminal presence only