PM2 is a production process manager for Node.js applications with built-in load balancing, monitoring, and deployment capabilities. It keeps applications alive forever, enables zero-downtime reloads, and provides comprehensive system administration features. The architecture features a daemon-based design with CLI and programmatic APIs communicating via IPC (pm2-axon). Key capabilities include process clustering, log management, metrics collection, Docker integration, startup script generation, and a plugin system for extensibility. The codebase demonstrates strong engineering practices with internalized dependencies to reduce supply chain risk, comprehensive test coverage, and active maintenance with regular updates supporting Node.js >=18 and Bun.
This repository is a collection of shell scripts for installing, upgrading, and managing MagicMirrorΒ², an open-source smart mirror platform. The scripts automate the setup of Node.js, npm, pm2, and the MagicMirror application on Raspberry Pi and other Linux systems, as well as macOS. They handle tasks such as initial installation, version upgrades, pm2 process management, screensaver disabling, disk cleanup, and switching to browser-over-server mode. The scripts are designed to be executed via curl pipe to bash, ensuring users always run the latest version. While primarily operational, the cleanup.sh script stands out as a well-structured, reusable utility for reclaiming disk space on any system.
Supervizer is a Node.js process manager that provides CLI and RESTful API interfaces for spawning, stopping, and managing Node.js applications. It follows a client-server architecture where the supervizer-client communicates with a supervizer-server via HTTP to manage application processes. The server maintains application state in memory, supports process monitoring, file watching for automatic restarts, grouping of applications, and secure authentication. Key features include keeping applications alive on crash, resource monitoring (CPU/memory), log and PID file management, and JSON-based configuration persistence.