> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instapods.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Web Terminal

> Access a full terminal inside your pod directly from the browser.

The web terminal gives you a full interactive shell inside your pod — no SSH keys, no local tools, just click and type.

## Accessing the Terminal

1. Go to your pod's detail page at `/dashboard/pods/{name}`
2. Click the **Terminal** tab
3. A terminal session opens immediately (pod must be running)

The terminal connects via WebSocket and runs a bash login shell as the `instapod` user, starting in your pod's app directory (`/home/instapod/app`).

## Your Session Survives the Tab

The shell runs inside a `tmux` session on the pod, so closing the tab only detaches from it. Long
jobs - a build, a migration, a `tail -f` - keep running, and reopening the terminal drops you back
into the same session with its output still on screen.

Reconnecting after a dropped connection does the same thing. It's the same session, not a new one.

To start over - end whatever is running and clear the history - click **Restart** and confirm.

## Features

* **Full bash shell** - Run any command: install packages, edit files, manage services, run scripts
* **Persistent session** - Runs in `tmux`; closing the tab doesn't kill what you started
* **Deep scrollback** - 100,000 lines of history, scrolled with the mouse wheel
* **Copy to your system clipboard** - Click **Select**, then drag to select. The selection goes to
  your real clipboard, so you can paste it into any app, not just back into the terminal
* **Auto-resize** - Terminal adapts when you resize the browser window
* **Clickable links** - URLs in terminal output are clickable
* **No setup required** - No SSH keys or external tools needed

<Note>
  Mouse mode is on so the wheel scrolls the pod's scrollback rather than your browser's. That's why
  a plain click-drag doesn't select text - the **Select** button turns mouse reporting off so it
  does. Click it again to go back to scrolling.
</Note>

## Terminal Theme

The terminal uses a dark theme matching the InstaPods brand:

* Background: dark (`#0a0a0a`)
* Text: light gray
* Cursor: green (`#22C55E`)
* Font: JetBrains Mono / Fira Code / system monospace

## Terminal vs SSH

| | Web Terminal | SSH |
| - | - | - |
| **Setup** | None - click and go | Requires SSH key setup |
| **User** | `instapod` | `instapod` |
| **Start directory** | App root (`/home/instapod/app`) | App root (`~/app`) |
| **Persistence** | Persistent - runs in tmux, survives closing the tab | Persistent with tmux/screen |
| **File transfer** | Not directly - use the [Web IDE](/dashboard/web-ide) or CLI | `scp` / `rsync` |
| **Access** | Browser only | Any SSH client |
| **Availability** | Requires dashboard access | Works even if dashboard is down |

<Tip>
  The web terminal is enough for almost everything, including long-running work. Reach for SSH when
  you want to pipe files with `scp`/`rsync`, script against the pod, or work while the dashboard is
  unavailable.
</Tip>

## Requirements

* Pod must be in **running** status
* Browser must support WebSockets (all modern browsers do)

## Common Tasks

```bash theme={null}
# Check what's running
systemctl status app

# View recent logs
journalctl -u app --no-pager -n 50

# Install a system package
sudo apt-get install -y htop

# Check disk usage
df -h

# Monitor processes
htop
```

<Note>
  The terminal runs as the `instapod` user (non-root). Use `sudo` for system-level commands like installing packages.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.