Yury KosyakovEvery project I work on has 5-10 services. Backend, frontend, workers, databases, webhooks. The...
Every project I work on has 5-10 services. Backend, frontend, workers, databases, webhooks. The "getting started"
routine looks something like:
cd backend && npm run dev
cd frontend && npm run dev
cd worker && npm run dev
docker run -p 5432:5432 postgres
Then someone on the team uses the same port, or you switch between projects and everything collides, or you forget
to start the worker and spend 20 minutes debugging why jobs aren't processing.
I got tired of this. So I built https://github.com/ykosyakov/simple-local.
Point it at a project folder. AI analyzes your codebase and discovers:
Then you get a single dashboard to manage everything.
No more port conflicts
Every service gets a unique port allocated automatically. If your backend and your colleague's backend both
default to :3000 — doesn't matter. Simple Local remaps them and updates the environment variables so services can
still find each other.
Native or container — per service
This is the big one. Docker Compose forces everything into containers. But sometimes you want:
Simple Local lets you toggle each service independently. When you switch to container mode, it auto-generates a
devcontainer.json with the right base image, port forwarding, and source mounts. No Dockerfile writing.
MCP server for AI agents
This is the feature I didn't know I needed until I had it. Simple Local exposes an MCP server, so AI coding agents
(Claude Code, Cursor, Windsurf) can:
"Start the backend and check if it's healthy"
"Restart the API server and show me the last 20 log lines"
"What services are running?"
Setup is one command:
claude mcp add --transport http simple-local http://localhost:19275/mcp
Now your AI agent has full visibility into your local infrastructure.
Manual config when you want control
AI discovery handles most setups, but you can also write the config yourself:
{
"name": "my-project",
"services": [
{
"id": "backend",
"name": "Backend API",
"path": "./packages/backend",
"command": "npm run dev",
"port": 3000,
"env": {
"DATABASE_URL": "postgresql://localhost:5432/mydb"
},
"active": true,
"mode": "native"
},
{
"id": "frontend",
"name": "Frontend App",
"path": "./packages/frontend",
"command": "npm run dev",
"port": 3001,
"env": {
"API_URL": "http://localhost:${services.backend.port}"
},
"dependsOn": ["backend"],
"active": true,
"mode": "native"
}
]
}
Notice ${services.backend.port} — environment variables can reference other services' ports, so everything stays
wired up even when ports get remapped.
Here's a 1-minute video showing the full flow:
Try it
It's free, open source, and runs 100% locally. No cloud, no accounts.
Would love to hear what you think — what would make this useful for your setup?