Start all your dev services with one command
Project description
devlauncher
Start all your dev services with one command.
The Problem
Every multi-service project means opening multiple terminals, remembering startup commands, and dealing with silent port conflicts. devlauncher runs everything in one place.
Install
pip install devlauncher
Requires Python 3.10+.
Quickstart
Zero-config — run in any project root:
cd my-project
devlauncher
devlauncher scans your project, detects services (Vite, FastAPI, Django, etc.), shows you what it found,
and asks once to confirm. On confirmation it writes a dev.toml and starts everything. It never
asks again.
Manual — create a dev.toml:
[services.api]
cmd = "uvicorn main:app --reload --port {self.port}"
port = 8000
cwd = "api"
[services.web]
cmd = "npm run dev -- --port {self.port}"
port = 5173
cwd = "frontend"
env = { VITE_API_URL = "http://localhost:{api.port}" }
Then run:
devlauncher
How It Works
- Scans subdirectories for framework signals (package.json, requirements.txt, Cargo.toml, etc.)
- Infers services by role (frontend/backend), shows a discovery report
- Prompts once to confirm; writes
dev.tomlso it never asks again - Runs dependency install phase (
npm install,pip install, etc.) if needed - Checks ports on both IPv4 and IPv6 — finds a free port if your preferred one is taken
- Starts all services with color-coded, prefixed log output
- Shuts down cleanly on Ctrl+C (SIGTERM → 5s timeout → SIGKILL)
Interactive Commands
Once services are running, press a key:
| Key | Action |
|---|---|
r |
Soft restart — kill & restart services (no reinstall) |
R |
Hard restart — reinstall deps, re-resolve ports, restart |
s |
Status — show PIDs, ports, uptime, running/crashed |
l |
Filter logs — cycle: all → [SERVICE] → all |
q / Ctrl+C |
Quit — graceful shutdown |
Frontend servers (Vite, Next.js, etc.) handle hot-reload automatically — r is mainly useful for backend services.
Agent Awareness (Claude Code)
devlauncher registers an MCP server with Claude Code on first run. When you open a Claude Code session in a project where devlauncher is running, the agent can:
- Call
devlauncher_status()to see which services are running, on which ports — so it doesn't start duplicates - Call
devlauncher_logs(service, lines)to read recent log output for debugging
Zero configuration required. Works automatically after pip install devlauncher.
See docs/mcp-server.md for full details.
Configuration (dev.toml)
All fields:
[services.<name>]
cmd = "command to start this service" # required
port = 8000 # required; preferred port
cwd = "subdirectory" # optional; default is project root
install_cmd = "pip install -r requirements.txt" # optional; runs when deps are missing
env = { KEY = "value" } # optional; supports port refs
Port references — resolved after conflict detection, so they always reflect the actual port in use:
{self.port}— this service's resolved port{api.port}— another service's resolved port (use the service name as the key)
Features
- Zero-config auto-discovery (Vite, Next.js, Nuxt, FastAPI, Django, Flask, Go, Rust)
- Dual IPv4 + IPv6 port conflict detection (handles Node.js 18+ IPv6-default binding)
- Dependency install phase with per-service
install_cmd - Port reference interpolation (
{self.port},{api.port}) - Color-coded, prefixed log output per service
- Graceful shutdown (SIGTERM → 5s timeout → SIGKILL)
- Cross-platform: macOS, Linux, Windows
--version/-Vflag- MCP server for Claude Code agent awareness (zero config)
- Dependencies:
mcp(all versions),tomli(Python 3.9–3.10 only)
Supported Frameworks (auto-discovery)
| Role | Detected |
|---|---|
| Frontend | Vite, Next.js, Nuxt, Angular, SvelteKit |
| Backend | FastAPI, Django, Flask, Go, Rust (Cargo) |
| Package managers | npm, yarn, pnpm, bun, pip, go mod |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devlauncher-0.2.0.tar.gz.
File metadata
- Download URL: devlauncher-0.2.0.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c32a9d0c881e3f4c800f4b0b187977174c2583c3a496eb783e0b889da7c4a5d
|
|
| MD5 |
0a7dc61f005427346ab784c2ebf65ae7
|
|
| BLAKE2b-256 |
794d3a0607b78c26138140704a4c5ee9f73b3d20fd14fc07e8392c864ea11a8b
|
Provenance
The following attestation bundles were made for devlauncher-0.2.0.tar.gz:
Publisher:
publish.yml on the-non-expert/devlauncher
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devlauncher-0.2.0.tar.gz -
Subject digest:
6c32a9d0c881e3f4c800f4b0b187977174c2583c3a496eb783e0b889da7c4a5d - Sigstore transparency entry: 1180216431
- Sigstore integration time:
-
Permalink:
the-non-expert/devlauncher@ba0c67b889c6b8755ea03c03ee00af8a878e3b20 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/the-non-expert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ba0c67b889c6b8755ea03c03ee00af8a878e3b20 -
Trigger Event:
push
-
Statement type:
File details
Details for the file devlauncher-0.2.0-py3-none-any.whl.
File metadata
- Download URL: devlauncher-0.2.0-py3-none-any.whl
- Upload date:
- Size: 24.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee036c042ab0eb32b8c4a2fdee40ba3f46f35b87644b8a49c118e6cf5c5215b6
|
|
| MD5 |
feb9a4536e77415284cbf4dbca5d409b
|
|
| BLAKE2b-256 |
a6ec9df83ea0e092cd44112f7c9d0981b05cd265f95439a4885bddc681af3050
|
Provenance
The following attestation bundles were made for devlauncher-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on the-non-expert/devlauncher
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devlauncher-0.2.0-py3-none-any.whl -
Subject digest:
ee036c042ab0eb32b8c4a2fdee40ba3f46f35b87644b8a49c118e6cf5c5215b6 - Sigstore transparency entry: 1180216437
- Sigstore integration time:
-
Permalink:
the-non-expert/devlauncher@ba0c67b889c6b8755ea03c03ee00af8a878e3b20 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/the-non-expert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ba0c67b889c6b8755ea03c03ee00af8a878e3b20 -
Trigger Event:
push
-
Statement type: