Skip to content

CLI

pg-boss includes a command-line interface for managing database migrations without writing code. This is useful for CI/CD pipelines, database setup scripts, or manual schema management.

Installation

When installed globally, the CLI is available as pg-boss:

bash
npm install -g pg-boss
pg-boss --help

Or run directly with npx:

bash
npx pg-boss --help

Commands

CommandDescription
migrateRun pending migrations (creates schema if not exists)
createCreate initial pg-boss schema
versionShow current schema version
rollbackRollback the last migration
plans <subcommand>Output SQL without executing (subcommands: create, migrate, rollback)

Connection Configuration

The CLI supports multiple ways to configure the database connection, in order of precedence:

  1. Command-line arguments

    bash
    pg-boss migrate --connection-string postgres://user:pass@host/database
    # or individual options
    pg-boss migrate --host localhost --port 5432 --database mydb --user postgres --password secret
  2. Environment variables

    bash
    PGBOSS_DATABASE_URL=postgres://user:pass@host/database pg-boss migrate
    # or individual variables
    PGBOSS_HOST=localhost PGBOSS_PORT=5432 PGBOSS_DATABASE=mydb PGBOSS_USER=postgres PGBOSS_PASSWORD=secret pg-boss migrate

    This allows admin credentials for migrations to coexist with regular application database credentials (e.g., DATABASE_URL for the app, PGBOSS_DATABASE_URL for migrations).

  3. Config file (pgboss.json or .pgbossrc in current directory, or specify with --config)

    bash
    pg-boss migrate --config ./config/pgboss.json

    Config file format:

    json
    {
      "host": "localhost",
      "port": 5432,
      "database": "mydb",
      "user": "postgres",
      "password": "secret",
      "schema": "pgboss"
    }

Options

OptionShortDescription
--connection-string-cPostgreSQL connection string
--hostDatabase host
--portDatabase port
--database-dDatabase name
--user-uDatabase user
--password-pDatabase password
--schema-spg-boss schema name (default: pgboss)
--configPath to config file
--dry-runShow SQL without executing (for migrate, create, rollback)

Examples

bash
# Create schema in a new database
pg-boss create --connection-string postgres://localhost/myapp

# Run migrations in CI/CD pipeline
PGBOSS_DATABASE_URL=$PGBOSS_DATABASE_URL pg-boss migrate

# Preview migration SQL before running
pg-boss migrate --connection-string postgres://localhost/myapp --dry-run

# Check current schema version
pg-boss version -c postgres://localhost/myapp

# Use a custom schema name
pg-boss migrate -c postgres://localhost/myapp --schema myapp_jobs

# Output SQL for creating schema (useful for review or manual execution)
pg-boss plans create --schema myapp_jobs