Skip to main content

simple process manager

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pmo-0.5.2.tar.gz (40.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pmo-0.5.2-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file pmo-0.5.2.tar.gz.

File metadata

  • Download URL: pmo-0.5.2.tar.gz
  • Upload date:
  • Size: 40.9 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for pmo-0.5.2.tar.gz
Algorithm Hash digest
SHA256 049480410c1241bf36e0bad4d46685839dee0b5b065885f71f66aa46dfdae81b
MD5 a67d3b0b6f90fdd397753a14aa28b2ce
BLAKE2b-256 d079d4b2932f6644921fd254fd200191d96b1233ce52cbfb69b0884a5a438e1f

See more details on using hashes here.

File details

Details for the file pmo-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: pmo-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for pmo-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c805c6d799bdac9146d141deef27efa2274ac23a4edc9dd5c86a443d0186586d
MD5 66c8441010ba147f6d66c9059b5d5a81
BLAKE2b-256 efb6cae3385617510b0ecaca0a3ccf26c6636aa3075096a0ac4ada559eee630d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page