Skip to content

Bes-js/yro

Repository files navigation


YRO
Runtime Edition

Downloads per Year npm version


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       # Display APP-NAME logs
$ yro logs --json         # JSON output
$ yro logs --format       # Formated output

$ yro flush               # Flush all logs
$ yro reloadLogs          # Reload all logs

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

# Generate Startup Script
$ yro startup

# Freeze your process list across server restart
$ yro save

# Remove Startup Script
$ yro unstartup

More 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 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.

About

Production process manager for Node.JS applications with a built-in load balancer.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published