PMO - Process Manager Omni
A lightweight process manager inspired by PM2, but designed primarily for development environments.
Features
start,stop, andrestartservices, similar to PM2- Simple YAML configuration
- Real-time logs with highlight
- Automatic log rotation per run (keeps up to 30 log files)
- Environment variable support
- Automatic
.envfile loading - Multi-machine support with hostname-specific directories (for shared NAS environments)
- Service configuration inheritance via
extends
Installation
pip install pmo
Usage
Quick Start
- Create a
pmo.ymlfile in your project:
# Simple format, just like procfile
web-server: node server.js
# Detailed format
api-server:
cmd: python api.py
cwd: ./api
env:
NODE_ENV: development
- Optional: Create a
.envfile for shared environment variables:
# This will apply to all services
DATABASE_URL=postgres://localhost:5432/mydb
DEBUG=true
- Start your services:
pmo start all
# or start specific services
pmo start web-server api-server
- List your services:
pmo ls
Output:
+---------------------------------------------------------------------------------------------------------------------+
| id | name | pid | uptime | status | cpu | mem | gpu mem | gpu id | user |
|------+-----------+------------+----------+-------------+------------+------------+------------+--------+------------|
| 0 | vllm-1 | 482950 | 25m 15s | running | 0.0% | 1mb | 20632 MiB | 0 | simpx |
| 1 | sglang-1 | 482952 | 25m 15s | running | 0.0% | 1mb | 20632 MiB | 1 | simpx |
| 2 | vllm-2 | 482954 | 25m 15s | running | 0.0% | 1mb | 20632 MiB | 2 | simpx |
+---------------------------------------------------------------------------------------------------------------------+
Commands
pmo start [all | service-name | service-id]
pmo stop [all | service-name | service-id]
pmo restart [all | service-name | service-id]
pmo logs [all | service-name | service-id]
pmo flush [all | service-name | service-id]
pmo dry-run [all | service-name | service-id]
pmo ls
pmo status [all | service-name | service-id]
Configuration
The pmo.yml file supports two formats:
- Simple:
service-name: command - Detailed:
service-name: cmd: command cwd: working directory (optional) env: KEY: value
Extending Services
Services can reuse definitions with extends:
base:
cmd: python app.py
env:
DEBUG: true
worker:
extends: base
cmd: python worker.py
env:
WORKER: yes
Environment variables are merged recursively.
PMO manages runtime data in the .pmo directory with logs and PID files.
Multi-machine Support
PMO now supports multiple machines sharing the same configuration through a shared filesystem (like NAS). Each machine will store its process information in a hostname-specific directory:
.pmo/
hostname1/
pids/
logs/
hostname2/
pids/
logs/
This allows processes on different machines to be managed separately even when sharing the same configuration files.
License
MIT
Metadata
Release files for pmo 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pmo-0.5.2.tar.gz | 40.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pmo-0.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 67.2 kB
Release files / pmo-0.5.2.tar.gz
| Download URL | pmo-0.5.2.tar.gz |
|---|---|
| Size | 40.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
049480410c1241bf36e0bad4d46685839dee0b5b065885f71f66aa46dfdae81b
|
|
BLAKE2b-256 checksum How to use checksums |
d079d4b2932f6644921fd254fd200191d96b1233ce52cbfb69b0884a5a438e1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pmo-0.5.2-py3-none-any.whl
| Download URL | pmo-0.5.2-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c805c6d799bdac9146d141deef27efa2274ac23a4edc9dd5c86a443d0186586d
|
|
BLAKE2b-256 checksum How to use checksums |
efb6cae3385617510b0ecaca0a3ccf26c6636aa3075096a0ac4ada559eee630d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|