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:
- Go to your app → Console tab.
- Make sure you're on the Run command mode (default).
- Type your command in the input field, or click one of the preset shortcuts.
- 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 --forcephp artisan db:seed --forcephp 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:
- Go to your app → Console tab.
- Click Shell in the mode toggle.
- 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:
| Message | Cause |
|---|---|
| Disconnected after inactivity | Idle timeout — reconnect to continue |
| Session expired before it could connect | Token expired; click Connect again |
| Timed out connecting to the container | Container is slow to respond; try again |
| Could not open a shell in the container | Container 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.