documentation
User Interface
The Ratatui-based UI is optimized for keyboard navigation. This document complements the in-app shortcut list and explains each pane in detail.
#User Interface
The Ratatui-based UI is optimized for keyboard navigation. This document complements the in-app shortcut list and explains each pane in detail.
The documentation files under docs/ are embedded into the Opal binary at build time. Press ? anywhere in the TUI to open the help and documentation viewer.
#Layout
- Runs sidebar – Shows the current run plus history. It starts hidden by default; press
Hto show or hide it. Collapse/expand tree nodes with←/→/h/l. PressEnterto load a past run’s jobs and logs into the main view. - Job tabs – Each tab represents a job or a job variant. Use
j/kor the arrow keys to change tabs. Colors indicate status:- Cyan: waiting on dependencies
- Yellow: running
- Green: success
- Red: failed
- Info panel – Displays metadata for the selected job (stage, image, runtime, error message, manual/needs state, runner details such as engine, architecture, plus CPU and memory when Opal controls them, and a compact count of user-visible environment variables loaded into the job).
- Job YAML pane – Shows the selected job definition from
.gitlab-ci.yml. UseTabto focus it,↑/↓orPgUp/PgDnto scroll,yto open it in your pager, andYto hide or restore the pane. - Plan pane – Shows the pipeline plan that Opal evaluated for this run (stage order, dependencies, manual/delayed gates, artifact summaries). Scroll with
[/], page with{/}, jump to top/bottom with\/|, and presspto open the full plan in your pager when you need more context. - Log pane – Streams job output live. Scroll with
↑/↓,PgUp/PgDn,Ctrl+u/d,g/G, etc. Pressoto open the current log or AI analysis view in your pager. Pressato analyze the selected job, and pressaagain to toggle between the normal log view and the saved/streamed analysis view. PressAto preview the exact rendered AI prompt that Opal will send, and pressAagain to close that preview. These actions also work when you are viewing a job loaded from history. - Shortcuts footer – The bottom footer stays under the main pane so the active shortcuts remain visible even when the history sidebar is hidden.
- Job resources – When you expand a run in the history sidebar, each job now lists its artifacts, caches, and loaded environment variable names. Press
Enteron any artifact or cache directory to render a tree in the preview pane, pressEnteron an artifact file to read it directly, or pressEnteron the env-vars row to inspect the loaded variable names. When runtime-object preservation is enabled, this section also surfaces service network details, service container names, and a generated runtime summary file for inspection. PressEnteron the summary file or runtime info rows to load the full text into the preview pane.
#Inspect loaded env vars
To inspect which environment variables were loaded into a job:
- Press
Hif the history sidebar is hidden. - Move to the history sidebar with
Tab. - Expand the current run or a historical run with
→/l. - Select the job you want to inspect.
- Expand its resource rows if needed.
- Select the row labeled
Env vars: N loaded. - Press
Enterto load the variable-name list into the preview pane.
Notes:
- the
Detailspane shows the compact count asEnv: N loaded - the preview shows variable names, not values
- this is intentional so secret values are not dumped into the UI
#Help overlay
- Press
?to toggle the overlay. - The footer always reminds you that
?orEscwill close the window. - Use
1-9to open embedded docs. When a document is open,←/→switch between files,Sjumps back to the shortcuts view, and the usual scrolling keys work inside the reader.
#Mouse support
Mouse events are optional but supported:
- Scroll wheel over the log pane scrolls output.
- Clicking on tabs or sidebar items moves focus accordingly.
- Double-clicking a job tab opens the log in the pager.
#Troubleshooting
- If the UI freezes, ensure your terminal supports alternate-screen mode and 256 colors.
- Press
Ctrl+Cto exit immediately; Opal will attempt to stop running jobs. - Logs live under
$XDG_DATA_HOME/opal/<run-id>/logs/(default~/.local/share/opal/<run-id>/logs/) if you need to inspect them outside the UI. - Saved AI analysis lives under
$XDG_DATA_HOME/opal/<run-id>/<job-slug>/analysis/when AI analysis saving is enabled.