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.
- Navigate to the service you want to access.
- Click the Terminal tab (or the terminal icon in the service header).
- A shell session opens automatically using the container's default shell (
/bin/shor/bin/bashif available).
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.
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:
# View environment variables
env | sort
# Check disk usage
df -h
# View running processes
ps aux
# Check available memory
free -m# 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# 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:
| Shortcut | Action |
|---|---|
| Ctrl + C | Cancel the current command |
| Ctrl + D | Close the terminal session |
| Ctrl + L | Clear the screen |
| Tab | Auto-complete file names and commands |
| Up / Down | Navigate command history |
| Ctrl + A | Move cursor to start of line |
| Ctrl + E | Move 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.
# 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/healthDirect Database Access
Open a terminal to the database container to run direct queries using the database CLI.
# 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.
# Django
python manage.py migrate
# Rails
bundle exec rails db:migrate
# Laravel
php artisan migrate
# Prisma
npx prisma migrate deployLimitations & 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.