Terminal
Use host shell sessions, split and arrange windows, and understand their lifetime.
Workspace → Terminal opens a real host PTY. It runs a shell as the configured host account (JD_TERMINAL_USER; empty means the lowest regular account, the login ssh would give you) and requires an administrator role. The login reads that account's own shell profile first, so commands found over ssh are found here too. The feature can be disabled with JD_TERMINAL_ENABLED=false.
Work in a session
- Open Terminal and select New session (or Open session on an empty page). A session groups windows; each window is an independent shell, so closing one does not end its siblings.
- Select New window when you need a separate command or directory. New windows inherit the directory of the window you were viewing when that host directory still exists; otherwise they start at home.
- Use Split terminal to open a window above, below, left, or right of the focused one, and drag the divider to resize. Drag a window's tab onto a pane to dock it at the nearest edge, or use Open as separate window to give a split pane its own tab again without restarting its shell.
- Use the companion Files tab to browse and edit files in the shell's directory. The Git tab shows Changes file by file, switches or checks out branches under Branches, and checks out an open pull request under Pull requests when
ghis installed and signed in. Open in Git goes to the full Git workspace for staging and committing. - Codex and Claude type
codex --yoloorclaude --dangerously-skip-permissionsinto the focused shell, so the agent starts in that directory with its permission prompts turned off. If the focused window is already running a program, the agent opens in a new window instead.
Sessions and windows name themselves after what they run: the title the foreground program sets, its name, or the directory at a prompt. They cannot be renamed, pinned, or filed in folders. A dot at the end of each tab and session shows green while output is arriving or the job is using CPU, orange when it is idle, and red when this browser's connection to it has dropped. An editor or agent waiting for input counts as idle. The active session and window are remembered when you navigate elsewhere in the dashboard.
Session lifetime
Each window is held on the host by its own systemd unit, not by the dashboard process. A session keeps running with every browser closed and across dashboard restarts, rebuilds, and upgrades, until you close it or its shell exits. There is no idle timeout. If the connection drops, the page reconnects by itself. A host reboot ends every terminal; keep jobs that must survive a reboot under a host supervisor.
This protection needs root, systemd on the host, and the dashboard's data directory mounted at the same path on the host. When it cannot be set up, the page says why and refuses new sessions rather than opening ones that would end on restart; windows that are already running stay usable.
Closing a session ends all its windows. A newly attached browser receives the last 128 KiB of output, not a full screen snapshot of everything that happened while it was away. The browser you kept open retains its own complete terminal display across window switches.