CLI API Reference

The Railway Command Line Interface (CLI) lets you interact with your Railway project from the command line.

This document describes the commands available in the CLI.

For information on how to install the CLI and more examples of usage, see the CLI guide.

Add

Add a service to your project

~ railway add --help
Add a service to your project

Usage: railway add [OPTIONS]

Options:
  -d, --database <DATABASE>
          The name of the database to add

          [possible values: postgres, mysql, redis, mongo]

  -s, --service [<SERVICE>]
          The name of the service to create (leave blank for randomly generated)

  -r, --repo <REPO>
          The repo to link to the service

  -i, --image <IMAGE>
          The docker image to link to the service

  -v, --variables <VARIABLES>
          The "{key}={value}" environment variable pair to set the service variables. Example:

          railway add --service --variables "MY_SPECIAL_ENV_VAR=1" --variables "BACKEND_PORT=3000"

      --json
          Output in JSON format

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

Completion

Generate a shell-completions for the following shells: bash, elvish, fish, and powershell

~ railway completion --help
Generate completion script

Usage: railway completion [OPTIONS] <SHELL>

Arguments:
  <SHELL>  [possible values: bash, elvish, fish, powershell, zsh]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Connect

Connect to a database's shell (psql for Postgres, mongosh for MongoDB, etc.)

~ railway connect --help
Connect to a database's shell (psql for Postgres, mongosh for MongoDB, etc.)

Usage: railway connect [OPTIONS] [SERVICE_NAME]

Arguments:
  [SERVICE_NAME]  The name of the database to connect to

Options:
  -e, --environment <ENVIRONMENT>  Environment to pull variables from (defaults to linked environment)
      --json                       Output in JSON format
  -h, --help                       Print help
  -V, --version                    Print version

This requires you to have the database's appropriate shell/client installed in your $PATH:

Deploy

Deploy a template into your project

railway deploy --help
Provisions a template into your project

Usage: railway deploy [OPTIONS]

Options:
  -t, --template <TEMPLATE>  The code of the template to deploy
  -v, --variable <VARIABLE>  The "{key}={value}" environment variable pair to set the template variables
          To specify the variable for a single service prefix it with "{service}." Example:
          bash railway deploy -t postgres -v "MY_SPECIAL_ENV_VAR=1" -v "Backend.Port=3000"

      --json                 Output in JSON format
  -h, --help                 Print help (see a summary with '-h')
  -V, --version              Print version

Domain

Create a domain for a service

~ railway domain --help
Add a custom domain or generate a railway provided domain for a service

Usage: railway domain [OPTIONS] [DOMAIN]

Arguments:
  [DOMAIN]  Optionally, specify a custom domain to use. If not specified, a domain will be generated

Options:
  -p, --port <PORT>        The port to connect to the domain
  -s, --service <SERVICE>  The name of the service to generate the domain for
      --json               Output in JSON format
  -h, --help               Print help (see more with '--help')
  -V, --version            Print version

Docs

Open the Railway documentation site in the default browser

~ railway docs --help
Open Railway Documentation in default browser

Usage: railway docs [OPTIONS]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version```

Down

Remove the most recent deployment

~ railway down --help
Remove the most recent deployment

Usage: railway down [OPTIONS]

Options:
  -y, --yes      Skip confirmation dialog
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Environment

Change which environment you are using

~ railway [env]ironment --help
Change the active environment

Usage: railway environment [OPTIONS] [ENVIRONMENT]

Arguments:
  [ENVIRONMENT]  The environment to link to

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

View environment docs for more information.

If you run railway environment without specifying a name, you will be prompted with an environment selector that lists all your environments for the project.

Init

Create a new Project from the CLI

~ railway init --help
Create a new project

Usage: railway init [OPTIONS]

Options:
  -n, --name <NAME>  Project name
      --json         Output in JSON format
  -h, --help         Print help
  -V, --version      Print version

Connect to an existing Railway project

~ railway link --help
Associate existing project with current directory, may specify projectId as an argument

Usage: railway link [OPTIONS]

Options:
  -e, --environment <ENVIRONMENT>  Environment to link to
  -p, --project <PROJECT>          Project to link to
  -s, --service <SERVICE>          The service to link to
  -t, --team <TEAM>                The team to link to. Use "personal" for your personal account
      --json                       Output in JSON format
  -h, --help                       Print help
  -V, --version                    Print version

Running link with no project ID will prompt you to select a team and project.

List

List all projects in your Railway account

~ railway list --help
List all projects in your Railway account

Usage: railway list [OPTIONS]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Login

Login to your Railway account

~ railway login --help
Login to your Railway account

Usage: railway login [OPTIONS]

Options:
  -b, --browserless  Browserless login
      --json         Output in JSON format
  -h, --help         Print help
  -V, --version      Print version

This will open the browser to https://railway.com/cli-login.

Browserless

If you are in an environment where the terminal cannot open a web browser, (i.e. SSH session or Codespaces), you can perform a browserless login.

~ railway login --browserless
Browserless Login
Please visit:
  https://railway.com/cli-login?d=SGVsbG8sIGtpbmQgc3RyYW5nZXIhIFRoYW5rcyBmb3IgcmVhZGluZyB0aGUgZG9jdW1lbnRhdGlvbiEgSSBob3BlIHlvdSdyZSBoYXZpbmcgYSB3b25kZXJmdWwgZGF5IDopCg==
Your pairing code is: friendly-malicious-electric-soup

Logged in as Nebula ([email protected])

This will prompt you to go to a URL (you can copy and paste) and present you with a 4 word code that you need to verify. If the codes match, click "Verify" and you will be logged in.

Logout

Logout of your Railway account

~ railway logout --help
Logout of your Railway account

Usage: railway logout [OPTIONS]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Logs

View logs for the most recent deployment

~ railway logs --help
View the most-recent deploy's logs

Usage: railway logs [OPTIONS]

Options:
  -d, --deployment  Show deployment logs
  -b, --build       Show build logs
      --json        Output in JSON format
  -h, --help        Print help
  -V, --version     Print version

Open

Open your current Railway project in the browser

~ railway open --help
Open your project dashboard

Usage: railway open [OPTIONS]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Run

Run a command using the Railway environment

~ railway run --help
Run a local command using variables from the active environment

Usage: railway run [OPTIONS] [ARGS]...

Arguments:
  [ARGS]...  Args to pass to the command

Options:
  -s, --service <SERVICE>          Service to pull variables from (defaults to linked service)
  -e, --environment <ENVIRONMENT>  Environment to pull variables from (defaults to linked environment)
      --json                       Output in JSON format
  -h, --help                       Print help
  -V, --version                    Print version

This also injects all environment variables associated with the databases you have installed in your project.

Service

Link a service to the current project

~ railway service --help
Link a service to the current project

Usage: railway service [OPTIONS] [SERVICE]

Arguments:
  [SERVICE]  The service to link

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Shell

Create a subshell (based on $SHELL) with all the variables from your project/environment/service loaded and accessible

~ railway shell --help
Open a subshell with Railway variables available

Usage: railway shell [OPTIONS]

Options:
  -s, --service <SERVICE>  Service to pull variables from (defaults to linked service)
      --json               Output in JSON format
  -h, --help               Print help
  -V, --version            Print version

Status

View the status of your Railway project and user

~ railway status --help
Show information about the current project

Usage: railway status [OPTIONS]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Disconnects the current directory from Railway

~ Disassociate project from current directory

Usage: railway unlink [OPTIONS]

Options:
  -s, --service  Unlink a service
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

You will need to rerun railway link to use railway in this directory again.

Up

Deploy a directory to your Railway project

~ railway up --help
Upload and deploy project from the current directory

Usage: railway up [OPTIONS] [PATH]

Arguments:
  [PATH]

Options:
  -d, --detach                     Don't attach to the log stream
  -c, --ci                         Only stream build logs and exit after it's done
  -s, --service <SERVICE>          Service to deploy to (defaults to linked service)
  -e, --environment <ENVIRONMENT>  Environment to deploy to (defaults to linked environment)
      --no-gitignore               Don't ignore paths from .gitignore
      --verbose                    Verbose output
      --json                       Output in JSON format
  -h, --help                       Print help
  -V, --version                    Print version

If no path is provided, the top linked directory is deployed. The currently selected environment is used.

Variables

View a table of all the environment variables associated with your project and environment

~ railway variables --help
Show variables for active environment

Usage: railway variables [OPTIONS]

Options:
  -s, --service <SERVICE>          The service to show/set variables for
  -e, --environment <ENVIRONMENT>  The environment to show/set variables for
  -k, --kv                         Show variables in KV format
      --set <SET>                  The "{key}={value}" environment variable pair to set the service variables. Example:
                                      railway variables --set "MY_SPECIAL_ENV_VAR=1" --set "BACKEND_PORT=3000"
      --json                       Output in JSON format
  -h, --help                       Print help (see a summary with '-h')
  -V, --version                    Print version

Whoami

View what user is currently authenticated with Railway

~ railway whoami --help
Get the current logged in user

Usage: railway whoami [OPTIONS]

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Volume

Manage project volumes with options to list, add, delete, update, attach, and detach volumes

~ railway volume --help
Manage project volumes

Usage: railway volume [OPTIONS] <COMMAND>

Commands:
  list    List volumes
  add     Add a new volume
  delete  Delete a volume
  update  Update a volume
  detach  Detach a volume from a service
  attach  Attach a volume to a service
  help    Print this message or the help of the given subcommand(s)

Options:
  -s, --service <SERVICE>          Service ID
  -e, --environment <ENVIRONMENT>  Environment ID
      --json                       Output in JSON format
  -h, --help                       Print help
  -V, --version                    Print version

Redeploy

Redeploy the currently deployed version of a service

~ railway redeploy --help
Redeploy the latest deployment of a service

Usage: railway redeploy [OPTIONS]

Options:
  -s, --service <SERVICE>  The service ID/name to redeploy from
  -y, --yes                Skip confirmation dialog
      --json               Output in JSON format
  -h, --help               Print help
  -V, --version            Print version

Help

Help command reference

~ railway help
Interact with Railway via CLI

Usage: railway [OPTIONS] <COMMAND>

Commands:
  add          Add a service to your project
  completion   Generate completion script
  connect      Connect to a database's shell (psql for Postgres, mongosh for MongoDB, etc.)
  deploy       Provisions a template into your project
  domain       Generates a domain for a service if there is not a railway provided domain
  docs         Open Railway Documentation in default browser
  down         Remove the most recent deployment
  environment  Change the active environment
  init         Create a new project
  link         Associate existing project with current directory, may specify projectId as an argument
  list         List all projects in your Railway account
  login        Login to your Railway account
  logout       Logout of your Railway account
  logs         View a deploy's logs
  open         Open your project dashboard
  run          Run a local command using variables from the active environment
  service      Link a service to the current project
  shell        Open a local subshell with Railway variables available
  status       Show information about the current project
  unlink       Disassociate project from current directory
  up           Upload and deploy project from the current directory
  variables    Show variables for active environment
  whoami       Get the current logged in user
  volume       Manage project volumes
  redeploy     Redeploy the latest deployment of a service
  help         Print this message or the help of the given subcommand(s)

Options:
      --json     Output in JSON format
  -h, --help     Print help
  -V, --version  Print version

Edit this file on GitHub