Skip to main content

PMO - Process Manager Omni

A lightweight process manager inspired by PM2, but designed primarily for development environments.

Features

  • start, stop, and restart services, 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 .env file loading
  • Multi-machine support with hostname-specific directories (for shared NAS environments)
  • Service configuration inheritance via extends

Installation

pip install pmo

Usage

Quick Start

  1. Create a pmo.yml file 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
  1. Optional: Create a .env file for shared environment variables:
# This will apply to all services
DATABASE_URL=postgres://localhost:5432/mydb
DEBUG=true
  1. Start your services:
pmo start all
# or start specific services
pmo start web-server api-server
  1. 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:

  1. Simple: service-name: command
  2. 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)

Source distribution for pmo 0.5.2
File Size Uploaded
pmo-0.5.2.tar.gz 40.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pmo 0.5.2
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.17

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page