Skip to main content

Console & Running Commands

The Console tab lets you interact with your app's running container without SSH-ing into the server yourself. It has two modes: Run command for one-off tasks, and Shell for an interactive terminal.

The app must be in Active status for either mode to work.

Run command

Use Run command to execute a single command inside the container and see the output stream live.

How to use it:

  1. Go to your app → Console tab.
  2. Make sure you're on the Run command mode (default).
  3. Type your command in the input field, or click one of the preset shortcuts.
  4. Press Enter or click Run.

Output streams line-by-line as it's produced. When the command finishes, you'll see Success (exit 0) or Failed (exit non-zero) with the exit code.

Preset commands

The Console shows a few common shortcuts that you can click to fill the input:

  • php artisan migrate --force
  • php artisan db:seed --force
  • php artisan cache:clear

Click any preset to load it, then press Run (or modify it first).

Command history

Every command you run is saved in the Recent runs list below the output. Click any past run to reload its command and output. The history also shows who ran it and the exit code.

Common uses

# Laravel
php artisan migrate --force
php artisan db:seed --force
php artisan queue:restart

# Django
python manage.py migrate
python manage.py createsuperuser

# Rails
bundle exec rails db:migrate
bundle exec rails db:seed

# Node
npm run db:migrate
npx prisma db push

Shell (interactive terminal)

Shell mode opens a full interactive terminal session inside the container — the same experience as docker exec -it. You can navigate the filesystem, run multiple commands, use tab completion, and stream long-running processes.

How to use it:

  1. Go to your app → Console tab.
  2. Click Shell in the mode toggle.
  3. Click Connect.

A terminal opens in the browser (powered by xterm.js). Type commands as you would in any terminal.

Idle timeout

The shell session closes automatically after a period of inactivity. You'll see a warning countdown before it disconnects — press any key to stay connected. If the session closes, click Reconnect to open a new one.

When the shell closes unexpectedly

If you see an error message in the terminal header, here's what each means:

MessageCause
Disconnected after inactivityIdle timeout — reconnect to continue
Session expired before it could connectToken expired; click Connect again
Timed out connecting to the containerContainer is slow to respond; try again
Could not open a shell in the containerContainer may be restarting or unhealthy

Limitations

  • Both modes require the app to be Active. If the app is stopped, deploying, or failed, the Console is unavailable.
  • Commands run inside the web container — not a daemon or a separate one-off container. If your app has multiple replicas, the command runs in one of them (not all).
  • There is no root access — commands run as the user the container process runs as.
  • For long-running commands (e.g. a slow migration), use Run command rather than Shell so the output is saved to history even if your browser closes.