Web TUI

The web command is a terminal UI that puts browser chrome — a URL bar, navigation, and modes — inside a terminal pane. It connects to the GUI (Ghostboard), which renders the actual web page as an overlay using a browser engine (Roamium). You drive the browser from the keyboard without leaving the terminal.

web example.com

The browser appears inline. You start in Control mode; press Enter to switch to Browse mode and interact with the page, and Esc to return to Control.

Command line

Usage is web [URL] [options], with optional subcommands:

SubcommandAction
web url <url>Open a URL in the browser pane
web file <path>Open a local file in the browser pane
web lastPrint the last active browser pane/tab
web statusPrint the Chromium tab inventory for the current profile

Options (valid with any subcommand):

OptionMeaning
-p, —profile <name>Browser profile to use (default default)
—incognitoUse an ephemeral private profile
-b, —browser <name|path>Browser binary — a name or an absolute path
—primary-screenRender in the primary terminal screen instead of the alternate screen

Profile names must be lowercase alphanumeric and start with a letter. —incognito cannot be combined with —profile unless the profile is incognito. Each profile keeps its own cookies, storage, and cache (see the configuration guide for where profiles are stored). The —browser flag is mainly for development — pass an absolute path to test a specific engine build:

web —browser /path/to/roamium example.com

URL resolution

Whatever you type — as an argument or in the URL bar — is resolved to a URL by these rules, in order:

  1. Already has a scheme (https://…, file://…) — used as-is.
  2. Starts with /, ./, or ../ and the file exists — opened as file://.
  3. Contains : — treated as host:port (http:// for localhost, otherwise https://).
  4. Names an existing file — opened as file://.
  5. Looks like a domain (contains a dot) — https:// (localhost gets http://).
  6. Otherwise it isn’t treated as a URL or file: nothing is navigated and an error is shown (in the command bar when editing, or on stderr from the CLI).
You typeYou get
example.comhttps://example.com
localhost:3000http://localhost:3000
./page.htmlfile://…/page.html

Modes

The TUI has six modes:

ModeBehavior
ControlDefault. TUI keybindings active.
BrowseKeyboard and mouse go to the page.
EditVim-style URL editing (Normal / Insert / Visual / Search submodes).
CommandCommand entry prefixed with :.
DialogAnswering a JavaScript dialog (alert / confirm / prompt / beforeunload).
AuthEntering HTTP authentication credentials.

Keybindings

Control mode

KeyAction
EnterSwitch to Browse mode
iEdit the URL (insert at cursor)
AEdit the URL (insert at end)
IEdit the URL (insert at start)
nEdit the URL (Normal submode)
vEdit the URL (Visual submode)
VEdit the URL (Visual line select)
:Enter Command mode
Cmd+CCopy the current URL

The URL-edit keys and Cmd+C are disabled when the pane is a DevTools split.

Browse mode

KeyAction
EscReturn to Control mode

Every other key (and the mouse) goes straight to the page, so standard browser shortcuts like Cmd+[ / Cmd+] (back / forward) and Cmd+R (reload) work because Chromium handles them — they are not TUI bindings.

Edit mode

KeyAction
EnterResolve and navigate to the URL, then switch to Browse mode
EscFrom the Normal submode, return to Control mode

The URL editor uses vim-style editing (h/l, w/b, x, d, y, p, …) with system-clipboard integration. Enter does not navigate from the Search submode or in a DevTools split.

Command mode

Type a command (see below) and press Enter to run it; Esc from the Normal submode returns to Control mode.

Dialog mode

When a page opens a JavaScript dialog, Enter accepts it (and submits the typed text for a prompt) and Esc cancels; for confirm / beforeunload, y and n also work.

Auth mode

For an HTTP authentication challenge, Tab switches between the username and password fields, typing fills the active field, Enter advances from username to password and then submits, and Esc cancels.

Any mode

KeyAction
Ctrl+CQuit

Commands

Enter Command mode with :. Commands match by exact name or alias.

CommandAliasAction
:quit:qQuit
:dark [on|off|system]:daForce page dark mode on, off, or follow the system; no argument toggles
:viewport height <rows>:vpSet the browser viewport height in terminal rows
:viewport reset:vp rReset the viewport height
:devtools [right|down|left|up]:deOpen DevTools in a split pane (default right)

:dark also accepts yes/y and no/n for on/off, and s for system. :devtools direction shortcuts are r, d, l, u.

DevTools and dark mode

:devtools opens Chromium DevTools for the current tab in an adjacent split. The URL-edit and copy keys are disabled in a DevTools pane, and it does not navigate. :dark forwards a preferred color scheme to the page (independent of the terminal theme set in your config).

How the TUI, the GUI, and the engine processes fit together — and how browser content is composited into the terminal — is covered in Architecture. For terminal-level key bindings (a separate system from the TUI modes above), see Keybindings.