Package Exports
- yro
- yro/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (yro) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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.jsOfficial 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 -gWith Bun
$ bun install yro -gPlease 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.jsYour 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 listManaging 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 monitCluster 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 allMore 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 updateMonitor all processes launched straight from the command line:
$ yro monitLog Management
To consult logs just type the command:
$ yro logsStandard, Raw, JSON and formated output are available.
Examples:
$ yro logs APP-NAME # Display APP-NAME logs
$ yro logs --json # JSON output
$ yro logs --format # Formated output
$ yro flush # Flush all logs
$ yro reloadLogs # Reload all logsTo enable log rotation install the following module
$ yro install pm2-logrotateStartup 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
# Generate Startup Script
$ yro startup
# Freeze your process list across server restart
$ yro save
# Remove Startup Script
$ yro unstartupMore about Startup Scripts Generation
Updating YRO
# Install latest YRO version
$ npm install yro@latest -g
# Save process list, exit old YRO & restore all processes
$ yro updateYRO 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.