1.1.8 • Public • Published

    Process Management Tool | Auto Restarts | Advanced Events | And More Warning 1.1.1 Breaking API Changes


    A process management tool. Events, status, cluster, and automatic restarts.


    npm install revive


    const Revive = require('revive');
    const options = {
        name: 'test',
        cmd: process.execPath,
        arg: ['app.js'],
        env: { PORT: 8000 },
        cwd: '/home/user/code/node/app/.',
        cluster: true,
        instances: 2,
        stdout: '/logs/stdout.log',
        stderr: '/logs/stderr.log',
        sleepTime: 1000,
        crashTime: 6 * 1000,
        maxCrashCount: 1000
    const monitor = Revive(options);
    monitor.on('start', function () {


    • name: String Defaults to null the name of the process.

    • arg: Array, String Defaults to null arguments or node script.

    • cwd: String Defaults to process.cwd() the current working directory.

    • cmd: String Defaults to process.execPath the systems absolute executable/node path.

    • cluster: Boolean Defaults to false.

    • instances: Number Defaults to Os.cpus().length if cluster is set to true

    • stdout: String Defaults to 'pipe' otherwise a file path. If a path is provided than this event will not fire.

    • stderr: String Defaults to 'pipe' otherwise a file path. If a path is provided than this event will not fire.

    • sleepTime: Array, Number Defaults to 1000 in milliseconds to sleep between start after a crash.

    • crashTime: Number Defaults to 60000ms. The time until the maxCrashCount resets. So if 1000 crashes happen in 60s then the process will exit.

    • maxCrashCount: Number Defaults to 1000 crashes. A crash is triggered and the process exited at nth + 1.

    • env: {} Environment variables for the process.

    • data: {} A custom object for you.


    • monitor.start() Starts the monitor

    • monitor.stop() Stops the monitor (kills the process if its running with SIGKILL).

    • monitor.restart() Restarts the monitor by stopping then starting (process must be started).

    • monitor.toJSON() Creates a stringyifiable object. The object returns stats and data about the process.

    Cluster Events

    • monitor.on('status', callback)

    • monitor.on('start', callback) Starts the process. Warning async so process may not be available immediately.

    • monitor.on('stop', callback) The process and it's tree is sent a SIGTERM signal. If the process does not terminate after ten seconds then the process is sent a SIGKILL signal.

    • monitor.on('restart', callback) Same as stopping then starting or vice versa.

    • monitor.on('stdout', callback) Emits an stdout. Only available if no Options.stdout is pipe.

      • Stdout Parameter the stdout message.
    • monitor.on('stderr', callback) Emits an stderr. Only available if no Options.stderr is pipe.

      • Stderr Parameter the stderr message.
    • monitor.on('error', callback) Emits when the process could not spawn, kill, or a message failed.

      • Error Parameter the error message.
    • monitor.on('exit', callback) The process has exited.

      • Code The numeric exit code
      • Signal The string signal

    Instance Events

    • monitor.on('reload', callback) Zero downtime restart if cluster is set to true and instances is greater than one.

    • monitor.on('sleep', callback) Triggered when process crashes and enters sleep.

    • monitor.on('crash', callback) Triggered when the process crashes.


    Immediate start then stop execution does not send the signals. This could be a problem with node.js.


    npm i revive

    DownloadsWeekly Downloads






    Last publish


    • vokeio