Skip to main content

PMDaemon v0.1.0 - Initial Release

Shawn McAllister
Lead Developer

We're thrilled to announce the initial release of PMDaemon, a high-performance process manager built in Rust that takes inspiration from PM2 while adding innovative features that exceed the original.

🎯 Why PMDaemon?​

PMDaemon was created to address the limitations of existing process managers while providing a familiar interface for PM2 users. Built with Rust, it offers memory safety, blazing performance, and advanced features not available in other process managers.

πŸš€ Core Features​

Complete Process Management​

  • Lifecycle management: Full control over process start, stop, restart, reload, and delete operations
  • Process clustering: Automatic load balancing across multiple instances
  • Auto-restart on crash: Configurable limits and intelligent restart logic
  • Graceful shutdown: Proper signal handling (SIGTERM/SIGINT) for clean process termination
  • Configuration persistence: Multi-session support with persistent process configurations

Advanced Port Management (Beyond PM2)​

One of PMDaemon's standout features is its sophisticated port management system:

  • Port range distribution: Automatically distribute ports across cluster instances (--port 3000-3003)
  • Auto-assignment from ranges: Smart port allocation (--port auto:5000-5100)
  • Built-in conflict detection: Prevents port conflicts before they happen
  • Runtime port overrides: Change ports without modifying configuration files
  • Port visibility: See assigned ports in process listings
# Start a cluster with automatic port distribution
pmdaemon start app.js --instances 4 --port 3000-3003

# Auto-assign ports from a range
pmdaemon start api.js --port auto:8000-8100

Real-time Monitoring​

  • System metrics: CPU, memory, uptime tracking with system-wide statistics
  • Load average monitoring: Track system load across 1, 5, and 15-minute intervals
  • Memory limit enforcement: Automatic restart when processes exceed memory limits
  • Process health checks: Built-in health monitoring with auto-restart capabilities

Professional CLI Interface​

PMDaemon provides a familiar yet enhanced command-line experience:

  • PM2-compatible commands: All the commands you know and love
  • Enhanced display: Color-coded statuses and professional table formatting
  • Rich monitoring: Real-time process monitoring with system overview
# Familiar PM2-style commands
pmdaemon start app.js --name my-app --instances 2
pmdaemon list
pmdaemon monit
pmdaemon logs my-app --follow

Web API & WebSocket Support​

  • REST API: Complete process management via HTTP endpoints
  • PM2-compatible responses: Drop-in replacement for PM2 API consumers
  • Real-time updates: WebSocket support for live process monitoring
  • Security: CORS support and proper security headers

Robust Log Management​

  • Separate streams: Individual stdout/stderr file handling
  • PID file management: Proper process tracking and cleanup
  • Log viewing: Built-in log viewing and following capabilities
  • Graceful handling: Robust error handling for missing or corrupted log files

πŸ—οΈ Technical Excellence​

Built with Rust​

  • Memory safety: Zero-cost abstractions without garbage collection overhead
  • Performance: Native performance with minimal resource usage
  • Concurrency: Async/await architecture using Tokio for efficient I/O

Modern Architecture​

  • Web server: Powered by Axum for high-performance HTTP handling
  • System monitoring: Leverages sysinfo for cross-platform system metrics
  • Cross-platform: Full support for Linux, macOS, and Windows

Comprehensive Testing​

  • 158 comprehensive tests: Unit, integration, end-to-end, and documentation tests
  • Complete documentation: Full Rust documentation with examples
  • Usage guides: Comprehensive examples and migration guides

πŸš€ Getting Started​

Installation​

# Install from crates.io
cargo install pmdaemon

# Or build from source
git clone https://github.com/entrepeneur4lyf/pmdaemon.git
cd pmdaemon
cargo build --release

Quick Start​

# Start a simple application
pmdaemon start app.js --name my-app

# Start a cluster with port management
pmdaemon start server.js --instances 4 --port 3000-3003

# Monitor processes in real-time
pmdaemon monit

# View and follow logs
pmdaemon logs my-app --follow

Migration from PM2​

PMDaemon is designed to be a drop-in replacement for most PM2 use cases. Check out our migration guide for detailed instructions.

πŸ—ΊοΈ What's Next​

This initial release establishes PMDaemon as a robust, production-ready process manager. Future releases will continue to expand capabilities while maintaining the familiar interface that makes PMDaemon easy to adopt.

πŸ™ Community​

We're excited to see what the community builds with PMDaemon. Join us:

  • GitHub: entrepeneur4lyf/pmdaemon
  • Issues: Report bugs and request features
  • Discussions: Share your use cases and get help

Release: v0.1.0