YRO
Runtime Edition
YRO is a production process manager for Node.js/Bun applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.
Starting an application in production mode is as easy as:
$ yro start app.js
Official Yro & PM2 website: https://pm2.keymetrics.io/
Works on Linux (stable) & macOS (stable) & Windows (stable). All Node.js versions are supported starting Node.js 12.X and Bun since v1
Installing YRO
With NPM
$ npm install yro -g
With Bun
$ bun install yro -g
Please note that you might need to symlink node to bun if you only want to use bun via sudo ln -s /home/$USER/.bun/bin/bun /usr/bin/node
You can install Node.js easily with NVM or FNM or install Bun with curl -fsSL https://bun.sh/install | bash
Start an application
You can start any application (Node.js, Bun, and also Python, Ruby, binaries in $PATH...) like that:
$ yro start app.js
Your app is now daemonized, monitored and kept alive forever.
Managing Applications
Once applications are started you can manage them easily:
To list all running applications:
$ yro list
Managing apps is straightforward:
$ yro stop [app_name|namespace|id|'all'|json_conf]
$ yro restart [app_name|namespace|id|'all'|json_conf]
$ yro delete [app_name|namespace|id|'all'|json_conf]
To have more details on a specific application:
$ yro describe <id|app_name>
To monitor logs, custom metrics, application information:
$ yro monit
More about Process Management
Cluster Mode: Node.js Load Balancing & Zero Downtime Reload
The Cluster mode is a special mode when starting a Node.js application, it starts multiple processes and load-balance HTTP/TCP/UDP queries between them. This increase overall performance (by a factor of x10 on 16 cores machines) and reliability (faster socket re-balancing in case of unhandled errors).
Starting a Node.js application in cluster mode that will leverage all CPUs available:
$ yro start api.js -i <processes>
<processes> can be 'max', -1 (all cpu minus 1) or a specified number of instances to start.
Zero Downtime Reload
Hot Reload allows to update an application without any downtime:
$ yro reload all
More informations about how YRO & PM2 make clustering easy
Container Support
With the drop-in replacement command for node, called yro-runtime, run your Node.js application in a hardened production environment.
Using it is seamless:
RUN npm install yro -g
CMD [ "yro-runtime", "npm", "--", "start" ]
Read More about the dedicated integration
Host monitoring speedbar
YRO allows to monitor your host/server vitals with a monitoring speedbar.
To enable host monitoring:
$ yro set YRO:sysmonit true
$ yro update
Monitor all processes launched straight from the command line:
$ yro monit
Log Management
To consult logs just type the command:
$ yro logs
Standard, Raw, JSON and formated output are available.
Examples:
$ yro logs APP-NAME
$ yro logs --json
$ yro logs --format
$ yro flush
$ yro reloadLogs
To enable log rotation install the following module
$ yro install pm2-logrotate
More about log management
Startup Scripts Generation
YRO can generate and configure a Startup Script to keep YRO and your processes alive at every server restart.
Init Systems Supported: systemd, upstart, launchd, rc.d
$ yro startup
$ yro save
$ yro unstartup
More about Startup Scripts Generation
Updating YRO
$ npm install yro@latest -g
$ yro update
YRO updates are seamless
Thanks in advance and we hope that you like YRO!
License
YRO is forked version of PM2 made available under the terms of the GNU Affero General Public License 3.0 (AGPL 3.0).
For other licenses contact us.