Docs/ Operations/ Terminal Access

Terminal Access

Open a web-based shell session to any running container directly from the dashboard. Debug issues, run one-off commands, and inspect your application without SSH.

Opening the Web Terminal

The web terminal provides a fully interactive shell session inside any running container. It uses WebSockets to stream terminal I/O directly to your browser.

  1. Navigate to the service you want to access.
  2. Click the Terminal tab (or the terminal icon in the service header).
  3. A shell session opens automatically using the container's default shell (/bin/sh or /bin/bash if available).
Web terminal -- showing a bash session inside a running Node.js container with the container name in the terminal header
Note
The terminal connects to the running container using Docker's exec API. The session runs as the same user as the container's main process. If the container stops or restarts, the terminal session ends.

Selecting a Container

If your service has multiple replicas, the terminal dropdown lets you choose which container instance to connect to. Each replica is listed with its container ID and status.

Container selector dropdown -- showing three replicas with their container IDs, status indicators, and resource usage

You can also open terminals to database containers. This is useful for running direct SQL queries or inspecting the database state.

Running Commands

The terminal supports all standard shell operations. Here are some common commands you might run:

Inspecting the environment
# View environment variables
env | sort

# Check disk usage
df -h

# View running processes
ps aux

# Check available memory
free -m
Application debugging
# Check if the app is listening on the expected port
netstat -tlnp

# Test database connectivity
pg_isready -h mydb -p 5432

# View the application directory
ls -la /app

# Check Node.js version
node --version
File inspection
# View a log file
tail -f /app/logs/app.log

# Check configuration
cat /app/config.json

# Search for a string in source files
grep -r "ERROR" /app/logs/

Terminal Shortcuts

The web terminal supports standard terminal keyboard shortcuts:

ShortcutAction
Ctrl + CCancel the current command
Ctrl + DClose the terminal session
Ctrl + LClear the screen
TabAuto-complete file names and commands
Up / DownNavigate command history
Ctrl + AMove cursor to start of line
Ctrl + EMove cursor to end of line

Common Use Cases

Debugging

The terminal is the fastest way to debug issues in a running container. You can inspect logs, check network connectivity, verify environment variables, and test configuration changes without redeploying.

Debug a connection issue
# Is the database reachable?
ping -c 3 mydb

# Can we connect to it?
psql -h mydb -U sh0 -d myapp -c "SELECT 1;"

# Is our app listening?
curl -v http://localhost:3000/health

Direct Database Access

Open a terminal to the database container to run direct queries using the database CLI.

PostgreSQL direct access
# Inside the PostgreSQL container
psql -U sh0 -d myapp

# List tables
\dt

# Run a query
SELECT count(*) FROM users;

Running Migrations

Run database migrations manually when you need to verify each step or troubleshoot migration failures.

Common migration commands
# Django
python manage.py migrate

# Rails
bundle exec rails db:migrate

# Laravel
php artisan migrate

# Prisma
npx prisma migrate deploy
Terminal session showing a Django migration running successfully inside a container

Limitations & Security

There are a few things to keep in mind when using the web terminal:

  • Ephemeral sessions -- Terminal sessions are not persistent. If the page is closed or refreshed, the session ends. Any background processes started in the terminal will continue running in the container.
  • Container filesystem changes are temporary -- Unless you are editing files in a mounted volume, changes to the filesystem are lost when the container restarts.
  • No file upload/download -- Use the File Manager for transferring files to and from containers.
  • Authentication required -- Terminal access requires a valid dashboard session. Only team members with the appropriate role can access the terminal.
Warning
The terminal provides full shell access to the container. Be careful with destructive commands. Changes to application files outside of mounted volumes will be lost on the next deploy or restart.