Runnem
Light-weight service manager for local project development. Makes switching between projects a breeze.
Why Runnem?
- One command to rule them all – start, stop and inspect every service in your project without memorising half-a-dozen shell scripts.
- Native speed & tooling – runs processes directly (no mandatory Docker), leveraging battle-tested GNU screen under the hood.
- Port-safe project switching – makes it easy to switch between projects while avoiding port clashes.
Installation
pip install runnem # Python ≥ 3.8 on Linux, macOS or WSL-enabled Windows
Quick start
# 1 · Create a config for the current directory
runnem init myproject # omit the name to use the folder name
# 2 · Edit runnem.yaml and add your services
$EDITOR runnem.yaml
# 3 · Launch everything
runnem up # starts all services in the right order
# 4 · Check what’s running
runnem list # or: runnem ls
# 5 · Stop when you’re done
runnem down # stops every service cleanly
Tip: Need only one service? Pass its name to up or down, e.g.
runnem up api.
Configuration example (runnem.yaml)
project_name: myproject # required
services:
database:
command: cd database && docker-compose up
url: postgresql://localhost:5432
api:
command: cd api && poetry run uvicorn main:app --reload --port 8000
url: http://localhost:8000/health
depends_on: [database]
frontend:
command: cd frontend && npm run dev
url: http://localhost:3000
depends_on: [api]
| Key | Required | Description |
|---|---|---|
command |
✅ | Shell command executed inside its own screen session. |
url |
Health-check endpoint and source of the port number; Runnem waits for it to respond before starting dependants. | |
depends_on |
List of service names that must be running first. |
Ports are inferred from the
url– specify one if you want automatic conflict resolution.
Everyday commands
| Task | Command |
|---|---|
| Start all services | runnem up |
| Start one service | runnem up <service> |
| Stop all services | runnem down |
| Stop one service | runnem down <service> |
| Start service + logs | runnem run <service> |
| Restart service + logs | runnem rerun <service> |
| View live logs | runnem log <service> |
| List status | runnem list (or ls) |
| Free a busy port | runnem kill <port> |
Multiple projects
Runnem looks for the nearest runnem.yaml when you run a command.
If services from another project are still running you’ll see a warning and can stop them with:
runnem down # executed from *any* project directory
Contributing
Found a bug, want a feature or to polish the docs? PRs are welcome!
- Fork the repo &
git cloneit. pip install -e .inside a virtualenv.- Create a feature branch (
git switch -c my-fix). - Commit with clear messages and open a PR.
License
MIT © 2025 Runnem contributors
Metadata
Release files for runnem 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| runnem-0.1.4.tar.gz | 18.1 kB | Without provenance | Details for runnem-0.1.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| runnem-0.1.4-py3-none-any.whl | Python 3 | none | any | Details for runnem-0.1.4-py3-none-any.whl |
Total release size: 30.2 kB
Release files / runnem-0.1.4.tar.gz
| Download URL | runnem-0.1.4.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9864b714f3b802acf56fe28d130d0b8fa8320b8437af552e850f7c7f034155bd
|
|
BLAKE2b-256 checksum How to use checksums |
72063cf6e8f9013a139ee508c66427316ec11a39fdc91c94fd0a6a933f843d42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.4
|
Release files / runnem-0.1.4-py3-none-any.whl
| Download URL | runnem-0.1.4-py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
418eef083b4aac0c0291d3846592610f9edc5178ef0516ad6629394ed76243dc
|
|
BLAKE2b-256 checksum How to use checksums |
6c34e1de3d7f72067953f2e5e711179975073e7bd690b868787386fc397c713e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.4
|
Security for runnem 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.