documentation
Quick Start
cargo install --path crates/opal
#Quick Start
#Install
cargo install --path crates/opalThis installs the executable as opal.
Opal requires Docker, Podman, Apple container, OrbStack, or Anthropic srt for the supported local engine set. nerdctl remains available as a Linux-oriented option when the underlying environment is directly usable.
Opal wraps those local engine CLIs; it does not bundle its own container runtime. Make sure the engine you want to use is already installed and available on your PATH.
For the Apple container engine, use the official project:
https://github.com/apple/containerIf you are installing from a local checkout while developing Opal itself, use:
cargo install --path crates/opal#Prepare A Workspace
- Place your project in a directory containing
.gitlab-ci.yml. - Optional: add
.opal/envwith key-value files for secrets (each filename becomes a$NAMEand$NAME_FILEinside containers). - Optional: use
--env GLOB(repeatable) to forward selected host variables into jobs; seedocs/pipeline.mdfor the exact glob behavior and examples.
#Run The Pipeline
opal run --pipeline .gitlab-ci.yml --workdir .Use --engine auto (default) to let Opal detect which container runtime is available, or pass --engine docker, podman, nerdctl, container, orbstack, or sandbox.
On macOS, the RC-supported local engine set is container, docker, orbstack, podman, and sandbox.
Add --job <name> (repeatable) when you want to run only selected jobs plus their required upstream dependencies.
Default engine selection:
- macOS:
autouses Applecontainer - Linux:
autousespodman
You can override the auto default in config with:
[engine]
default = "docker"#Run Without The TUI
opal run --no-tuiUse this mode when you want plain terminal output instead of the interactive interface, for example in scripts, local CI-style checks, or when sharing a terminal recording.
If multiple jobs run in parallel, their output can still interleave in --no-tui mode. Opal prefixes each streamed line with the job name so you can still tell which job emitted it.
#Drive The UI
- Tabs show each job’s status (pending, running, waiting, success, failure).
- The left column lists run history; use
↑/↓to inspect past results. - Press
?at any time to open the contextual help overlay. From there you can open these Markdown docs with1-9or←/→.
#Preview The DAG
opal plan --pipeline .gitlab-ci.yml --workdir .opal plan evaluates rules/filters and prints every stage, job, dependency, and manual gate so you can verify the DAG before any containers start.
#Inspect Results
- Highlight a job and press
oto open its log in your pager ($PAGER, defaultless -R). - Artifacts are stored in
$XDG_DATA_HOME/opal/<run-id>/<job>/artifacts/(default~/.local/share/opal/<run-id>/<job>/artifacts/).
#Tips
- Pass
--max-parallel-jobs Nto increase concurrency. - Use
--env APP_*(repeatable) to forward host environment variables into the execution sandbox. - Use
opal planregularly to confirm rules, manual gates, and artifact flows before you launch a run.