
Full CUDA ML JupyterLab image with real-time collaboration and CRDT MCP server. Base: nvidia. Port 8888. GPU-accelerated ML training + collaborative notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml image.
Screenshot via selkies WebSocket capture bridge for selkies-desktop. Use when working with the wl-screenshot-pixelflux layer.
Himalaya email CLI (IMAP/SMTP). Use when working with the himalaya layer.
Start a container as a background service. MUST be invoked before any work involving: ov start command, launching containers, quadlet vs direct mode startup, or encrypted volume auto-mounting.
Scaffold new layers, images, and whole projects with template files. MUST be invoked before any work involving: ov image new {project, image, layer} commands, creating new projects/images/layers, or scaffolding directories.
Remove service container, quadlet file, and deploy.yml entry. MUST be invoked before any work involving: ov remove command, cleaning up containers, removing quadlets, or purging volumes.
Audio spectrogram and visualization CLI. Use when working with the songsee layer.
AMD ROCm runtime, OpenCL, and GPU compute support via system packages. Use when working with AMD GPU computing, ROCm, HIP, OpenCL, or AMD GPU passthrough in containers.
FileBrowser Quantum web file manager on port 8080 with config-file-driven setup. Use when working with FileBrowser, web file management, or file browsing in containers.
JetBrains Mono and Nerd Fonts for desktop containers. Use when working with font configuration or desktop text rendering.
OpenClaw full + ML tools + Ollama + Sway desktop + VNC. GPU-accelerated. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full-ml image.
Post-build layer optimization via merging consecutive small layers. MUST be invoked before any work involving: ov image merge command, image layer reduction, merge configuration, or post-build optimization.
Google Chrome running on Sway compositor via exec autostart with DevTools protocol. Use when working with Chrome in Sway, browser automation, or CDP in desktop containers.
Heroic Games Launcher for Epic, GOG, and Amazon Prime Gaming with mangohud and gamemode. Use when working with Heroic, Epic Games, GOG, or non-Steam game launchers in containers.
# a11y-tools - AT-SPI2 Accessibility Introspection ## Overview Provides Python AT-SPI2 bindings for querying the accessibility tree of GTK, Qt, and Chrome applications. Enables element-based automation — find buttons, menus, and text fields by name/role instead of pixel coordinates. Used by `ov eval wl atspi tree/find/click`. ## Layer Definition ```yaml requires: - dbus rpm: packages: - python3-pyatspi - python3-gobject ``` ## Key Properties | Property | Value | |----------|-
OpenRouter API integration notebook collection provisioned into the workspace volume at deploy time. 3 Jupyter notebooks demonstrating OpenRouter API basics, model discovery, and practical inference. Data-only layer with env_requires — first layer to use the env_requires feature. Use when working with notebook-openrouter, OpenRouter API tutorials, or Jupyter+OpenRouter integration.
Steam gaming client with gamescope. Use when working with Steam, gaming, or gamescope in containers.
Starter notebook templates provisioned into the workspace volume at deploy time. First data-only layer in the project — no packages, no services, no dependencies. Use when working with notebook-templates, data layers, or jupyter initial content.
Ollama integration notebook collection provisioned into the workspace volume at deploy time. 6 Jupyter notebooks demonstrating Ollama via requests, OpenAI, ollama lib, Anthropic, HuggingFace, and GPU. Data-only layer — no packages, no services, no dependencies. Use when working with notebook-ollama, Ollama API tutorials, or Jupyter+Ollama integration.
Minimal Sway desktop with VNC remote access and Chrome browser. Use when working with VNC desktop containers or testing the sway-desktop-vnc composition.
Desktop video recorder via selkies WebSocket capture bridge for selkies-desktop. Use when working with the wl-record-pixelflux layer.
marimo's built-in MCP server (10 read-only inspection tools — get_active_notebooks, get_cell_outputs, get_notebook_errors, etc.) at port 2718 path /mcp/server. Use when working with the marimo MCP tool catalog, programmatic notebook diagnostics, or the cells-don't-execute-via-MCP gap (marimo MCP is read-only; cells run via WebSocket from a browser OR `marimo export ipynb --include-outputs` for headless execution).
Metalayer composing a full Selkies Wayland streaming desktop with Chrome, Waybar, desktop automation tools, and accessibility introspection. Use when working with the selkies-desktop metalayer composition, labwc desktop, or browser-accessible remote desktops.
Fully rootless Selkies streaming desktop + the full ov toolchain inside one image. Runs as uid 1000 with zero --privileged / zero cap_add; nested rootless podman and rootless libvirt session VMs work via config-level namespace sharing and the surgical unmask=/proc/* security_opt. Use when working with the selkies-desktop-ov image — especially for any "browser-accessible desktop that can itself build images, start pods, or launch VMs" workflow.
Sway Wayland compositor running headless inside containers with Mesa GPU drivers. Use when working with Sway, Wayland desktop, or headless compositor setup.
Sway desktop with VNC remote access via wayvnc on port 5900. Composes sway-desktop base with wayvnc.
# Layer: waybar-labwc Waybar status bar adapted for labwc compositor (not sway). Uses the same unified config as the `waybar` layer — sway-specific modules (workspaces, mode) auto-hide on labwc since `SWAYSOCK` is not set. ## Architecture Waybar connects to `wayland-0` (labwc's socket), NOT `wayland-1` (pixelflux). This is critical for: - **Layer-shell exclusive zones** — Waybar reserves space at the top, windows don't overlap it - **wlr-foreign-toplevel-management** — Waybar's taskbar can se
WayVNC server on port tcp:5900 for remote access to Wayland desktops. Use when working with VNC access, remote desktop, or wayvnc configuration.
Waybar status bar and sway-autotile for the Sway desktop compositor. Use when working with Waybar configuration, status bar, or automatic tiling.
Google Workspace CLI (Gmail, Calendar, Drive, Contacts, Sheets, Docs). Use when working with the gogcli layer.
# xdg-portal - XDG Desktop Portal Infrastructure ## Overview Provides XDG Desktop Portal support for Sway containers. Installs the portal daemon, the wlroots-specific backend (`xdg-desktop-portal-wlr`), and the GTK fallback backend. Enables screen sharing, screenshots via portal API, and file dialogs for applications running inside the container. ## Layer Definition ```yaml requires: - dbus - sway - pipewire env: XDG_CURRENT_DESKTOP: "sway" rpm: packages: - xdg-desktop-portal
Thunar file manager for Sway desktop environments with sway config integration. Use when working with file management in Sway desktop containers.
# xterm - X11 Terminal (XWayland) ## Overview Lightweight X11 terminal emulator. On labwc (selkies-desktop), launching xterm triggers XWayland to start on-demand, enabling X11-based automation tools (xdotool, xprop, xwininfo) to find windows. ## Layer Definition ```yaml rpm: packages: - xterm ``` ## Key Properties | Property | Value | |----------|-------| | Depends | None | | Packages | `xterm` | | WM_CLASS | `xterm` / `XTerm` | | XWayland | Triggers on-demand start on labwc | ## Us
Overthink CLI (ov) binary installed into container/VM images for in-container use. Use when working with ov binary deployment inside containers, native D-Bus support, or the ov-full composition.
Xfce4 terminal emulator for Sway desktop environments with sway config integration. Use when working with terminal emulators in Sway desktop containers.
OpenSSH client tools for SSH agent forwarding. Use when working with SSH client, SSH agent forwarding, or the ssh-client layer.
OpenAI Whisper local speech-to-text. Use when working with the whisper layer.
marimo reactive notebook server (also runs as MCP server via --mcp), GPU-accelerated OSM/GTFS analytics deps (cudf-polars-cu13, polars, geopandas, quackosm, gtfs-parquet), Apache Airflow Python deps (the airflow layer ships no pixi env), and the marimo-team/learn curriculum + marimo-team/skills bundle for AI agents. Use when working with the marimo layer, its pixi environment, the supervisord service spec, or the cell-display + mo.iframe rendering patterns.
Maputnik — visual editor for MapLibre GL vector-tile styles. Pure-JS SPA built from upstream source via npm at image build time, served as static dist by python -m http.server. Pairs with osm-tools's martin tile server. Use when working with the maputnik layer, the Vite --base=/ build override (critical fix; default --base=/maputnik/ produces 404 asset paths), or the asset-base lock-in eval test.
Socket relay tool for VM console access and port relays (eth0 to loopback). Use when working with port relays, socat, or loopback service exposure.
KDE XDG Desktop Portal backend with ScreenCast and RemoteDesktop support. Use when working with KDE portals, screen sharing, or libei input in KWin containers.
GNOME XDG Desktop Portal backend with ScreenCast, RemoteDesktop, and AT-SPI2 support. Use when working with GNOME portals, screen sharing, or libei input in Mutter containers.
Food delivery order status CLI (Foodora). Use when working with the ordercli layer.
GnuPG encryption and signing tools for GPG agent forwarding. Use when working with GPG, encryption, signing, or the gnupg layer.
Google Workspace CLI (Gmail, Calendar, Drive, Contacts, Sheets, Docs). Use when working with the gogcli layer.
Grafana observability CLI tools: mcp-grafana, logcli, promtool, mimirtool, tempo-cli, tanka, grafanactl. Use when working with Grafana, Prometheus, Loki, Mimir, Tempo, or observability tooling.
Himalaya email CLI (IMAP/SMTP). Use when working with the himalaya layer.
Heroic Games Launcher for Epic, GOG, and Amazon Prime Gaming with mangohud and gamemode. Use when working with Heroic, Epic Games, GOG, or non-Steam game launchers in containers.
Immich photo management server on port 2283 with PostgreSQL and Redis. Use when working with Immich, photo management, or media library services.
OpenAI Codex CLI coding agent. Use when working with the codex layer.
KDE desktop composition with KWin, PipeWire, XDG Portal, Chrome, Konsole, and Dolphin. Use when working with KWin desktop containers.
GNOME-native desktop applications (gnome-terminal, Nautilus) for Mutter compositor. Use when working with the mutter-apps layer.
Desktop notification client library providing notify-send CLI. Use when working with notify-send, libnotify, or shell-based notifications.
Desktop applications (terminal, file manager) for Niri compositor. Use when working with the niri-apps layer.
Node.js and npm via system packages (RPM/DEB) with global npm prefix. Use when working with Node.js, npm, or JavaScript/TypeScript tooling.
OpenClaw AI gateway service on port 18789 via npm with persistent data. Use when working with OpenClaw, AI gateway configuration, or model routing.
Metalayer composing a full Selkies Wayland streaming desktop with Chrome, Waybar, desktop automation tools, and accessibility introspection. Use when working with the selkies-desktop metalayer composition, labwc desktop, or browser-accessible remote desktops.
RPM Fusion free and nonfree repository configuration for Fedora. Use when working with RPM Fusion repos, multimedia codecs, or nonfree packages.
PostgreSQL database server on port 5432 with pgvector extension and persistent data. Entrypoint supports POSTGRES_SHARED_PRELOAD_LIBRARIES for extension loading. Use when working with PostgreSQL, database configuration, or pgvector.
Audio spectrogram and visualization CLI. Use when working with the songsee layer.
FastAPI test service on port 9090 routed via testapi.localhost for development testing. Use when working with the test API, Traefik routing validation, or service health checks.
SwayNotificationCenter notification daemon for wlroots compositors (sway, labwc). Use when working with desktop notifications, notification center, or swaync configuration.
Arch Linux image with the full ov toolchain. Rootless-first since 2026-04 — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /ov-layers:ov-mcp so the image is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the arch-ov image.
Full-stack AI image: OpenClaw gateway + all tools + Ollama LLM + Whisper STT + sherpa-onnx TTS + Sway desktop with Chrome. GPU-accelerated with CUDA. MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-ollama-sway-browser image.
Full CUDA ML JupyterLab image with real-time collaboration and CRDT MCP server. Base: nvidia. Port 8888. GPU-accelerated ML training + collaborative notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml image.
# Image: selkies-desktop Browser-accessible Wayland desktop streamed via Selkies/pixelflux WebSocket at `https://localhost:3000` (HTTPS with self-signed Traefik certificate). ## Definition ```yaml selkies-desktop: base: fedora-nonfree layers: - agent-forwarding - selkies-desktop - dbus - ov ports: - "3000:3000" - "9222:9222" - "9224:9224" platforms: - linux/amd64 ``` Tunnel config is in `deploy.yml` (not image.yml): `tunnel: {provider: tailscale, priva
Aurora DX bootc image with NVIDIA, SSH, ov toolchain, and Go. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the aurora image.
Test image for Arch Linux pacman and AUR package installation. MUST be invoked before building or troubleshooting the arch-test image.
Agent forwarding support -- GPG, SSH, and direnv for .secrets workflow. Use when working with agent forwarding, SSH/GPG socket forwarding, or the agent-forwarding layer.
Full CUDA ML JupyterLab image with finetuning, Ollama, and LLM course notebooks, CRDT MCP server, and real-time collaboration. Base: nvidia. Port 8888. Combines jupyter-ml with 37 Unsloth fine-tuning notebooks, 6 Ollama integration notebooks, and 15 LLM course notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml-notebook image.
Test layer for AUR package installation on Arch Linux. Use when working with the arch-aur-test layer.
# xterm - X11 Terminal (XWayland) ## Overview Lightweight X11 terminal emulator. On labwc (selkies-desktop), launching xterm triggers XWayland to start on-demand, enabling X11-based automation tools (xdotool, xprop, xwininfo) to find windows. ## Layer Definition ```yaml rpm: packages: - xterm ``` ## Key Properties | Property | Value | |----------|-------| | Depends | None | | Packages | `xterm` | | WM_CLASS | `xterm` / `XTerm` | | XWayland | Triggers on-demand start on labwc | ## Us
Sway Wayland compositor running headless inside containers with Mesa GPU drivers. Use when working with Sway, Wayland desktop, or headless compositor setup.
llama.cpp prebuilt binaries and GGUF conversion tools. Use when working with llama.cpp, GGUF model conversion, or llama-quantize/llama-cli.
MUST be invoked before any work involving: ov config commands, image deployment setup, quadlet generation, secrets provisioning, encrypted volumes, data seeding, or volume backing configuration.
Runtime configuration management for the ov CLI. MUST be invoked before any work involving: ov settings commands, runtime configuration, engine selection, bind address, storage paths, or secret backend configuration.
MUST be invoked before any work involving: virtual machines, ov vm commands, kind:vm entities in vms.yml, cloud_image vs bootc source types, libvirt/QEMU backends, BIOS vs UEFI firmware, virtio-gpu video, or VM lifecycle.
MUST be invoked before any work involving: Wayland / wlroots desktop automation — `ov test wl` commands (screenshots, click/type/scroll/drag, window management via wlrctl, clipboard, resolution control, AT-SPI2 introspection, window geometry), nested `wl sway` / `wl overlay` subcommands, or `wl:` declarative verbs inside `tests:` blocks. Covers sway-desktop and selkies-desktop image automation on both sway and labwc compositors.
MUST be invoked before any work involving: ov shell command, interactive shells, command execution in containers, workspace mounts, TTY allocation, or port relay.
Minimal Sway desktop with VNC remote access and Chrome browser. Use when working with VNC desktop containers or testing the sway-desktop-vnc composition.
Hermes agent with AI CLIs (Claude Code, Codex, Gemini), developer tools, DevOps tools, and ov. Use when working with the hermes-full metalayer or full-featured standalone hermes deployments.
KWin Wayland compositor running headless inside containers with virtual backend. Use when working with KWin, KDE desktop, or headless compositor setup.
System files overlay and justfile imports for bootc images. Copies system_files to root filesystem. Use when working with system file overlays, justfile imports, or bazzite-ai configuration.
MUST be invoked before any work involving: `ov eval` (image / live / run), the `eval:` / `deploy_eval:` fields in layer.yml / image.yml / deploy.yml, the `org.overthinkos.eval` OCI label, the AI iteration harness loop, `kind: ai` / `kind: recipe` / `kind: score` in eval.yml, or any declarative check authoring. Covers the unified post-2026-04 `ov eval` surface (which replaced the legacy `ov test` + `ov harness` commands): three primary modes (image / live / run), 9 live-container probe verbs (cdp/wl/dbus/vnc/mcp/record/spice/libvirt/k8s), verb catalog (file/port/command/http/package/service/process/dns/user/ group/interface/kernel-param/mount/addr/matching), runtime variable resolution (`${HOST_PORT:N}`, `${VOLUME_PATH:name}`, `${CONTAINER_IP}`, `${ENV_*}`), deploy.yml overlay rules, authoring gotchas learned the hard way (package renames, absent binaries, host vs container network routing), AI-iteration loop semantics (plateau-bounded, progressive recipe disclosure, watchdog), and the `from:` block for composing recipes from existing layer/image/pod/vm tests.
LLMs on Supercomputers course notebook collection (TU Wien AI Factory Austria). 15 Jupyter notebooks covering prompt engineering, RAG, and fine-tuning. Data-only layer — no packages, no services, no dependencies. Use when working with the LLM course notebooks, LangChain tutorials, or RAG examples.
OpenRouter API integration notebook collection provisioned into the workspace volume at deploy time. 3 Jupyter notebooks demonstrating OpenRouter API basics, model discovery, and practical inference. Data-only layer with env_requires — first layer to use the env_requires feature. Use when working with notebook-openrouter, OpenRouter API tutorials, or Jupyter+OpenRouter integration.
Full CUDA ML stack + JupyterLab with real-time collaboration and CRDT MCP server on port 8888. Use when working with GPU-accelerated Jupyter notebooks, ML training with collaboration, or the jupyter-ml layer.
llama.cpp prebuilt binaries and GGUF conversion tools. Use when working with llama.cpp, GGUF model conversion, or llama-quantize/llama-cli.
Unsloth LLM fine-tuning library with vLLM integration. Tier 1 post-install layer — no pixi.toml, requires pixi env from a parent layer (python-ml, jupyter-ml, unsloth-studio). Use when working with Unsloth, LLM fine-tuning, or vLLM wheel installation.
Maximal OpenClaw deployment (gateway + browser + all feasible tools/skills). Use when working with the openclaw-full layer.
ClawHub CLI for searching and installing OpenClaw skills. Use when working with the clawhub layer.
Grafana observability CLI tools: mcp-grafana, logcli, promtool, mimirtool, tempo-cli, tanka, grafanactl. Use when working with Grafana, Prometheus, Loki, Mimir, Tempo, or observability tooling.
ComfyUI image generation service on port 8188 with CUDA GPU support. Use when working with ComfyUI, image generation, Stable Diffusion, or AI art pipelines.
Skill maintenance guidelines: when and how to update skills, CLAUDE.md, and README.md. Use when updating documentation, feeding back operational insights, or auditing skill coverage.
Open WebUI with auto-configured LLM providers, MCP servers, and Jupyter code execution. MUST be invoked before any work involving: the openwebui layer, Open WebUI configuration, LLM provider auto-detection, or MCP server discovery for Open WebUI.
NVIDIA GPU runtime support: driver libs, nvidia-container-toolkit (CDI), and VA-API. Fedora (negativo17) and Arch Linux (pac). Base layer for all GPU-accelerated images. Use when working with NVIDIA GPU support, CDI device injection, or the nvidia layer.
Google Places API CLI for location search. Use when working with the goplaces layer.
OpenSSH client tools for SSH agent forwarding. Use when working with SSH client, SSH agent forwarding, or the ssh-client layer.
FastAPI test service on port 9090 routed via testapi.localhost for development testing. Use when working with the test API, Traefik routing validation, or service health checks.
Visual Studio Code editor installed from Microsoft's RPM repository. Use when working with VS Code installation or configuration in container images.
OpenAI Whisper local speech-to-text. Use when working with the whisper layer.
Playwright browser automation (OpenClaw AI snapshots). Use when working with the playwright layer.
Desktop applications including Chromium, VLC, KeePassXC, btop, cockpit, and zsh. Use when working with GUI applications or desktop environment setup.
Authoring reference for kind:vm entities in vms.yml. Parallel to /ov-build:layer and /ov-build:image. Covers the VmSpec schema, source.kind discriminator (cloud_image vs bootc), base_user adopt pattern, and step-by-step recipes for both source kinds. MUST be invoked before authoring or editing vms.yml entries.
Ollama LLM server on port 11434 with CUDA GPU support and model persistence. Use when working with Ollama, LLM serving, or local AI model inference.
RTSP/ONVIF camera snapshot and clip CLI. Use when working with the camsnap layer.
Fast system information tool (neofetch successor). Use when working with the fastfetch layer.
Minimal Sway desktop with VNC remote access and Chrome browser. Use when working with VNC desktop containers or testing the sway-desktop-vnc composition.
Post-build layer optimization via merging consecutive small layers. MUST be invoked before any work involving: ov image merge command, image layer reduction, merge configuration, or post-build optimization.
Record terminal sessions (asciinema) or desktop video (pixelflux/wf-recorder). MUST be invoked before any work involving: ov test record commands, terminal recording, desktop video recording, or session capture.
MUST be invoked before any work involving: ov start/stop/status/logs/update/remove commands, ov config (deployment), init system service management, or container lifecycle.
Stop a running service container. MUST be invoked before any work involving: ov stop command, stopping containers, or halting services.
Kubernetes cluster probe verb — `ov test k8s <method>` for nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs. Hermetic via vendored client-go; no external kubectl required.
Update image and restart service with data sync. MUST be invoked before any work involving: ov update command, pulling new image versions, data seeding, force-seed, or updating deployed services.
Record terminal sessions (asciinema) or desktop video (pixelflux/wf-recorder). MUST be invoked before any work involving: ov eval record commands, terminal recording, desktop video recording, or session capture.
Fullscreen Wayland overlays for screen recordings via gtk4-layer-shell. MUST be invoked before any work involving: ov eval wl overlay commands, recording overlays, title cards, lower-thirds, countdowns, or fade transitions.
MUST be invoked before any work involving: OCI label contract, Capabilities / ImageMetadata struct, CapabilityLabelMap completeness check, LabelServices structured round-trip, source-less deploy via `ov deploy from-image`, or adding a new OCI label. Developer-facing; users author via `/ov-build:layer` and `/ov-build:image`.
FileBrowser Quantum web file manager with Tailscale tunnel. MUST be invoked before building, deploying, configuring, or troubleshooting the filebrowser image.
Operationalization of CLAUDE.md R1-R5 — the engineering-discipline rules that come BEFORE runtime verification. Covers: (R1) RCA on every failure via /ov-dev:root-cause-analyzer; (R2) no "pre-existing" / "out of scope" / "follow-up PR" classifications; (R3) no code duplication, generic over ad-hoc; (R4) no ad-hoc workarounds; (R5) hard cutover deletes the deprecated path AND every stale reference in the same commit. MUST be invoked when a failure / warning / anomaly surfaces, when the same pattern is about to land in a second surface, when a sleep / retry / magic-number is tempting, or when a cutover commit is about to ship.
Base composition for bootc OS images including SSH, QEMU guest agent, and bootc config. Use when working with bootable container images, VMs, or OS-level configuration.
Kubernetes cluster probe verb — `ov eval k8s <method>` for nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs. Hermetic via vendored client-go; no external kubectl required.
Containerfile generation: understanding ov image generate output, multi-stage builds, intermediate images, and the .build/ directory. Use when debugging or understanding generated Containerfiles. MUST be invoked before reading or modifying any Go source file in ov/.
MUST be invoked before any work involving: `ov deploy add`/`ov deploy del` commands, quadlet generation, volume backing, tunnels (Tailscale/Cloudflare), `add_layers:` overlay, or per-machine deploy overlays.
MUST be invoked before any work involving: `ov deploy add --target kubernetes`, `ov deploy from-image`, Kustomize manifest generation, cluster profiles, K8s deployments, `kubernetes:` block in deploy spec, or OCI-label capabilities.
Pixi package manager binary with environment and PATH setup. Use when working with pixi, conda-forge packages, or Python environment management.
List components from image.yml and filesystem. MUST be invoked before any work involving: ov image list commands, enumerating images, layers, build targets, services, routes, volumes, or aliases.
Go programming language compiler via RPM package. Use when working with Go development or Go builds.
Terminal session recorder (asciinema). Use when working with the asciinema layer.
GitHub CLI, git, and git-lfs — the single-responsibility home for all git/GitHub tooling as of 2026-04. Ships the noscripts + post-install dance for git-lfs so the RPM's systemd trigger doesn't fail at build time. Use when composing git + gh + git-lfs into an image, or when deciding which layer should own a git-related binary.
GitHub Actions local runner (act-cli) and guestfs-tools via COPR. Use when working with GitHub Actions, local CI testing, or act.
Immich photo management with CUDA ML backend for face recognition and smart search. Includes PostgreSQL, Redis, and the immich-ml service. MUST be invoked before building, deploying, configuring, or troubleshooting the immich-ml image.
OpenClaw full + ML tools (whisper, sherpa-onnx-tts, CUDA). Use when working with the openclaw-full-ml layer.
Open WebUI image with auto-configured LLM providers, MCP servers, and Jupyter on port 8080. MUST be invoked before building, deploying, configuring, or troubleshooting the openwebui image.
Fully rootless Selkies streaming desktop + the full ov toolchain inside one image. Runs as uid 1000 with zero --privileged / zero cap_add; nested rootless podman and rootless libvirt session VMs work via config-level namespace sharing and the surgical unmask=/proc/* security_opt. Use when working with the selkies-desktop-ov image — especially for any "browser-accessible desktop that can itself build images, start pods, or launch VMs" workflow.
Go CLI development: building the ov binary, running tests, understanding the source code structure. MUST be invoked before reading or modifying any Go source file in ov/.
# Image: selkies-desktop Browser-accessible Wayland desktop streamed via Selkies/pixelflux WebSocket at `https://localhost:3000` (HTTPS with self-signed Traefik certificate). ## Definition ```yaml selkies-desktop: base: fedora-nonfree layers: - agent-forwarding - selkies-desktop - dbus - ov ports: - "3000:3000" - "9222:9222" - "9224:9224" platforms: - linux/amd64 ``` Tunnel config is in `deploy.yml` (not image.yml): `tunnel: {provider: tailscale, priva
Himalaya email CLI (IMAP/SMTP). Use when working with the himalaya layer.
Python 3.13 runtime installed via pixi (conda-forge). Use when working with Python, pixi environments, or Python dependencies.
ElevenLabs text-to-speech CLI. Use when working with the sag layer.
X (Twitter) API CLI for posts, search, DMs, and media. Use when working with the xurl layer.
Hermes self-improving AI agent by Nous Research with voice, messaging, and tool-calling. MUST be invoked before any work involving: the hermes layer, Hermes Agent configuration, hermes service setup, or hermes Python/npm dependencies.
# a11y-tools - AT-SPI2 Accessibility Introspection ## Overview Provides Python AT-SPI2 bindings for querying the accessibility tree of GTK, Qt, and Chrome applications. Enables element-based automation — find buttons, menus, and text fields by name/role instead of pixel coordinates. Used by `ov eval wl atspi tree/find/click`. ## Layer Definition ```yaml requires: - dbus rpm: packages: - python3-pyatspi - python3-gobject ``` ## Key Properties | Property | Value | |----------|-
Heroic Games Launcher for Epic, GOG, and Amazon Prime Gaming with mangohud and gamemode. Use when working with Heroic, Epic Games, GOG, or non-Steam game launchers in containers.
Google Chrome with DevTools on port 9222, Chrome DevTools MCP on port 9224, and browser-open helper. Use when working with Chrome, CDP, browser automation, or DevTools Protocol.
FFmpeg multimedia framework (negativo17 nonfree build with H.264/AAC support). Use when working with the ffmpeg layer.
Unsloth Studio fine-tuning web UI on ports 8888/8000 with vLLM inference. Tier 2 environment-owner meta-layer composing llama-cpp + unsloth, owns pixi.toml. Use when working with Unsloth Studio, the fine-tuning web UI, or the unsloth-studio image.
WayVNC server on port tcp:5900 for remote access to Wayland desktops. Use when working with VNC access, remote desktop, or wayvnc configuration.
Unsloth LLM fine-tuning library with vLLM integration. Tier 1 post-install layer — no pixi.toml, requires pixi env from a parent layer (python-ml, jupyter-ml, unsloth-studio). Use when working with Unsloth, LLM fine-tuning, or vLLM wheel installation.
Metalayer composing a full Selkies Wayland streaming desktop with Chrome, Waybar, desktop automation tools, and accessibility introspection. Use when working with the selkies-desktop metalayer composition, labwc desktop, or browser-accessible remote desktops.
PulseAudio volume control GUI for desktop containers with PipeWire audio. Use when working with audio configuration or volume control.
MUST be invoked before any work involving: Chrome DevTools Protocol, ov eval cdp commands, browser automation, clicking elements, taking screenshots, or OAuth flows inside containers.
D-Bus interaction inside containers via native Go godbus/dbus/v5. MUST be invoked before any work involving: ov eval dbus commands, desktop notifications, D-Bus method calls, service introspection, or session bus interaction.
MUST be invoked before any work involving: `target: local` deployments (was `target: host`), the Ansible-style `host:` destination field (literal `local` for direct shell, anything else routes through ssh(1) reading `~/.ssh/config` + ssh-agent), the `local:` template reference, the `user:` and `ssh_args:` Ansible-shaped overrides, the managed `~/.config/ov/ssh_config` fragment, the install ledger at `~/.config/overthink/installed/`, ReverseOp teardown, or the `--with-services`/`--allow-repo-changes`/`--allow-root-tasks` gates.
MUST be invoked before any work involving: Wayland / wlroots desktop automation — `ov eval wl` commands (screenshots, click/type/scroll/drag, window management via wlrctl, clipboard, resolution control, AT-SPI2 introspection, window geometry), nested `wl sway` / `wl overlay` subcommands, or `wl:` declarative verbs inside `eval:` blocks. Covers sway-desktop and selkies-desktop image automation on both sway and labwc compositors.
MUST be invoked before any work involving: Model Context Protocol — both directions. (1) `ov eval mcp` client: probing MCP servers declared via mcp_provides, testing MCP tool catalogs, debugging the URL-rewriter (including host-networked containers via `HostConfig.NetworkMode` detection — new 2026-04) or port-publishing behavior. (2) `ov mcp serve` server: running the ov CLI itself as an MCP server over Streamable HTTP or stdio, auto-generated from Kong reflection (~192 tools including the MCP-first authoring surface — image/layer scaffolding, comment-preserving YAML edits, free-form file writes), destructive-hint annotations, the `--read-only` filter, auto-fallback to `overthinkos/overthink` when cwd has no `image.yml` (always fires now, regardless of OV_PROJECT_DIR being set — 2026-04 change), and the `ov-mcp` deployment layer with its `/workspace` bind mount.
MUST be invoked before any work involving: the `ov image` command family, image definitions in image.yml, image inheritance, defaults, platforms, builder configuration, the image dependency graph, or the build/deploy scope boundary.
Containerfile generation from image.yml and layers. MUST be invoked before any work involving: ov image generate command, Containerfile generation, .build/ directory contents, the task-verb emission pipeline, or understanding generated output.
MUST be invoked before any work involving: authoring `kind: local` templates (the post-cutover replacement for `kind: host`), `local.yml` files, the inline `local:` map in `overthink.yml`, or the merge semantics between a `kind: local` template and a `target: local` deployment.
MUST be invoked before any work involving: virtual machines, ov vm commands, kind:vm entities in vms.yml, cloud_image vs bootc source types, libvirt/QEMU backends, BIOS vs UEFI firmware, virtio-gpu video, or VM lifecycle.
MUST be invoked before any work involving: VNC automation, ov eval vnc commands, RFB protocol desktop interaction, VNC screenshots, clicking coordinates, or VNC authentication.
MUST be invoked before any work involving: `ov migrate unified` command (converting legacy image.yml/layer.yml/build.yml into unified overthink.yml, rewriting flat-form layer.yml, migrating legacy service:|...| raw-INI and system_services: entries), or `ov migrate vm-spec` (harvesting legacy image.bootc/image.vm/image.libvirt fields into kind:vm entities in vms.yml).
Kitchen-sink development image on Arch Linux: coding + AI-coding CLIs + DevOps tooling in one container. Arch base, 30+ direct layers mirroring fedora-coder's stack but with pac:-section packages (plus AUR for a few unique cases). Runs as uid 1000 (`user`) with passwordless sudo. Use when working with the arch-coder image — or when comparing cross-distro parity across the four coder-family images (fedora, debian, ubuntu, arch).
MUST be invoked before any work involving: ov secrets commands, KeePass .kdbx credential management, credential import/export, or secret database administration.
MUST be invoked before any work involving: layer authoring, layer.yml, tasks, pixi.toml, package.json, Cargo.toml, or any file under layers/. This skill is the authoritative reference for the `tasks:` verb catalog, `vars:` substitution, execution order, and per-verb validation. Every other skill defers here for install-schema questions.
# Layer: waybar-labwc Waybar status bar adapted for labwc compositor (not sway). Uses the same unified config as the `waybar` layer — sway-specific modules (workspaces, mode) auto-hide on labwc since `SWAYSOCK` is not set. ## Architecture Waybar connects to `wayland-0` (labwc's socket), NOT `wayland-1` (pixelflux). This is critical for: - **Layer-shell exclusive zones** — Waybar reserves space at the top, windows don't overlap it - **wlr-foreign-toplevel-management** — Waybar's taskbar can se
C/C++ build toolchain with gcc, cmake, autoconf, ninja, git, and pkg-config. Use when working with native compilation, build tools, or C/C++ development.
Kitchen-sink development image on Debian 13 trixie: coding + AI-coding CLIs + DevOps tooling in one container. Debian base, 30+ direct layers mirroring fedora-coder's stack but with deb: sections. Runs as uid 1000 (`user`) with passwordless sudo. 143/0 tests pass as of 2026-04-20. Use when working with the debian-coder image — or when comparing cross-distro parity across the four coder-family images.
direnv -- automatic environment variable loading from .envrc files. Use when working with direnv, .envrc, .secrets, or environment management.
DevOps CLI tools: AWS CLI, Scaleway, kubectx/kubens, OpenTofu, wrangler, bind-utils, jq, rsync. Use when working with cloud infrastructure, DNS lookups, infrastructure-as-code, or DevOps tooling.
Docker CE engine with buildx and compose plugins from the official Docker repository. Use when working with Docker, container builds, or Docker Compose.
Wayland screen recorder for wlroots compositors. Use when working with the wf-recorder layer.
WayVNC server on port tcp:5900 for remote access to Wayland desktops. Use when working with VNC access, remote desktop, or wayvnc configuration.
Google Cloud npm packages: firebase-tools and Gemini CLI. Use when working with Firebase, Gemini CLI, or GCP Node.js tooling.
Google Cloud SDK providing gcloud, gsutil, and bq CLI tools. Use when working with Google Cloud Platform, GCP services, or cloud SDK configuration.
Go programming language compiler via RPM package. Use when working with Go development or Go builds.
Kitchen-sink development image: coding + AI-coding CLIs + DevOps tooling in one container. Fedora-nonfree base, 32 direct layers spanning language runtimes, build tooling, five AI coding CLIs, and the full cloud/devops stack. Runs as uid 1000 with passwordless sudo — rootless-first, matches the /ov-selkies:selkies-desktop-ov security posture. Use when working with the fedora-coder image — specifically any task that involves SSH-ing into a single container and having every tool a polyglot engineer reaches for during a working day already installed.
Multi-language runtime meta-layer — Go, PHP, .NET 9 SDK, nodejs-devel, python3-devel, ramalama. System Python via RPM (not pixi-python). Uses nodejs and rust layers as explicit deps. Use when working with polyglot development or composing multiple language runtimes into a single image.
OpenAI Whisper local speech-to-text. Use when working with the whisper layer.
Valkey 9.x key-value store (Redis-compatible) on port 6379 via Remi modular repo. Use when working with Valkey, Redis-compatible caching, or the valkey layer.
MCP server exposing the full ov CLI as tools (Streamable HTTP on port 18765). Meta-layer composition — layers: [ov, supervisord] — ships only service wiring + `/workspace` bind-mount + OV_PROJECT_DIR env plumbing. Auto-falls back to the upstream overthinkos/overthink repo when /workspace has no image.yml. Use when composing an MCP gateway into any image so LLM agents can drive ov remotely.
Lightweight Wayland compositor (wlroots-based) for nested desktop inside pixelflux. MUST be invoked when working with: the labwc layer, Wayland compositor config in selkies images, or labwc-wrapper.
Sway Wayland compositor running headless inside containers with Mesa GPU drivers. Use when working with Sway, Wayland desktop, or headless compositor setup.
SwayNotificationCenter notification daemon for wlroots compositors (sway, labwc). Use when working with desktop notifications, notification center, or swaync configuration.
Base Sway desktop composition with audio, portals, Wayland tools, Chrome, terminal, file manager, and status bar. Use sway-desktop-vnc for VNC remote access.
Rust compiler and Cargo package manager via system packages (RPM/DEB). Use when working with Rust development or Cargo builds.
Pre-commit git hooks framework via pixi, plus markdownlint-cli via npm. Use when working with git hooks, linting, or code quality tooling.
Typst document processor binary for typesetting and document generation. Use when working with Typst, document compilation, or typesetting tools.
# xdg-portal - XDG Desktop Portal Infrastructure ## Overview Provides XDG Desktop Portal support for Sway containers. Installs the portal daemon, the wlroots-specific backend (`xdg-desktop-portal-wlr`), and the GTK fallback backend. Enables screen sharing, screenshots via portal API, and file dialogs for applications running inside the container. ## Layer Definition ```yaml depends: - dbus - sway - pipewire env: XDG_CURRENT_DESKTOP: "sway" rpm: packages: - xdg-desktop-portal
MUST be invoked before any work involving: ov config commands, image deployment setup, quadlet generation, secrets provisioning, encrypted volumes, data seeding, or volume backing configuration.
Full ov toolchain composition with CLI, virtualization, encrypted storage, and console access. Works identically on container/pod targets AND on host/local/bootc targets via the unified virtualization layer's mixed-`service:` schema. The previous ov-full-host sibling was deleted in the 2026-05 init-system-polymorphism cutover.
uv + uvx — Astral's fast Python package/project manager. Rewritten 2026-04 to install as a direct-download binary (no pixi env, no Python dep). Pulled via the `download:` verb with `strip_components: 1` to handle the upstream tarball's arch-prefixed top-level directory. Use when working with the uv layer or when deciding whether to install a CLI tool via pixi vs. direct binary download.
MUST be invoked before any work involving: `ov deploy add`/`ov deploy del` commands, quadlet generation, volume backing, tunnels (Tailscale/Cloudflare), `add_layers:` overlay, or per-machine deploy overlays.
Oracle CLI for prompt bundling and multi-engine AI queries. Use when working with the oracle layer.
Start a container as a background service. MUST be invoked before any work involving: ov start command, launching containers, quadlet vs direct mode startup, or encrypted volume auto-mounting.
WhatsApp CLI for message sending and history sync. Use when working with the wacli layer.
Node.js 24 and npm via Fedora RPM packages with global npm prefix. Use when working with Node.js 24 or applications requiring a newer Node.js version.
MUST be invoked before any work involving: ov start/stop/status/logs/update/remove commands, ov config (deployment), init system service management, or container lifecycle.
Authoritative reference for the "Hard Cutover by Default" policy governing schema changes, API renames, and deprecations. Forbidden patterns, required deliverables, rationale, examples from this repo, and the no-exception enforcement: plans are authored as full-scope single-phase cutovers and executed end-to-end regardless of estimated time, context, or scope. MUST be invoked when planning or reviewing any breaking change to Go types, YAML field names, CLI flags, or OCI labels.
Visual Studio Code editor installed from Microsoft's RPM repository. Use when working with VS Code installation or configuration in container images.
`disposable: true` is the ONE and ONLY authorization for autonomous destroy + rebuild via `ov update`. MUST be invoked before any task involving `ov update`, live verification on rebuildable targets, or marking a VM / container deploy as safe-to-nuke. Explains why disposability is a DEPLOY property (not an image property), the separation between load-bearing `disposable:` and informational `lifecycle:`, why derivation is deliberately absent, and how the flag makes live verification fearless on shared hosts.
Go programming language compiler via RPM package. Use when working with Go development or Go builds.
Service status display with tool probes and device detection. MUST be invoked before any work involving: ov status command, checking container state, tool availability, port mapping, or JSON status output.
# wl-tools - Compositor-Agnostic Desktop Automation Tools ## Overview Provides CLI tools for desktop automation — Wayland-native, X11, and clipboard. Used by the `ov eval wl` command. Works on all wlroots compositors (sway, labwc). No daemon or special device access needed. **Note:** Screenshots are NOT included in this layer. Use `wl-screenshot-grim` (sway) or `wl-screenshot-pixelflux` (selkies) depending on your compositor. ## Layer Definition ```yaml rpm: packages: - wtype - wl
Wayland overlay windows via gtk4-layer-shell (for screen recordings). Use when working with the wl-overlay layer, gtk4-layer-shell, or overlay dependencies.
VmDeployTarget is the 4th DeployTarget implementer (after OCITarget, PodDeployTarget, HostDeployTarget; K8sDeployTarget is 5th). Applies an InstallPlan inside a running VM over SSH. Covers DeployExecutor interface, SSHExecutor, LocalExecutor, VmDeployState persistence, and the guest-side ledger. Source: ov/deploy_target_vm.go, ov/deploy_executor*.go, ov/deploy_add_cmd_vm.go. MUST be invoked before editing VM-target deploy code.
The InstallPlan IR — the shared intermediate representation consumed by build-mode Containerfile emission (OCITarget), container deploys (ContainerDeployTarget), host deploys (HostDeployTarget), VM deploys (VmDeployTarget over SSH), and Kubernetes deploys (KubernetesDeployTarget). MUST be invoked before reading or modifying any of: ov/install_plan.go, ov/install_build.go, ov/build_target_oci.go, ov/deploy_target_host.go, ov/deploy_target_container.go, ov/deploy_target_vm.go, ov/deploy_target_k8s.go, or when adding a new step kind / deploy target / reverse-op kind.
Desktop video recorder via selkies WebSocket capture bridge for selkies-desktop. Use when working with the wl-record-pixelflux layer.
MUST be invoked before any work involving: building container images, ov image build command, pushing to registries, merging layers, build caches, or Containerfile generation.
Go file map for the target:local execution surface. Files: local_spec.go, deploy_target_local.go, unified_targets_local.go, ssh_managed_config.go, hostdistro.go, install_ledger.go, builder_run.go, shell_profile.go, reverse_ops.go, service_render.go, deploy_ref.go. MUST be invoked before reading or modifying any of those files, or when debugging target:local deploy behaviour (ledger state, sudo batching, managed-block insertion, glibc preflight, ssh-config fragment, ref resolution).
FileBrowser Quantum web file manager on port 8080 with config-file-driven setup. Use when working with FileBrowser, web file management, or file browsing in containers.
Test layer for AUR package installation on Arch Linux. Use when working with the arch-aur-test layer.
COPR and external desktop packages: CoolerControl, Ghostty terminal, Nerd Fonts, WinBoat. Use when working with COPR repositories or these desktop applications in bootc images.
Cloud-init for instance initialization in cloud/VM environments with NoCloud datasource. Use when working with cloud-init, VM provisioning, or cloud instance bootstrapping.
CUDA toolkit, cuDNN, ONNX Runtime, and NVIDIA GPU development libraries from negativo17 repos. Depends on the nvidia layer for runtime support. Use when working with GPU computing, CUDA, cuDNN, machine learning infrastructure, or NVIDIA development tools.
Blog/RSS feed monitor CLI. Use when working with the blogwatcher layer.
Screenshot via selkies WebSocket capture bridge for selkies-desktop. Use when working with the wl-screenshot-pixelflux layer.
Rootless nested podman/buildah/skopeo recipe. Ships zero cap_add — works via surgical `unmask=/proc/*` security_opt plus dual-location containers.conf/storage.conf/policy.json plus two canonical env vars plus subuid layout that fits inside the outer user namespace. Authoritative source for the `mount_too_revealing()` kernel RCA. Use when working with nested containers, the container-nesting layer, or any "rootless-in-rootless podman" question.
GnuPG encryption and signing tools for GPG agent forwarding. Use when working with GPG, encryption, signing, or the gnupg layer.
GitHub Actions self-hosted runner as a supervised container service. Use when working with GitHub Actions runners, CI/CD infrastructure, or runner registration.
Host dependency checker and hardware detector. Use when diagnosing host setup, checking dependencies, or verifying GPU detection.
Single command execution in a running container with D-Bus notification. MUST be invoked before any work involving: ov cmd command, running commands in containers, or container exec with notifications.
Fetch an image from its registry into local container storage so deploy-mode commands can read its OCI labels. MUST be invoked before any work involving: ov image pull command, the ErrImageNotLocal error, fetching images by short name / fully-qualified ref / @github.com/... remote ref, or recovering deploy-mode commands that fail with "image X is not available locally".
GIF search and download CLI. Use when working with the gifgrep layer.
MUST be invoked before any work involving: the `ov image` command family, image definitions in image.yml, image inheritance, defaults, platforms, builder configuration, the image dependency graph, or the build/deploy scope boundary.
Containerfile generation from image.yml and layers. MUST be invoked before any work involving: ov image generate command, Containerfile generation, .build/ directory contents, the task-verb emission pipeline, or understanding generated output.
Agent forwarding support -- GPG, SSH, and direnv for .secrets workflow. Use when working with agent forwarding, SSH/GPG socket forwarding, or the agent-forwarding layer.
Encrypted filesystem (gocryptfs) for ov config encrypted volume operations. Use when working with encrypted volumes, ov config mount/unmount, or filesystem encryption.
Xfce4 terminal emulator for Sway desktop environments with sway config integration. Use when working with terminal emulators in Sway desktop containers.
Configure KeePassXC as the freedesktop.org Secret Service provider on a target:local host: enable FdoSecrets, autostart KeePassXC, disable competing daemons (gnome-keyring + kwallet) at the per-user XDG-autostart and systemd-user-unit layers, install pinentry/libsecret/keyutils, and install generic direnv shell hooks for bash/zsh/fish. Use when adding KeePassXC as the Secret Service backend on a host (NOT for adding the binary to a container image — use /ov-foundation:keepassxc for that).
D-Bus session bus for inter-process communication inside containers. Use when working with D-Bus, desktop services, Wayland compositor dependencies, or ov eval dbus commands.
MCP server CLI for listing, configuring, and calling MCP tools. Use when working with the mcporter layer.
nano-pdf CLI for PDF editing with natural language. Use when working with the nano-pdf layer.
OS system configuration for bootc images: SDDM/KDE cleanup, systemd preset, /opt permissions, initramfs rebuild. Use when working with bootc OS configuration, systemd presets, or initramfs in bootable containers.
Food delivery order status CLI (Foodora). Use when working with the ordercli layer.
Overthink CLI (ov) binary installed into container/VM images for in-container use. Use when working with ov binary deployment inside containers, native D-Bus support, or the ov-full composition.
System files overlay and justfile imports for bootc images. Copies system_files to root filesystem. Use when working with system file overlays, justfile imports, or bazzite-ai configuration.
Google Workspace CLI (Gmail, Calendar, Drive, Contacts, Sheets, Docs). Use when working with the gogcli layer.
Core ML/AI Python environment with PyTorch, vLLM runtime deps, and CUDA support. Tier 2 environment-owner meta-layer that composes llama-cpp. Use when working with machine learning, PyTorch, HuggingFace, or GPU computing.
Fast recursive text search (rg). Use when working with the ripgrep layer.
PostgreSQL database server on port 5432 with pgvector extension and persistent data. Entrypoint supports POSTGRES_SHARED_PRELOAD_LIBRARIES for extension loading. Use when working with PostgreSQL, database configuration, or pgvector.
sherpa-onnx offline text-to-speech. Use when working with the sherpa-onnx layer.
Socket relay tool for VM console access and port relays (eth0 to loopback). Use when working with port relays, socat, or loopback service exposure.
Summarize CLI for extracting text/transcripts from URLs and files. Use when working with the summarize layer.
SQLite database CLI. Use when working with the sqlite layer.
Supervisord process manager for running multiple services inside containers. Use when working with supervisord, container service management, multi-process containers, event listeners for crash-loop circuit breaking, or service priority ordering.
Tailscale runtime wiring for target:local hosts. Sets `--operator=$account` + `--hostname=$(hostname -s)` so user-systemd ExecStartPost can run `tailscale serve` without sudo, and the tailnet device name stays in sync with the system hostname. Depends on /ov-foundation:tailscale (which installs the daemon). Self-gates on `systemctl is-active tailscaled` so it's a no-op in image-build / pre-auth contexts. Use when adding deploy-runtime tailscale wiring to a target:local host (canonical consumer: local.ov-cachyos) — distinct from the tailscale layer which only installs + enables the daemon.
Chrome DevTools MCP server via mcp-proxy (Streamable HTTP on port 9224). Use when working with the chrome-devtools-mcp layer, MCP-based browser automation, or the mcp-proxy stdio-to-HTTP bridge pattern.
QEMU guest agent for host-guest communication in virtual machines. Use when working with QEMU/KVM VMs, guest agent setup, or libvirt channel configuration.
Just task runner with ujust wrapper for Universal Blue justfile conventions. Use when working with just/ujust task runners or ublue-os justfile integration.
Valkey 9.x key-value store (Redis-compatible) on port 6379 via Remi modular repo. Use when working with Valkey, Redis-compatible caching, or the valkey layer.
Traefik reverse proxy on ports 8000/8080/443 with automatic TLS and dynamic routing. Use when working with Traefik, reverse proxy, TLS certificates, or service routing.
QEMU/KVM/libvirt stack — works identically under supervisord (containers/ pods, custom `exec:` form) AND under systemd (host installs / bootc / VMs, use_packaged: virtqemud.socket / virtnetworkd.socket). Uses the mixed-entry `service:` schema (CLAUDE.md "Init-system polymorphism") — same name appears twice in the service: list, init system at deploy time picks the matching form. Canonical worked example of the polymorphism pattern.
Tailscale mesh VPN (tailscaled service). Installs the tailscale package from upstream, enables tailscaled.service via systemd. Use when adding Tailscale as a standalone systemd service to an image — distinct from the deploy-time Tailscale tunnel/sidecar model.
Hermes agent with AI CLIs (Claude Code, Codex, Gemini), developer tools, DevOps tools, and ov. Use when working with the hermes-full metalayer or full-featured standalone hermes deployments.
Immich photo management server on port 2283 with PostgreSQL and Redis. Use when working with Immich, photo management, or media library services.
Playwright Chromium browser for Hermes Agent with Fedora-compatible system deps. MUST be invoked before any work involving: Playwright in hermes containers, Chromium browser automation for hermes, or hermes-playwright layer configuration.
Sway desktop with VNC remote access via wayvnc on port 5900. Composes sway-desktop base with wayvnc.
Desktop notification client library providing notify-send CLI. Use when working with notify-send, libnotify, or shell-based notifications.
JupyterLab CRDT MCP server extension with 11 tools (notebook_*/cell_* + room_list + notebook_list_users) for programmatic notebook access. MUST be invoked when working with: the MCP server implementation, CRDT collaboration, the auto-attach single-room invariant, or the Tier 1 pip-only installation pattern for jupyter extensions.
Unsloth fine-tuning notebook collection provisioned into the workspace volume at deploy time. Data-only layer — no packages, no services, no dependencies. Use when working with notebook-finetuning, Unsloth training notebooks, or unsloth-studio data provisioning.
First kind:vm entity with source.kind: cloud_image — fetches the Arch Linux cloud qcow2 from pkgbuild.com, applies cloud-init, boots under libvirt/QEMU via BIOS firmware + virtio-gpu. Documents the stale-BOOTX64.EFI RCA, the simpledrm→qxldrmfb takeover race, the adopt-user pattern, and resource sizing. MUST be invoked before editing arch in vms.yml or authoring another cloud_image VM from a template.
Ollama integration notebook collection provisioned into the workspace volume at deploy time. 6 Jupyter notebooks demonstrating Ollama via requests, OpenAI, ollama lib, Anthropic, HuggingFace, and GPU. Data-only layer — no packages, no services, no dependencies. Use when working with notebook-ollama, Ollama API tutorials, or Jupyter+Ollama integration.
Immich machine learning backend on port 3003 for photo classification and search. Use when working with Immich ML features, face detection, or CLIP search.
# Layer: waybar-labwc Waybar status bar adapted for labwc compositor (not sway). Uses the same unified config as the `waybar` layer — sway-specific modules (workspaces, mode) auto-hide on labwc since `SWAYSOCK` is not set. ## Architecture Waybar connects to `wayland-0` (labwc's socket), NOT `wayland-1` (pixelflux). This is critical for: - **Layer-shell exclusive zones** — Waybar reserves space at the top, windows don't overlap it - **wlr-foreign-toplevel-management** — Waybar's taskbar can se
# xdg-portal - XDG Desktop Portal Infrastructure ## Overview Provides XDG Desktop Portal support for Sway containers. Installs the portal daemon, the wlroots-specific backend (`xdg-desktop-portal-wlr`), and the GTK fallback backend. Enables screen sharing, screenshots via portal API, and file dialogs for applications running inside the container. ## Layer Definition ```yaml requires: - dbus - sway - pipewire env: XDG_CURRENT_DESKTOP: "sway" rpm: packages: - xdg-desktop-portal
Wayland screen recorder for wlroots compositors. Use when working with the wf-recorder layer.
# wl-screenshot-grim - Screenshot via grim (wlr-screencopy) ## Overview Provides `grim` for Wayland screenshot capture using the `wlr-screencopy` protocol. Works on sway and standalone wlroots compositors. **Does NOT work on selkies-desktop** (labwc nested in pixelflux can't deliver screencopy frames). For selkies-desktop, use `wl-screenshot-pixelflux` instead. ## Layer Definition ```yaml rpm: packages: - grim ``` ## Key Properties | Property | Value | |----------|-------| | Depends
MUST be invoked before any work involving: ov secrets commands, KeePass .kdbx credential management, credential import/export, or secret database administration.
MCP server exposing the full ov CLI as tools (Streamable HTTP on port 18765). Meta-layer composition — layers: [ov, supervisord] — ships only service wiring + `/workspace` bind-mount + OV_PROJECT_DIR env plumbing. Auto-falls back to the upstream overthinkos/overthink repo when /workspace has no image.yml. Use when composing an MCP gateway into any image so LLM agents can drive ov remotely.
Tailscale mesh VPN (tailscaled service). Installs the tailscale package from upstream, enables tailscaled.service via systemd. Use when adding Tailscale as a standalone systemd service to an image — distinct from the deploy-time Tailscale tunnel/sidecar model.
Bootable (bootc) VM image combining the selkies-desktop streaming desktop with Tailscale (mesh VPN) and KeePassXC (password manager). Fedora 43 base. Boots under libvirt/QEMU as a full OS. Canonical worked example of the external-base-bootc + explicit-distro pattern. MUST be invoked before building, deploying, or troubleshooting selkies-desktop-bootc.
Minimal Ubuntu 24.04 builder image (pixi + Node.js + build-toolchain) used as the multi-stage builder for Ubuntu-based images — currently ubuntu-coder. Runs as uid 1000 `ubuntu` (adopted from the upstream ubuntu:24.04 base image via build.yml's base_user declaration). MUST be invoked before building, deploying, configuring, or troubleshooting the ubuntu-builder image.
KeePassXC password manager desktop app. Single-responsibility layer (rpm+pac, one test). Use when adding KeePassXC to an image as a standalone layer rather than pulling in the broader desktop-apps grab-bag.
MUST be invoked before any work involving: ov image validate command, validation rules, common validation errors, or checking image.yml and layer definitions.
MUST be invoked before any work involving: VNC automation, ov test vnc commands, RFB protocol desktop interaction, VNC screenshots, clicking coordinates, or VNC authentication.
FileBrowser Quantum web file manager with Tailscale tunnel. MUST be invoked before building, deploying, configuring, or troubleshooting the filebrowser image.
Summarize CLI for extracting text/transcripts from URLs and files. Use when working with the summarize layer.
Kubernetes client tools: kubectl and Helm package manager. Use when working with Kubernetes, kubectl, or Helm charts.
Builder image with pixi, Node.js, and C/C++ build toolchain. Used as the default builder for multi-stage image builds. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-builder image.
MUST be invoked before any work involving: building container images, ov image build command, pushing to registries, merging layers, build caches, or Containerfile generation.
Starter notebook templates provisioned into the workspace volume at deploy time. First data-only layer in the project — no packages, no services, no dependencies. Use when working with notebook-templates, data layers, or jupyter initial content.
Update image and restart service with data sync. MUST be invoked before any work involving: ov update command, pulling new image versions, data seeding, force-seed, or updating deployed services.
MUST be invoked before any work involving: `ov deploy add --target kubernetes`, `ov deploy from-image`, Kustomize manifest generation, cluster profiles, K8s deployments, `kubernetes:` block in deploy spec, or OCI-label capabilities.
Topic skill (no dedicated `ov openclaw` command — the surface is layer composition + image deployment). MUST be invoked before any work involving: OpenClaw gateway configuration, model auth, browser integration, channel setup, or any image composing `openclaw-*` layers (`openclaw`, `openclaw-ollama`, `openclaw-sway-browser`, `openclaw-full`, `openclaw-full-ml`, `openclaw-full-sway`, `openclaw-ollama-sway-browser`, `openclaw-browser-bootc`).
List components from image.yml and filesystem. MUST be invoked before any work involving: ov image list commands, enumerating images, layers, build targets, services, routes, volumes, or aliases.
Scaffold new layers, images, and whole projects with template files. MUST be invoked before any work involving: ov image new {project, image, layer} commands, creating new projects/images/layers, or scaffolding directories.
Runtime configuration management for the ov CLI. MUST be invoked before any work involving: ov settings commands, runtime configuration, engine selection, bind address, storage paths, or secret backend configuration.
AUR helper for Arch Linux, enabling aur: package sections in layer.yml. Use when working with the yay layer or Arch AUR builds.
# xterm - X11 Terminal (XWayland) ## Overview Lightweight X11 terminal emulator. On labwc (selkies-desktop), launching xterm triggers XWayland to start on-demand, enabling X11-based automation tools (xdotool, xprop, xwininfo) to find windows. ## Layer Definition ```yaml rpm: packages: - xterm ``` ## Key Properties | Property | Value | |----------|-------| | Depends | None | | Packages | `xterm` | | WM_CLASS | `xterm` / `XTerm` | | XWayland | Triggers on-demand start on labwc | ## Us
Node.js and npm via system packages (RPM/DEB) with global npm prefix. Use when working with Node.js, npm, or JavaScript/TypeScript tooling.
MUST be invoked before any work involving: ov image validate command, validation rules, common validation errors, or checking image.yml and layer definitions.
Runtime configuration management for the ov CLI. MUST be invoked before any work involving: ov settings commands, runtime configuration, engine selection, bind address, storage paths, or secret backend configuration.
Generic SSH support for ov — `--host <alias>` re-execs any command on a remote machine; `ov ssh tunnel` exposes remote SPICE/VNC endpoints on the local host for external GUI apps.
Test layer for AUR package installation on Arch Linux. Use when working with the arch-aur-test layer.
Arch Linux builder image with pixi, Node.js, build toolchain, and yay AUR helper. Default builder for pixi, npm, cargo, and aur multi-stage builds on Arch. MUST be invoked before building, deploying, configuring, or troubleshooting the arch-builder image.
k3s control-plane (server) node with ServiceLB, Traefik v2, and local-path-provisioner enabled by default. Publishes kubeconfig back to the operator via layer artifacts and registers a ClusterProfile on first boot.
maplibre-versatiles-styler — interactive MapLibre GL JS control widget. Renders a collapsible sidebar on the map enabling users to switch between VersaTiles style presets (colorful/eclipse/graybeard/neutrino/shadow/satellite), edit color palettes, apply global recoloring, adjust fonts/language, modify satellite imagery settings, and export the resulting style JSON. Bundled locally from the npm package so the notebook's MapLibre cell can `<script src>` it without a CDN dependency. Re-exported by the versatiles-frontend layer's http.server at /styler/. MUST be invoked before building, deploying, or troubleshooting the maplibre-versatiles-styler layer.
PMTiles Viewer — visual inspector for PMTiles archives. TypeScript SPA from protomaps/PMTiles/app built via npm at image build time, served as a static dist by python -m http.server on port 8001 (host 28001). Pairs with the osm-tools layer's martin tile server to inspect all four sibling PMTiles archives the versa image produces. MUST be invoked before building, deploying, or troubleshooting the pmtiles-viewer layer.
VersaTiles SDF font glyphs for MapLibre GL JS. 10 font families (Fira Sans, Lato, Libre Baskerville, Merriweather Sans, Noto Sans, Nunito, Open Sans, PT Sans, Roboto, Source Sans 3) bundled locally from versatiles-org/versatiles-fonts GitHub releases. Installed so the notebook's shortbread MapLibre cell renders labels without hitting tiles.versatiles.org as a runtime font CDN. Re-exported by the versatiles-frontend layer's http.server at /fonts/. MUST be invoked before building, deploying, or troubleshooting the versatiles-fonts layer.
VersaTiles Frontend — pre-built TypeScript SPA from versatiles-org/versatiles-frontend GitHub releases. Third static-SPA-via-python-http.server in the versa image (after maputnik + pmtiles-viewer). Served on port 8002 (host-mapped 28002). Also re-exports the versatiles-style layer's bundle at /style/ so the notebook's mo.iframe can reach it via an absolute URL. MUST be invoked before building, deploying, or troubleshooting the versatiles-frontend layer.
Shortbread vector-tile schema generation via Tilemaker. The Shortbread schema (https://shortbread-tiles.org) is the de-facto general-purpose OSM vector-tile schema; the layer builds systemed/tilemaker (C++/Lua) from source and bundles the official shortbread-tiles/shortbread-tilemaker Lua + JSON configuration. The notebook's `notebook_osm_shortbread_pipeline` DAG invokes tilemaker on the Monaco PBF to produce `/workspace/tiles/shortbread/monaco-shortbread.pmtiles`, which the versatiles serve service auto-discovers. MUST be invoked before building, deploying, or troubleshooting the shortbread layer.
Debug toolkit for inspecting deployed services from inside the container — network probes (ip/ss/lsof/ping/dig/nc/socat/tcpdump/traceroute/mtr/wget), process inspection (ps/top/htop/pgrep/free/vmstat/strace/ltrace), file inspection (file/tree/xxd/vim/nano), system stats (iotop/iftop/sysstat), session helpers (tmux/rsync/yq). Distro-agnostic. Use when working with the debug-tools layer, the per-distro package-name divergence (nmap-ncat vs ncat vs gnu-netcat), or the 16 build-scope eval probes that lock in headline binary presence.
kind:vm entity pairing with the /ov-openclaw:openclaw-browser-bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-openclaw:openclaw-browser-bootc. This skill documents only VM overrides. MUST be invoked before editing openclaw-browser-bootc-bootc in vms.yml.
kind:vm entity pairing with the /ov-distros:bazzite-ai bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-distros:bazzite-ai. This skill documents only the VM-specific fields. MUST be invoked before editing bazzite-ai-bootc in vms.yml.
@versatiles/style — TypeScript npm package that generates MapLibre style JSON for the Shortbread vector-tile schema. Installed locally (npm install + copy browser bundle to /opt/versatiles-style/) so the notebook's MapLibre HTML can `<script src>` the locally-served JS without a CDN dependency. Re-exported by the versatiles-frontend layer's http.server at /style/ so the notebook's mo.iframe (which can only fetch absolute URLs) can reach the bundle. MUST be invoked before building, deploying, or troubleshooting the versatiles-style layer.
libvirt-RPC test commands — `ov eval libvirt <vm> …` for VM info, framebuffer screenshots, send-key, passwd, QMP, qemu-guest-agent client, snapshots, events.
VersaTiles CLI (versatiles-rs) — a single Rust binary that handles `convert` / `serve` / `probe` / `dev` for the `.versatiles`, `.pmtiles`, `.mbtiles`, and `.tar` tile-container formats. Installed from the pre-built linux-x86_64-gnu tarball on GitHub releases. Ships a supervisord service running `versatiles serve` on port 8090 (host 28090) that watches `/workspace/tiles/shortbread/`, parallel to martin on 3000/23000. The `convert` subcommand is symmetric — PMTiles ↔ .versatiles ↔ MBTiles round-trip — and is exercised end-to-end by both the layer's deploy-scope eval probe and a dedicated notebook cell. MUST be invoked before building, deploying, or troubleshooting the versatiles layer.
k3s worker (agent) node — joins an existing k3s-server via pre-shared token. Fully declarative: same ov secrets set once + env K3S_SERVER_URL per agent deploy.
Lightweight JupyterLab with real-time collaboration on port 8888. No GPU required. Based on fedora (not nvidia), supports both amd64 and arm64. MUST be invoked before building, deploying, configuring, or troubleshooting the jupyter image.
Remove service container, quadlet file, and deploy.yml entry. MUST be invoked before any work involving: ov remove command, cleaning up containers, removing quadlets, or purging volumes.
Full-featured standalone Hermes AI agent with AI CLIs, dev tools, DevOps tools, and ov. MUST be invoked before building, deploying, configuring, or troubleshooting the hermes image.
Lightweight JupyterLab with real-time collaboration (jupyter-collaboration) on port 8888. No GPU required. Use when working with collaborative notebooks, jupyter-collaboration, or lightweight Jupyter environments without ML/CUDA dependencies.
Full CUDA ML JupyterLab image with real-time collaboration and CRDT MCP server. Base: nvidia. Port 8888. GPU-accelerated ML training + collaborative notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml image.
k3s control-plane (server) node with ServiceLB, Traefik v2, and local-path-provisioner enabled by default. Publishes kubeconfig back to the operator via layer artifacts and registers a ClusterProfile on first boot.
Persistent tmux sessions inside containers: shell reconnection, background commands, output capture, and key sending. Use when running long-lived or TTY-dependent commands. MUST be invoked before any work involving: ov tmux commands, persistent shells, background container commands, or TTY-dependent TUI programs.
Topic skill (no dedicated `ov sidecar` command — the surface is the `--sidecar <name>` / `--list-sidecars` flags on `ov config` and the `sidecars:` field in `deploy.yml`). MUST be invoked before any work involving: sidecar containers, pod networking, Tailscale exit nodes, `ov config --sidecar`, the `deploy.yml` `sidecars:` field, or sidecar-env filtering (`env_accepts` / `env_requires` routing to the sidecar vs the app container).
MUST be invoked before any work involving: GPU device access rules, ov udev commands, udev rule management, or container GPU troubleshooting.
Developer tools including bat, ripgrep, neovim, gh, direnv, fd-find, htop, podman-compose, and many more CLI utilities. Use when working with developer tooling, CLI utilities, or container dev environments.
Google Gemini CLI for AI coding assistance and search. Use when working with the gemini layer.
Kubernetes client tools: kubectl and Helm package manager. Use when working with Kubernetes, kubectl, or Helm charts.
Node.js and npm via system packages (RPM/DEB) with global npm prefix. Use when working with Node.js, npm, or JavaScript/TypeScript tooling.
OpenSSH server and client on port 22 for remote access. Use when working with SSH access, remote login, or sshd configuration in containers/VMs.
ComfyUI image generation server with CUDA GPU support. Runs as a supervisord service on port 8188 with persistent storage. MUST be invoked before building, deploying, configuring, or troubleshooting the comfyui image.
Service log viewing for running containers. MUST be invoked before any work involving: ov logs command, viewing container output, or debugging service issues.
Show ov CLI version information. MUST be invoked before any work involving: ov version command or checking installed ov version.
Arch Linux builder image with pixi, Node.js, build toolchain, and yay AUR helper. Default builder for pixi, npm, cargo, and aur multi-stage builds on Arch. MUST be invoked before building, deploying, configuring, or troubleshooting the archlinux-builder image.
Base Arch Linux image. Root of the image hierarchy for all pac-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the archlinux image.
Unsloth Studio fine-tuning web UI with CUDA GPU support, vLLM inference, and llama.cpp. Runs as a supervisord service on ports 8888 (Studio) and 8000 (vLLM API). MUST be invoked before building, deploying, configuring, or troubleshooting the unsloth-studio image.
Bootc system configuration: tty1 autologin, graphical target, pipewire/wireplumber enablement, and the systemd-user supervisord autostart unit that brings up supervisord-managed desktop services on bootc. Canonical home for any bootc-side boot wiring. Use when working with bootc images, autologin, systemd graphical target, or the supervisord-under-systemd autostart pattern.
Base Debian 13 trixie image. Root of the image hierarchy for deb-based builds that run as uid 1000 `user` (create mode — Debian 13 ships no pre-existing uid-1000 account). Enabled 2026-04 as part of Phase A–F. MUST be invoked before building, deploying, configuring, or troubleshooting any Debian-based image.
Fedora image using remote layer references from GitHub. Demonstrates the @github.com/org/repo/layers/name:version remote layer syntax. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-remote image.
Test image with Traefik reverse proxy and testapi service. Currently disabled. Used for development testing. MUST be invoked before building or troubleshooting the fedora-test image.
Self-hosted GitHub Actions runner with the full Overthink toolchain. Rootless-first since 2026-04 — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Host networking retained for reachability. MUST be invoked before building, deploying, configuring, or troubleshooting the githubrunner image.
KeePassXC password manager desktop app. Single-responsibility layer (rpm+pac, one test). Use when adding KeePassXC to an image as a standalone layer rather than pulling in the broader desktop-apps grab-bag.
NVIDIA GPU base image with runtime support and CUDA toolkit on Fedora. Base for all GPU-accelerated images (python-ml, jupyter, ollama, comfyui). MUST be invoked before building, deploying, configuring, or troubleshooting the nvidia image.
Redis in-memory data store on port 6379 with periodic persistence. Use when working with Redis, caching, or session storage in containers.
AMD ROCm runtime, OpenCL, and GPU compute support via system packages. Use when working with AMD GPU computing, ROCm, HIP, OpenCL, or AMD GPU passthrough in containers.
Audio spectrogram and visualization CLI. Use when working with the songsee layer.
VectorChord PostgreSQL extension for optimized vector similarity search. Use when working with VectorChord, vector indices, or smart search performance.
Base Fedora 43 image. Root of the image hierarchy for all RPM-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora image.
Hermes AI agent image with Playwright Chromium browser for web automation. Builds on top of the headless hermes image, adding Chromium and system deps. MUST be invoked before building, deploying, configuring, or troubleshooting the hermes-playwright image.
Immich photo management server on port 2283. Includes PostgreSQL, Redis, and non-free codec support via RPM Fusion. CPU-only (no ML). MUST be invoked before building, deploying, configuring, or troubleshooting the immich image.
NVIDIA GPU runtime support: driver libs, nvidia-container-toolkit (CDI), and VA-API. Fedora (negativo17) and Arch Linux (pac). Base layer for all GPU-accelerated images. Use when working with NVIDIA GPU support, CDI device injection, or the nvidia layer.
Fedora with RPM Fusion non-free repositories enabled. Base for images needing codec or proprietary package support like immich. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-nonfree image.
MUST be invoked before any work involving: layer authoring, layer.yml, tasks, pixi.toml, package.json, Cargo.toml, or any file under layers/. This skill is the authoritative reference for the `task:` verb catalog, `vars:` substitution, execution order, and per-verb validation. Every other skill defers here for install-schema questions.
MUST be invoked before any work involving: building container images, ov image build command, pushing to registries, merging layers, build caches, or Containerfile generation.
Containerfile generation from image.yml and layers. MUST be invoked before any work involving: ov image generate command, Containerfile generation, .build/ directory contents, the task-verb emission pipeline, or understanding generated output.
MUST be invoked before any work involving: Model Context Protocol — both directions. (1) `ov eval mcp` client: probing MCP servers declared via mcp_provides, testing MCP tool catalogs, debugging the URL-rewriter (including host-networked containers via `HostConfig.NetworkMode` detection) or port-publishing behavior. (2) `ov mcp serve` server: running the ov CLI itself as an MCP server over Streamable HTTP or stdio, auto-generated from Kong reflection (~192 tools including the MCP-first authoring surface — image/layer scaffolding, comment-preserving YAML edits, free-form file writes), destructive-hint annotations, the `--read-only` filter, auto-fallback to `overthinkos/overthink` when cwd has no `image.yml` (always fires regardless of OV_PROJECT_DIR being set), and the `ov-mcp` deployment layer with its `/workspace` bind mount. Named `ov-mcp-cmd` (not `mcp`) to disambiguate from Claude Code's built-in `/mcp` slash command (the `-cmd` suffix avoids collision with the existing `/ov-coder:ov-mcp` image skill).
Agent forwarding support -- GPG, SSH, and direnv for .secrets workflow. Use when working with agent forwarding, SSH/GPG socket forwarding, or the agent-forwarding layer.
Service status display with tool probes and device detection. MUST be invoked before any work involving: ov status command, checking container state, tool availability, port mapping, or JSON status output. Named `ov-status` (not `status`) to disambiguate from Claude Code's built-in `/status` slash command.
Bootc system configuration: tty1 autologin, graphical target, pipewire/wireplumber enablement, and the systemd-user supervisord autostart unit that brings up supervisord-managed desktop services on bootc. Canonical home for any bootc-side boot wiring. Use when working with bootc images, autologin, systemd graphical target, or the supervisord-under-systemd autostart pattern.
Privileged pacstrap builder image for bootstrapping a CachyOS rootfs from scratch. base: ov.arch (via the `ov` import namespace) + the pacstrap-builder layer. Lives in the overthinkos/cachyos submodule (image/cachyos). MUST be invoked before building or troubleshooting cachyos-pacstrap / cachyos-vm.
OpenSSH server and client on port 22 for remote access. Use when working with SSH access, remote login, or sshd configuration in containers/VMs.
MUST be invoked before any work involving: ov config commands, image deployment setup, quadlet generation, secrets provisioning, encrypted volumes, data seeding, or volume backing configuration. Named `ov-config` (not `config`) to disambiguate from Claude Code's built-in `/config` slash command.
Update image and restart service with data sync. MUST be invoked before any work involving: ov update command, pulling new image versions, data seeding, force-seed, or updating deployed services. Named `ov-update` (not `update`) to disambiguate from Claude Code's built-in `/update`/`/upgrade` slash commands.
MUST be invoked before any work involving: ov eval adb commands, Android Debug Bridge interaction, APK install/uninstall, device shell command execution, system property reads, screencap, logcat tailing — anywhere the goal is to drive a running Android emulator from outside the container via the host-published ADB server port.
MUST be invoked before any work involving: Wayland / wlroots desktop automation — `ov eval wl` commands (screenshots, click/type/scroll/drag, window management via wlrctl, clipboard, resolution control, AT-SPI2 introspection, window geometry), nested `wl sway` / `wl overlay` subcommands, or `wl:` declarative verbs inside `eval:` blocks. Covers sway-desktop and selkies-desktop image automation on both sway and labwc compositors.
MUST be invoked before any work involving: the `kind: android` schema kind, a `target: android` deploy, the `apk:` layer package format (installing Android apps declaratively), AndroidDeployTarget, an in-pod emulator OR a remote/physical adb-endpoint device, or nested `pod → android` deployment. The first-class Android device + app surface that sits above `ov eval adb`/`appium`.
Fullscreen Wayland overlays for screen recordings via gtk4-layer-shell. MUST be invoked before any work involving: ov eval wl overlay commands, recording overlays, title cards, lower-thirds, countdowns, or fade transitions.
Record terminal sessions (asciinema) or desktop video (pixelflux/wf-recorder). MUST be invoked before any work involving: ov eval record commands, terminal recording, desktop video recording, or session capture.
Full-featured standalone Hermes AI agent with AI CLIs, dev tools, DevOps tools, and ov. MUST be invoked before building, deploying, configuring, or troubleshooting the hermes image.
Hermes self-improving AI agent by Nous Research with voice, messaging, and tool-calling. MUST be invoked before any work involving: the hermes layer, Hermes Agent configuration, hermes service setup, or hermes Python/npm dependencies.
MUST be invoked before any work involving: the `ov image` command family, image definitions in image.yml, image inheritance, defaults, platforms, builder configuration, the image dependency graph, or the build/deploy scope boundary.
Authoritative reference for the "Hard Cutover by Default" policy governing schema changes, API renames, and deprecations. Forbidden patterns, required deliverables, rationale, examples from this repo, and the no-exception enforcement: plans are authored as full-scope single-phase cutovers and executed end-to-end regardless of estimated time, context, or scope. MUST be invoked when planning or reviewing any breaking change to Go types, YAML field names, CLI flags, or OCI labels.
Tailscale runtime wiring for target:local hosts. Sets `--operator=$account` + `--hostname=$(hostname -s)` so user-systemd ExecStartPost can run `tailscale serve` without sudo, and the tailnet device name stays in sync with the system hostname. Depends on /ov-infrastructure:tailscale (which installs the daemon). Self-gates on `systemctl is-active tailscaled` so it's a no-op in image-build / pre-auth contexts. Use when adding deploy-runtime tailscale wiring to a target:local host (canonical consumer: local.ov-cachyos) — distinct from the tailscale layer which only installs + enables the daemon.
Claude Code multi-agent support in Overthink — sub-agents, dynamic workflows, and agent teams, and how each drives the existing `ov eval` disposable beds to test and verify. MUST be invoked before authoring or invoking an ov sub-agent / dynamic workflow / agent team, wiring agent-lifecycle hooks, or asking "which primitive should drive the R10 beds?".
Tailscale mesh VPN (tailscaled service). Installs the tailscale package from upstream, enables tailscaled.service via systemd. Use when adding Tailscale as a standalone systemd service to an image — distinct from the deploy-time Tailscale tunnel/sidecar model.
`disposable: true` is the ONE and ONLY authorization for autonomous destroy + rebuild via `ov update`. MUST be invoked before any task involving `ov update`, live verification on rebuildable targets, or marking a VM / container deploy as safe-to-nuke. Explains why disposability is a DEPLOY property (not an image property), the separation between load-bearing `disposable:` and informational `lifecycle:`, why derivation is deliberately absent, and how the flag makes live verification fearless on shared hosts.
Use when committing, branching, pushing, merging, tagging, creating PRs, or approving/merging PRs with gh — the feat/-branch, R10-gated, never-force-push landing workflow across the main repo + the plugins submodule + image/<distro> submodules. Covers sync-to-upstream, branch/worktree pruning, the fork+PR path for contributors without write access, and cross-repo @github landing order.
The InstallPlan IR — the shared intermediate representation consumed by build-mode Containerfile emission (OCITarget), pod deploys (PodDeployTarget), local deploys (LocalDeployTarget), VM deploys (VmDeployTarget over SSH), and Kubernetes deploys (K8sDeployTarget). MUST be invoked before reading or modifying any of: ov/install_plan.go, ov/install_build.go, ov/build_target_oci.go, ov/deploy_target_local.go, ov/deploy_target_pod.go, ov/deploy_target_vm.go, ov/k8s_target.go, or when adding a new step kind / deploy target / reverse-op kind.
Go CLI development: building the ov binary, running tests, understanding the source code structure. MUST be invoked before reading or modifying any Go source file in ov/.
Pure renderer from VmSpec + LibvirtConfig to libvirt domain XML and QEMU argv. Covers RenderDomain, device emission (passt backend, portForward attribute order, virtio-gpu defaults), firmware plumbing, and LibvirtConfig schema shape. Source: ov/libvirt_schema.go, ov/libvirt_render.go, ov/libvirt_render_devices.go, ov/qemu_render.go. MUST be invoked before editing libvirt XML emission.
UEFI firmware (OVMF_CODE + OVMF_VARS) path resolution for VMs. Covers the per-distro path table (Fedora vs Arch vs Debian/Ubuntu), per-VM NVRAM copies pattern, secure-boot variants, and the "empty strings = skip loader/nvram" contract for firmware: bios. Source: ov/ovmf_paths.go. MUST be invoked before editing UEFI firmware resolution.
Supervisord process manager for running multiple services inside containers. Use when working with supervisord, container service management, multi-process containers, event listeners for crash-loop circuit breaking, or service priority ordering.
KeePassXC password manager desktop app. Single-responsibility layer (rpm+pac, one test). Use when adding KeePassXC to an image as a standalone layer rather than pulling in the broader desktop-apps grab-bag.
Kitchen-sink development image on Debian 13 trixie: coding + AI-coding CLIs + DevOps tooling in one container. Debian base, 30+ direct layers mirroring fedora-coder's stack but with deb: sections. Runs as uid 1000 (`user`) with passwordless sudo. 143/0 tests pass. Use when working with the debian-coder image — or when comparing cross-distro parity across the four coder-family images.
Operationalization of CLAUDE.md R1-R5 — the engineering-discipline rules that come BEFORE runtime verification. Covers: (R1) RCA on every failure via /ov-internals:root-cause-analyzer; (R2) no "pre-existing" / "out of scope" / "follow-up PR" classifications; (R3) no code duplication, generic over ad-hoc; (R4) no ad-hoc workarounds; (R5) hard cutover deletes the deprecated path AND every stale reference in the same commit. MUST be invoked when a failure / warning / anomaly surfaces, when the same pattern is about to land in a second surface, when a sleep / retry / magic-number is tempting, or when a cutover commit is about to ship.
SPICE wire-level client for VMs — `ov eval spice <vm>` handshake, inputs, native display screenshots via the Shells-com/spice library.
MUST be invoked before any work involving: ov image validate command, validation rules, common validation errors, or checking image.yml and layer definitions.
Fetch an image from its registry into local container storage so deploy-mode commands can read its OCI labels. MUST be invoked before any work involving: ov image pull command, the ErrImageNotLocal error, fetching images by short name / fully-qualified ref / @github.com/... remote ref, or recovering deploy-mode commands that fail with "image X is not available locally".
Arch Linux image with the full ov toolchain. Rootless-first since 2026-04 — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /ov-coder:ov-mcp so the image is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the arch-ov image.
OpenAI Codex CLI coding agent. Use when working with the codex layer.
Forge AI coding agent CLI (forgecode.dev) installed globally via npm from the `forgecode` package. Installs the `forge` binary. Use when working with Forge, forgecode.dev, or alternative AI coding agents.
Host dependency checker and hardware detector. Use when diagnosing host setup, checking dependencies, or verifying GPU detection.
Claude Code CLI installed globally via npm from @anthropic-ai/claude-code. Use when working with Claude Code, AI coding assistants, or Anthropic tooling.
Kitchen-sink development image on Ubuntu 24.04 noble: coding + AI-coding CLIs + DevOps tooling in one container. Ubuntu base, 30+ direct layers mirroring fedora-coder's stack. Runs as uid 1000 `ubuntu` — the upstream ubuntu:24.04 account, adopted verbatim via build.yml's base_user declaration. 142/0/1-skip tests pass as of 2026-04-20. Use when working with the ubuntu-coder image — especially when the `${USER}` / `${HOME}` / sudoers differ from the other three coder images.
MUST be invoked before any work involving: ov shell command, interactive shells, command execution in containers, workspace mounts, TTY allocation, or port relay.
Generic SSH support for ov — `--host <alias>` re-execs any command on a remote machine; `ov ssh tunnel` exposes remote SPICE/VNC endpoints on the local host for external GUI apps.
Base Ubuntu 24.04 noble image. Root of the image hierarchy for Ubuntu- based builds. Runs as uid 1000 `ubuntu` via ADOPT mode — the upstream ubuntu:24.04 base image ships a pre-existing ubuntu:ubuntu account, and build.yml distro.ubuntu declares base_user to adopt it verbatim. Enabled 2026-04 as part of Phase A–F. MUST be invoked before building, deploying, configuring, or troubleshooting any Ubuntu-based image.
UEFI firmware (OVMF_CODE + OVMF_VARS) path resolution for VMs. Covers the per-distro path table (Fedora vs Arch vs Debian/Ubuntu), per-VM NVRAM copies pattern, secure-boot variants, and the "empty strings = skip loader/nvram" contract for firmware: bios. Source: ov/ovmf_paths.go. MUST be invoked before editing UEFI firmware resolution.
Pure renderer from VmSpec + LibvirtConfig to libvirt domain XML and QEMU argv. Covers RenderDomain, device emission (passt backend, portForward attribute order, virtio-gpu defaults), firmware plumbing, and LibvirtConfig schema shape. Source: ov/libvirt_schema.go, ov/libvirt_render.go, ov/libvirt_render_devices.go, ov/qemu_render.go. MUST be invoked before editing libvirt XML emission.
Pure renderer from VmSpec + VmCloudInit to NoCloud seed ISO (user-data + meta-data + network-config). Covers composeUsers adopt-merge, SMBIOS vs cloud_init additive channels, xorriso ISO emission, and ov_install.strategy state machine. Source: ov/cloud_init_render.go, ov/cloud_init_iso.go, ov/ov_install.go. MUST be invoked before editing cloud-init emission paths.
Go type reference for VmSpec and the discriminated-union source types (VmSource cloud_image | bootc). Documents every field, validation rules, and the adopt-user decision. Source files: ov/vm_spec.go, ov/cloud_init_types.go, ov/libvirt_validate.go. MUST be invoked before editing VmSpec Go code or authoring vms.yml entries.
Test image for Arch Linux pacman and AUR package installation. MUST be invoked before building or troubleshooting the arch-test image.
Bazzite NVIDIA bootc image with dev tools, CUDA, Kubernetes, Docker, and desktop apps. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the bazzite-ai image.
Aurora DX bootc image with NVIDIA, SSH, ov toolchain, and Go. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the aurora image.
RPM Fusion free and nonfree repository configuration for Fedora. Use when working with RPM Fusion repos, multimedia codecs, or nonfree packages.
Minimal Debian 13 builder image (pixi + Node.js + build-toolchain) used as the multi-stage builder for every image based on Debian — currently debian-coder. Produces the pre-compiled pixi envs, npm globals, and cargo crates that land in the final runtime image via COPY --from. MUST be invoked before building, deploying, configuring, or troubleshooting the debian-builder image.
Fedora with RPM Fusion non-free repositories enabled. Base for images needing codec or proprietary package support like immich. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-nonfree image.
Builder image with pixi, Node.js, and C/C++ build toolchain. Used as the default builder for multi-stage image builds. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-builder image.
Fedora image with the full ov toolchain using shared layers. Rootless-first since 2026-04 — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same layer list as arch-ov. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-ov image.
Base Fedora 43 image. Root of the image hierarchy for all RPM-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora image.
Test layer for pacman package installation on Arch Linux. Use when working with the arch-pac-test layer.
GPU-accelerated Python ML environment with CUDA, PyTorch, and llama.cpp. No Jupyter server — use as a base for ML workloads or interactive shell. MUST be invoked before building, deploying, configuring, or troubleshooting the python-ml image.
k3s binary installer (common base for k3s-server and k3s-agent). Use when building images that need the k3s binary but do NOT want a server/agent service started automatically.
Test image with Valkey (Redis-compatible) key-value store. Currently disabled. Used for development testing. MUST be invoked before building or troubleshooting the valkey-test image.
Terminal multiplexer. Use when working with the tmux layer.
Minimal Ubuntu 24.04 builder image (pixi + Node.js + build-toolchain) used as the multi-stage builder for Ubuntu-based images — currently ubuntu-coder. Runs as uid 1000 `ubuntu` (adopted from the upstream ubuntu:24.04 base image via build.yml's base_user declaration). MUST be invoked before building, deploying, configuring, or troubleshooting the ubuntu-builder image.
Full CUDA ML JupyterLab image with finetuning, Ollama, and LLM course notebooks, CRDT MCP server, and real-time collaboration. Base: nvidia. Port 8888. Combines jupyter-ml with 37 Unsloth fine-tuning notebooks, 6 Ollama integration notebooks, and 15 LLM course notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml-notebook image.
AUR helper for Arch Linux, enabling aur: package sections in layer.yml. Use when working with the yay layer or Arch AUR builds.
Single command execution in a running container with D-Bus notification. MUST be invoked before any work involving: ov cmd command, running commands in containers, or container exec with notifications.
Image inspection showing resolved configuration as JSON. MUST be invoked before any work involving: ov image inspect command, viewing image configuration, or querying image metadata.
List components from image.yml and filesystem. MUST be invoked before any work involving: ov image list commands, enumerating images, layers, build targets, services, routes, volumes, or aliases.
Host dependency checker and hardware detector. Use when diagnosing host setup, checking dependencies, or verifying GPU detection.
Node.js 24 and npm via Fedora RPM packages with global npm prefix. Use when working with Node.js 24 or applications requiring a newer Node.js version.
Single command execution in a running container with D-Bus notification. MUST be invoked before any work involving: ov cmd command, running commands in containers, or container exec with notifications.
MUST be invoked before any work involving: ov config commands, image deployment setup, quadlet generation, secrets provisioning, encrypted volumes, data seeding, or volume backing configuration.
Stop a running service container. MUST be invoked before any work involving: ov stop command, stopping containers, or halting services.
Show ov CLI version information. MUST be invoked before any work involving: ov version command or checking installed ov version.
Test layer for pacman package installation on Arch Linux. Use when working with the arch-pac-test layer.
Base Arch Linux image. Root of the image hierarchy for all pac-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the archlinux image.
Bazzite NVIDIA bootc image with dev tools, CUDA, Kubernetes, Docker, and desktop apps. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the bazzite-ai image.
Fedora image using remote layer references from GitHub. Demonstrates the @github.com/org/repo/layers/name:version remote layer syntax. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-remote image.
GitHub Actions self-hosted runner as a supervised container service. Use when working with GitHub Actions runners, CI/CD infrastructure, or runner registration.
Immich photo management server on port 2283 with PostgreSQL and Redis. Use when working with Immich, photo management, or media library services.
Encrypted filesystem (gocryptfs) for ov config encrypted volume operations. Use when working with encrypted volumes, ov config mount/unmount, or filesystem encryption.
k3s worker (agent) node — joins an existing k3s-server via pre-shared token. Fully declarative: same ov secrets set once + env K3S_SERVER_URL per agent deploy.
Socket relay tool for VM console access and port relays (eth0 to loopback). Use when working with port relays, socat, or loopback service exposure.
MUST be invoked before any work involving: `ov deploy add --target kubernetes`, `ov deploy from-image`, Kustomize manifest generation, cluster profiles, K8s deployments, `kubernetes:` block in deploy spec, or OCI-label capabilities.
Kubernetes cluster probe verb — `ov eval k8s <method>` for nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs. Hermetic via vendored client-go; no external kubectl required.
GPU-accelerated Python ML environment with CUDA, PyTorch, and llama.cpp. No Jupyter server — use as a base for ML workloads or interactive shell. MUST be invoked before building, deploying, configuring, or troubleshooting the python-ml image.
Python 3.13 runtime installed via pixi (conda-forge). Use when working with Python, pixi environments, or Python dependencies.
mcp-server-apache-airflow 0.2.10 wraps Apache Airflow's REST API as ~70 MCP tools (fetch_dags, post_dag_run, get_dag_run, list_connections, …). Use when working with the airflow MCP server's tool catalog, the JWT auth flow it shares with direct REST clients, or the wrapper script's airflow-readiness wait loop.
marimo reactive notebook server (also runs as MCP server via --mcp), GPU-accelerated OSM/GTFS analytics deps (cudf-polars-cu13, polars, geopandas, quackosm, gtfs-parquet), Apache Airflow Python deps (the airflow layer ships no pixi env), and the marimo-team/learn curriculum + marimo-team/skills bundle for AI agents. Use when working with the marimo layer, its pixi environment, the supervisord service spec, or the cell-display + mo.iframe rendering patterns.
marimo reactive notebook environment with Apache Airflow + GPU-accelerated OSM/GTFS analytics + martin vector tiles + 3D terrain via MapLibre. Composes 9 layers (agent-forwarding, marimo, airflow, osm-data, maputnik, notebook-osm, debug-tools, dbus, ov) into a single pod that exposes 5 host ports and 2 MCP servers. MUST be invoked before building, deploying, configuring, or troubleshooting the marimo-ml image.
marimo's built-in MCP server (10 read-only inspection tools — get_active_notebooks, get_cell_outputs, get_notebook_errors, etc.) at port 2718 path /mcp/server. Use when working with the marimo MCP tool catalog, programmatic notebook diagnostics, or the cells-don't-execute-via-MCP gap (marimo MCP is read-only; cells run via WebSocket from a browser OR `marimo export ipynb --include-outputs` for headless execution).
Bootc VM image with OpenClaw gateway, Chrome, VNC, and PipeWire. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-browser-bootc image.
MUST be invoked before any work involving: host command aliases, ov alias add/remove/install/uninstall, or wrapper scripts that run inside containers.
MUST be invoked before any work involving: Model Context Protocol — both directions. (1) `ov eval mcp` client: probing MCP servers declared via mcp_provides, testing MCP tool catalogs, debugging the URL-rewriter (including host-networked containers via `HostConfig.NetworkMode` detection — new 2026-04) or port-publishing behavior. (2) `ov mcp serve` server: running the ov CLI itself as an MCP server over Streamable HTTP or stdio, auto-generated from Kong reflection (~192 tools including the MCP-first authoring surface — image/layer scaffolding, comment-preserving YAML edits, free-form file writes), destructive-hint annotations, the `--read-only` filter, auto-fallback to `overthinkos/overthink` when cwd has no `image.yml` (always fires now, regardless of OV_PROJECT_DIR being set — 2026-04 change), and the `ov-mcp` deployment layer with its `/workspace` bind mount.
Claude Code CLI installed globally via npm from @anthropic-ai/claude-code. Use when working with Claude Code, AI coding assistants, or Anthropic tooling.
Post-build layer optimization via merging consecutive small layers. MUST be invoked before any work involving: ov image merge command, image layer reduction, merge configuration, or post-build optimization.
Forge AI coding agent CLI (forgecode.dev) installed globally via npm from the `forgecode` package. Installs the `forge` binary. Use when working with Forge, forgecode.dev, or alternative AI coding agents.
Google Cloud npm packages: firebase-tools and Gemini CLI. Use when working with Firebase, Gemini CLI, or GCP Node.js tooling.
Pre-commit git hooks framework via pixi, plus markdownlint-cli via npm. Use when working with git hooks, linting, or code quality tooling.
Service status display with tool probes and device detection. MUST be invoked before any work involving: ov status command, checking container state, tool availability, port mapping, or JSON status output.
Update image and restart service with data sync. MUST be invoked before any work involving: ov update command, pulling new image versions, data seeding, force-seed, or updating deployed services.
Arch Linux builder image with pixi, Node.js, build toolchain, and yay AUR helper. Default builder for pixi, npm, cargo, and aur multi-stage builds on Arch. MUST be invoked before building, deploying, configuring, or troubleshooting the archlinux-builder image.
Base composition for bootc OS images including SSH, QEMU guest agent, and bootc config. Use when working with bootable container images, VMs, or OS-level configuration.
D-Bus interaction inside containers via native Go godbus/dbus/v5. MUST be invoked before any work involving: ov eval dbus commands, desktop notifications, D-Bus method calls, service introspection, or session bus interaction.
RPM Fusion free and nonfree repository configuration for Fedora. Use when working with RPM Fusion repos, multimedia codecs, or nonfree packages.
Playwright Chromium browser for Hermes Agent with Fedora-compatible system deps. MUST be invoked before any work involving: Playwright in hermes containers, Chromium browser automation for hermes, or hermes-playwright layer configuration.
Immich machine learning backend on port 3003 for photo classification and search. Use when working with Immich ML features, face detection, or CLIP search.
Playwright browser automation (OpenClaw AI snapshots). Use when working with the playwright layer.
GnuPG encryption and signing tools for GPG agent forwarding. Use when working with GPG, encryption, signing, or the gnupg layer.
SQLite database CLI. Use when working with the sqlite layer.
OpenSSH client tools for SSH agent forwarding. Use when working with SSH client, SSH agent forwarding, or the ssh-client layer.
D-Bus session bus for inter-process communication inside containers. Use when working with D-Bus, desktop services, Wayland compositor dependencies, or ov eval dbus commands.
k3s binary installer (common base for k3s-server and k3s-agent). Use when building images that need the k3s binary but do NOT want a server/agent service started automatically.
Pure renderer from VmSpec + VmCloudInit to NoCloud seed ISO (user-data + meta-data + network-config). Covers composeUsers adopt-merge, SMBIOS vs cloud_init additive channels, xorriso ISO emission, and ov_install.strategy state machine. Source: ov/cloud_init_render.go, ov/cloud_init_iso.go, ov/ov_install.go. MUST be invoked before editing cloud-init emission paths.
Valkey 9.x key-value store (Redis-compatible) on port 6379 via Remi modular repo. Use when working with Valkey, Redis-compatible caching, or the valkey layer.
FastAPI test service on port 9090 routed via testapi.localhost for development testing. Use when working with the test API, Traefik routing validation, or service health checks.
llama.cpp prebuilt binaries and GGUF conversion tools. Use when working with llama.cpp, GGUF model conversion, or llama-quantize/llama-cli.
Core ML/AI Python environment with PyTorch, vLLM runtime deps, and CUDA support. Tier 2 environment-owner meta-layer that composes llama-cpp. Use when working with machine learning, PyTorch, HuggingFace, or GPU computing.
Apache Airflow 3.x with LocalExecutor + SQLite (single-node, dev-friendly), 4 supervisord services (init, scheduler, dag-processor, webserver) plus the airflow-mcp wrapper. Layer is service-only — its Python deps live in /ov-marimo:marimo-layer's pixi env. Use when working with the airflow layer, Airflow 3.x compatibility findings, the SimpleAuthManager auth-fix pattern, the dag-processor split-from-scheduler architecture change, or the JWT-issuance + REST API trigger flow used by self-authoring notebooks.
Debug toolkit for inspecting deployed services from inside the container — network probes (ip/ss/lsof/ping/dig/nc/socat/tcpdump/traceroute/mtr/wget), process inspection (ps/top/htop/pgrep/free/vmstat/strace/ltrace), file inspection (file/tree/xxd/vim/nano), system stats (iotop/iftop/sysstat), session helpers (tmux/rsync/yq). Distro-agnostic. Use when working with the debug-tools layer, the per-distro package-name divergence (nmap-ncat vs ncat vs gnu-netcat), or the 16 build-scope eval probes that lock in headline binary presence.
OpenStreetMap data pipeline tooling: tippecanoe (GeoJSON → MBTiles/PMTiles, built from source), osmium-tool, gdal/ogr2ogr, jq, martin (Rust musl static binary on port 3000), pmtiles CLI. Martin reads tiles from ${HOME}/workspace/tiles/pmtiles/. Use when working with the osm-data layer, tippecanoe build steps, the martin tile server config, the martin "Underlying data source was modified" cache issue + DAG-completion supervisord-restart pattern, or the vector-tiles-only output that requires MapLibre GL JS clients (NOT folium TileLayer).
Unsloth LLM fine-tuning library with vLLM integration. Tier 1 post-install layer — no pixi.toml, requires pixi env from a parent layer (python-ml, jupyter-ml, unsloth-studio). Use when working with Unsloth, LLM fine-tuning, or vLLM wheel installation.
Standalone marimo notebook (osm-monaco-viz.py) that self-authors TWO Airflow DAGs (osm + gtfs), triggers them via REST, runs polars + pyarrow analytics on both datasets, and renders TWO maps: streets via MapLibre GL JS + martin vector tiles + 3D terrain, transit via folium with 98 bus-stop CircleMarkers. Use when working with the notebook content itself, the dual-DAG self-authoring pattern, the two URL spaces (server-side AIRFLOW_API_INTERNAL_URL vs browser-bound MARTIN_PUBLIC_URL), the MapLibre/folium rendering split, or the surfaced-and-fixed bug catalog.
ClawHub CLI for searching and installing OpenClaw skills. Use when working with the clawhub layer.
Maputnik — visual editor for MapLibre GL vector-tile styles. Pure-JS SPA built from upstream source via npm at image build time, served as static dist by python -m http.server. Pairs with osm-data's martin tile server. Use when working with the maputnik layer, the Vite --base=/ build override (critical fix; default --base=/maputnik/ produces 404 asset paths), or the asset-base lock-in eval test.
MUST be invoked before any work involving: ov eval appium commands, Android UI automation, WebDriver session management, APK install via Appium, element find/click/send-keys, mobile-specific WebDriver caps — anywhere the goal is to drive a running Appium 3.x server inside a container via W3C WebDriver from outside.
Arch Linux image with the full ov toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /ov-coder:ov-mcp so the image is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the arch-ov image.
direnv -- automatic environment variable loading from .envrc files. Use when working with direnv, .envrc, .secrets, or environment management.
MUST be invoked before any work involving: host command aliases, ov alias add/remove/install/uninstall, or wrapper scripts that run inside containers.
JupyterLab CRDT MCP server extension with 13 tools for programmatic notebook access. MUST be invoked when working with: the MCP server implementation, CRDT collaboration, or the Tier 1 pip-only installation pattern for jupyter extensions.
Steam gaming client with gamescope. Use when working with Steam, gaming, or gamescope in containers.
Standalone Ollama LLM inference server with CUDA GPU support. Runs as a supervisord service on port 11434 with persistent model storage. MUST be invoked before building, deploying, configuring, or troubleshooting the ollama image.
Headless OpenClaw with all tool layers. No desktop environment. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full image.
OpenClaw full + ML tools + Ollama + Sway desktop + VNC. GPU-accelerated. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full-ml image.
OpenClaw AI gateway service on port 18789 via npm with persistent data. Use when working with OpenClaw, AI gateway configuration, or model routing.
Headless OpenClaw gateway with local Ollama LLM inference. GPU-accelerated, no desktop. Use when working with the headless openclaw+ollama deployment MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-ollama image.
Maximal OpenClaw deployment with Sway desktop, Chrome, VNC, and all tool layers. Includes all feasible OpenClaw skill dependencies. Use when working with MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-sway-browser image.
Google Chrome running on KWin compositor with DevTools protocol. Use when working with Chrome in KWin desktop containers.
Google Chrome running on Sway compositor via exec autostart with DevTools protocol. Use when working with Chrome in Sway, browser automation, or CDP in desktop containers.
JetBrains Mono and Nerd Fonts for desktop containers. Use when working with font configuration or desktop text rendering.
Niri Wayland compositor (Smithay-based) built from source with virtual output support. Use when working with niri compositor, headless Wayland, or Smithay-based desktop containers.
Base Niri desktop composition with audio, portals, Chrome, terminal, and file manager. Base desktop composition layer — no display server included.
Desktop applications (terminal, file manager) for Niri compositor. Use when working with the niri-apps layer.
GNOME XDG Desktop Portal backend with ScreenCast, RemoteDesktop, and AT-SPI2 support. Use when working with GNOME portals, screen sharing, or libei input in Mutter containers.
QEMU guest agent for host-guest communication in virtual machines. Use when working with QEMU/KVM VMs, guest agent setup, or libvirt channel configuration.
Sway desktop with VNC remote access via wayvnc on port 5900. Composes sway-desktop base with wayvnc.
RTSP/ONVIF camera snapshot and clip CLI. Use when working with the camsnap layer.
Kitchen-sink development image on Arch Linux: coding + AI-coding CLIs + DevOps tooling in one container. Arch base, 30+ direct layers mirroring fedora-coder's stack but with pac:-section packages (plus AUR for a few unique cases). Runs as uid 1000 (`user`) with passwordless sudo. Use when working with the arch-coder image — or when comparing cross-distro parity across the four coder-family images (fedora, debian, ubuntu, arch).
# a11y-tools - AT-SPI2 Accessibility Introspection ## Overview Provides Python AT-SPI2 bindings for querying the accessibility tree of GTK, Qt, and Chrome applications. Enables element-based automation — find buttons, menus, and text fields by name/role instead of pixel coordinates. Used by `ov test wl atspi tree/find/click`. ## Layer Definition ```yaml depends: - dbus rpm: packages: - python3-pyatspi - python3-gobject ``` ## Key Properties | Property | Value | |----------|--
MUST be invoked before any work involving: host command aliases, ov alias add/remove/install/uninstall, or wrapper scripts that run inside containers.
Base Fedora 43 image. Root of the image hierarchy for all RPM-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora image.
Builder image with pixi, Node.js, and C/C++ build toolchain. Used as the default builder for multi-stage image builds. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-builder image.
Kitchen-sink development image: coding + AI-coding CLIs + DevOps tooling in one container. Fedora-nonfree base, 32 direct layers spanning language runtimes, build tooling, five AI coding CLIs, and the full cloud/devops stack. Runs as uid 1000 with passwordless sudo — rootless-first, matches the /ov-images:selkies-desktop-ov security posture. Use when working with the fedora-coder image — specifically any task that involves SSH-ing into a single container and having every tool a polyglot engineer reaches for during a working day already installed.
Base Arch Linux image. Root of the image hierarchy for all pac-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the archlinux image.
Arch Linux builder image with pixi, Node.js, build toolchain, and yay AUR helper. Default builder for pixi, npm, cargo, and aur multi-stage builds on Arch. MUST be invoked before building, deploying, configuring, or troubleshooting the archlinux-builder image.
Test layer for pacman package installation on Arch Linux. Use when working with the arch-pac-test layer.
Terminal session recorder (asciinema). Use when working with the asciinema layer.
Bazzite NVIDIA bootc image with dev tools, CUDA, Kubernetes, Docker, and desktop apps. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the bazzite-ai image.
Blog/RSS feed monitor CLI. Use when working with the blogwatcher layer.
Base composition for bootc OS images including SSH, QEMU guest agent, and bootc config. Use when working with bootable container images, VMs, or OS-level configuration.
Bootc system configuration: tty1 autologin, graphical target, pipewire/wireplumber enablement, and the systemd-user supervisord autostart unit that brings up supervisord-managed desktop services on bootc. Canonical home for any bootc-side boot wiring. Use when working with bootc images, autologin, systemd graphical target, or the supervisord-under-systemd autostart pattern.
C/C++ build toolchain with gcc, cmake, autoconf, ninja, git, and pkg-config. Use when working with native compilation, build tools, or C/C++ development.
CUDA toolkit, cuDNN, ONNX Runtime, and NVIDIA GPU development libraries from negativo17 repos. Depends on the nvidia layer for runtime support. Use when working with GPU computing, CUDA, cuDNN, machine learning infrastructure, or NVIDIA development tools.
D-Bus session bus for inter-process communication inside containers. Use when working with D-Bus, desktop services, Wayland compositor dependencies, or ov test dbus commands.
MUST be invoked before any work involving: Chrome DevTools Protocol, ov test cdp commands, browser automation, clicking elements, taking screenshots, or OAuth flows inside containers.
Google Chrome with DevTools on port 9222, Chrome DevTools MCP on port 9224, and browser-open helper. Use when working with Chrome, CDP, browser automation, or DevTools Protocol.
Chrome DevTools MCP server via mcp-proxy (Streamable HTTP on port 9224). Use when working with the chrome-devtools-mcp layer, MCP-based browser automation, or the mcp-proxy stdio-to-HTTP bridge pattern.
Google Chrome running on KWin compositor with DevTools protocol. Use when working with Chrome in KWin desktop containers.
Google Chrome running on Mutter compositor with DevTools protocol. Use when working with Chrome in Mutter/GNOME desktop containers.
Google Chrome running on Niri compositor with DevTools protocol. Use when working with Chrome in Niri desktop containers.
Google Chrome running on Sway compositor via exec autostart with DevTools protocol. Use when working with Chrome in Sway, browser automation, or CDP in desktop containers.
Google Chrome on X11 with DevTools protocol. Launched via Openbox autostart. Use when working with Chrome in X11 desktop containers.
Claude Code CLI installed globally via npm from @anthropic-ai/claude-code. Use when working with Claude Code, AI coding assistants, or Anthropic tooling.
ClawHub CLI for searching and installing OpenClaw skills. Use when working with the clawhub layer.
Cloud-init for instance initialization in cloud/VM environments with NoCloud datasource. Use when working with cloud-init, VM provisioning, or cloud instance bootstrapping.
ComfyUI image generation server with CUDA GPU support. Runs as a supervisord service on port 8188 with persistent storage. MUST be invoked before building, deploying, configuring, or troubleshooting the comfyui image.
ComfyUI image generation service on port 8188 with CUDA GPU support. Use when working with ComfyUI, image generation, Stable Diffusion, or AI art pipelines.
Rootless nested podman/buildah/skopeo recipe. Ships zero cap_add — works via surgical `unmask=/proc/*` security_opt plus dual-location containers.conf/storage.conf/policy.json plus two canonical env vars plus subuid layout that fits inside the outer user namespace. Authoritative source for the `mount_too_revealing()` kernel RCA. Use when working with nested containers, the container-nesting layer, or any "rootless-in-rootless podman" question.
COPR and external desktop packages: CoolerControl, Ghostty terminal, Nerd Fonts, WinBoat. Use when working with COPR repositories or these desktop applications in bootc images.
Base Debian 13 trixie image. Root of the image hierarchy for deb-based builds that run as uid 1000 `user` (create mode — Debian 13 ships no pre-existing uid-1000 account). Enabled 2026-04 as part of Phase A–F. MUST be invoked before building, deploying, configuring, or troubleshooting any Debian-based image.
Topic skill (no dedicated `ov enc` command — the surface is flags + subcommands on `ov config`). MUST be invoked before any work involving: encrypted storage, gocryptfs, or the `--encrypt` / `-v <name>:encrypted` backing flags on `ov config`, the `ov config mount` / `unmount` / `status` / `passwd` subcommands, or `ov-enc-<image>-<volume>.scope` systemd units.
D-Bus interaction inside containers via native Go godbus/dbus/v5. MUST be invoked before any work involving: ov test dbus commands, desktop notifications, D-Bus method calls, service introspection, or session bus interaction.
Minimal Debian 13 builder image (pixi + Node.js + build-toolchain) used as the multi-stage builder for every image based on Debian — currently debian-coder. Produces the pre-compiled pixi envs, npm globals, and cargo crates that land in the final runtime image via COPY --from. MUST be invoked before building, deploying, configuring, or troubleshooting the debian-builder image.
Kitchen-sink development image on Debian 13 trixie: coding + AI-coding CLIs + DevOps tooling in one container. Debian base, 30+ direct layers mirroring fedora-coder's stack but with deb: sections. Runs as uid 1000 (`user`) with passwordless sudo. 143/0 tests pass as of 2026-04-20. Use when working with the debian-coder image — or when comparing cross-distro parity across the four coder-family images.
Desktop applications including Chromium, VLC, KeePassXC, btop, cockpit, and zsh. Use when working with GUI applications or desktop environment setup.
DevOps CLI tools: AWS CLI, Scaleway, kubectx/kubens, OpenTofu, wrangler, bind-utils, jq, rsync. Use when working with cloud infrastructure, DNS lookups, infrastructure-as-code, or DevOps tooling.
Developer tools including bat, ripgrep, neovim, gh, direnv, fd-find, htop, podman-compose, and many more CLI utilities. Use when working with developer tooling, CLI utilities, or container dev environments.
Docker CE engine with buildx and compose plugins from the official Docker repository. Use when working with Docker, container builds, or Docker Compose.
Fast system information tool (neofetch successor). Use when working with the fastfetch layer.
Multi-language runtime meta-layer — Go, PHP, .NET 9 SDK, nodejs-devel, python3-devel, ramalama. System Python via RPM (not pixi-python). Uses nodejs and rust layers as explicit deps. Use when working with polyglot development or composing multiple language runtimes into a single image.
MUST be invoked before any work involving: layer authoring, layer.yml, tasks, pixi.toml, package.json, Cargo.toml, or any file under layers/. This skill is the authoritative reference for the `tasks:` verb catalog, `vars:` substitution, execution order, and per-verb validation. Every other skill defers here for install-schema questions.
libvirt-RPC test commands — `ov test libvirt <vm> …` for VM info, framebuffer screenshots, send-key, passwd, QMP, qemu-guest-agent client, snapshots, events.
Fedora with RPM Fusion non-free repositories enabled. Base for images needing codec or proprietary package support like immich. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-nonfree image.
Fedora image with the full ov toolchain using shared layers. Rootless-first since 2026-04 — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same layer list as arch-ov. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-ov image.
Test image with Traefik reverse proxy and testapi service. Currently disabled. Used for development testing. MUST be invoked before building or troubleshooting the fedora-test image.
FFmpeg multimedia framework (negativo17 nonfree build with H.264/AAC support). Use when working with the ffmpeg layer.
FileBrowser Quantum web file manager on port 8080 with config-file-driven setup. Use when working with FileBrowser, web file management, or file browsing in containers.
Forge AI coding agent CLI (forgecode.dev) installed globally via npm from the `forgecode` package. Installs the `forge` binary. Use when working with Forge, forgecode.dev, or alternative AI coding agents.
Google Gemini CLI for AI coding assistance and search. Use when working with the gemini layer.
GitHub CLI, git, and git-lfs — the single-responsibility home for all git/GitHub tooling as of 2026-04. Ships the noscripts + post-install dance for git-lfs so the RPM's systemd trigger doesn't fail at build time. Use when composing git + gh + git-lfs into an image, or when deciding which layer should own a git-related binary.
GIF search and download CLI. Use when working with the gifgrep layer.
GitHub Actions local runner (act-cli) and guestfs-tools via COPR. Use when working with GitHub Actions, local CI testing, or act.
GitHub Actions self-hosted runner as a supervised container service. Use when working with GitHub Actions runners, CI/CD infrastructure, or runner registration.
Self-hosted GitHub Actions runner with the full Overthink toolchain. Rootless-first since 2026-04 — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Host networking retained for reachability. MUST be invoked before building, deploying, configuring, or troubleshooting the githubrunner image.
KDE-native desktop applications (Konsole, Dolphin) for KWin compositor. Use when working with the kwin-apps layer.
Encrypted filesystem (gocryptfs) for ov config encrypted volume operations. Use when working with encrypted volumes, ov config mount/unmount, or filesystem encryption.
Google Cloud SDK providing gcloud, gsutil, and bq CLI tools. Use when working with Google Cloud Platform, GCP services, or cloud SDK configuration.
Google Cloud npm packages: firebase-tools and Gemini CLI. Use when working with Firebase, Gemini CLI, or GCP Node.js tooling.
Google Places API CLI for location search. Use when working with the goplaces layer.
# harness — Drive AI agents through BDD-scenario iteration cycles ## Overview `ov harness` is the project's iterative AI driver. Same loop, two modes: - **Benchmarking** — score an AI against pending BDD scenarios; iterate until plateau. - **BDD development** — write failing scenarios first, let the AI drive code that makes them pass. Both modes share the machinery: per-iteration git clone + AI-CLI invocation + nested `ov image build` + `ov image test --format yaml` scoring + plateau-bou
Full-featured standalone Hermes AI agent with AI CLIs, dev tools, DevOps tools, and ov. MUST be invoked before building, deploying, configuring, or troubleshooting the hermes image.
Hermes self-improving AI agent by Nous Research with voice, messaging, and tool-calling. MUST be invoked before any work involving: the hermes layer, Hermes Agent configuration, hermes service setup, or hermes Python/npm dependencies.
Hermes AI agent image with Playwright Chromium browser for web automation. Builds on top of the headless hermes image, adding Chromium and system deps. MUST be invoked before building, deploying, configuring, or troubleshooting the hermes-playwright image.
Playwright Chromium browser for Hermes Agent with Fedora-compatible system deps. MUST be invoked before any work involving: Playwright in hermes containers, Chromium browser automation for hermes, or hermes-playwright layer configuration.
MUST be invoked before any work involving: `ov deploy add host` / `ov deploy del host`, applying layer recipes to the local filesystem, the host-target install ledger, ReverseOp teardown, the host-specific `--with-services`/`--allow-repo-changes`/`--allow-root-tasks` gates, sudo batching, or the `~/.config/overthink/installed/` directory.
Host-deploy supporting Go files: hostdistro.go, install_ledger.go, builder_run.go, shell_profile.go, reverse_ops.go, service_render.go, deploy_ref.go, migrate_services_tool.go. MUST be invoked before reading or modifying any of those files, or when debugging host-target deploy behaviour (ledger state, sudo batching, managed-block insertion, glibc preflight, ref resolution).
Bootc VM image with OpenClaw gateway, Chrome, VNC, and PipeWire. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-browser-bootc image.
Immich photo management server on port 2283. Includes PostgreSQL, Redis, and non-free codec support via RPM Fusion. CPU-only (no ML). MUST be invoked before building, deploying, configuring, or troubleshooting the immich image.
Immich photo management with CUDA ML backend for face recognition and smart search. Includes PostgreSQL, Redis, and the immich-ml service. MUST be invoked before building, deploying, configuring, or troubleshooting the immich-ml image.
Lightweight JupyterLab with real-time collaboration on port 8888. No GPU required. Based on fedora (not nvidia), supports both amd64 and arm64. MUST be invoked before building, deploying, configuring, or troubleshooting the jupyter image.
Full CUDA ML stack + JupyterLab with real-time collaboration and CRDT MCP server on port 8888. Use when working with GPU-accelerated Jupyter notebooks, ML training with collaboration, or the jupyter-ml layer.
Lightweight JupyterLab with real-time collaboration (jupyter-collaboration) on port 8888. No GPU required. Use when working with collaborative notebooks, jupyter-collaboration, or lightweight Jupyter environments without ML/CUDA dependencies.
k3s binary installer (common base for k3s-server and k3s-agent). Use when building images that need the k3s binary but do NOT want a server/agent service started automatically.
k3s worker (agent) node — joins an existing k3s-server via pre-shared token. Fully declarative: same ov secrets set once + env K3S_SERVER_URL per agent deploy.
k3s control-plane (server) node with ServiceLB, Traefik v2, and local-path-provisioner enabled by default. Publishes kubeconfig back to the operator via layer artifacts and registers a ClusterProfile on first boot.
Lightweight Wayland compositor (wlroots-based) for nested desktop inside pixelflux. MUST be invoked when working with: the labwc layer, Wayland compositor config in selkies images, or labwc-wrapper.
Rust compiler and Cargo package manager via system packages (RPM/DEB). Use when working with Rust development or Cargo builds.
ElevenLabs text-to-speech CLI. Use when working with the sag layer.
Browser-accessible desktop streaming via WebSocket using pixelflux and pcmflux. Use when working with Selkies streaming engine, pixelflux, pcmflux, or browser-based remote desktop.
Service log viewing for running containers. MUST be invoked before any work involving: ov logs command, viewing container output, or debugging service issues.
MUST be invoked before any work involving: Model Context Protocol — both directions. (1) `ov test mcp` client: probing MCP servers declared via mcp_provides, testing MCP tool catalogs, debugging the URL-rewriter (including host-networked containers via `HostConfig.NetworkMode` detection — new 2026-04) or port-publishing behavior. (2) `ov mcp serve` server: running the ov CLI itself as an MCP server over Streamable HTTP or stdio, auto-generated from Kong reflection (~192 tools including the MCP-first authoring surface — image/layer scaffolding, comment-preserving YAML edits, free-form file writes), destructive-hint annotations, the `--read-only` filter, auto-fallback to `overthinkos/overthink` when cwd has no `image.yml` (always fires now, regardless of OV_PROJECT_DIR being set — 2026-04 change), and the `ov-mcp` deployment layer with its `/workspace` bind mount.
MCP server CLI for listing, configuring, and calling MCP tools. Use when working with the mcporter layer.
MUST be invoked before any work involving: `ov migrate unified` command (converting legacy image.yml/layer.yml/build.yml into unified overthink.yml, rewriting flat-form layer.yml, migrating legacy service:|...| raw-INI and system_services: entries), or `ov migrate vm-spec` (harvesting legacy image.bootc/image.vm/image.libvirt fields into kind:vm entities in vms.yml).
GNOME Mutter Wayland compositor running headless inside containers with virtual monitor. Use when working with Mutter, GNOME desktop, or headless compositor setup.
GNOME desktop composition with Mutter, PipeWire, XDG Portal, Chrome, gnome-terminal, and Nautilus. Use when working with Mutter/GNOME desktop containers.
nano-pdf CLI for PDF editing with natural language. Use when working with the nano-pdf layer.
Scaffold new layers, images, and whole projects with template files. MUST be invoked before any work involving: ov image new {project, image, layer} commands, creating new projects/images/layers, or scaffolding directories.
Niri Wayland compositor (Smithay-based) built from source with virtual output support. Use when working with niri compositor, headless Wayland, or Smithay-based desktop containers.
Pre-commit git hooks framework via pixi, plus markdownlint-cli via npm. Use when working with git hooks, linting, or code quality tooling.
Python 3.13 runtime installed via pixi (conda-forge). Use when working with Python, pixi environments, or Python dependencies.
GPU-accelerated Python ML environment with CUDA, PyTorch, and llama.cpp. No Jupyter server — use as a base for ML workloads or interactive shell. MUST be invoked before building, deploying, configuring, or troubleshooting the python-ml image.
Base Niri desktop composition with audio, portals, Chrome, terminal, and file manager. Base desktop composition layer — no display server included.
Node.js 24 and npm via Fedora RPM packages with global npm prefix. Use when working with Node.js 24 or applications requiring a newer Node.js version.
Unsloth fine-tuning notebook collection provisioned into the workspace volume at deploy time. Data-only layer — no packages, no services, no dependencies. Use when working with notebook-finetuning, Unsloth training notebooks, or unsloth-studio data provisioning.
LLMs on Supercomputers course notebook collection (TU Wien AI Factory Austria). 15 Jupyter notebooks covering prompt engineering, RAG, and fine-tuning. Data-only layer — no packages, no services, no dependencies. Use when working with the LLM course notebooks, LangChain tutorials, or RAG examples.
Ollama integration notebook collection provisioned into the workspace volume at deploy time. 6 Jupyter notebooks demonstrating Ollama via requests, OpenAI, ollama lib, Anthropic, HuggingFace, and GPU. Data-only layer — no packages, no services, no dependencies. Use when working with notebook-ollama, Ollama API tutorials, or Jupyter+Ollama integration.
OpenRouter API integration notebook collection provisioned into the workspace volume at deploy time. 3 Jupyter notebooks demonstrating OpenRouter API basics, model discovery, and practical inference. Data-only layer with env_requires — first layer to use the env_requires feature. Use when working with notebook-openrouter, OpenRouter API tutorials, or Jupyter+OpenRouter integration.
Starter notebook templates provisioned into the workspace volume at deploy time. First data-only layer in the project — no packages, no services, no dependencies. Use when working with notebook-templates, data layers, or jupyter initial content.
NVIDIA GPU base image with runtime support and CUDA toolkit on Fedora. Base for all GPU-accelerated images (python-ml, jupyter, ollama, comfyui). MUST be invoked before building, deploying, configuring, or troubleshooting the nvidia image.
NVIDIA GPU runtime support: driver libs, nvidia-container-toolkit (CDI), and VA-API. Fedora (negativo17) and Arch Linux (pac). Base layer for all GPU-accelerated images. Use when working with NVIDIA GPU support, CDI device injection, or the nvidia layer.
Standalone Ollama LLM inference server with CUDA GPU support. Runs as a supervisord service on port 11434 with persistent model storage. MUST be invoked before building, deploying, configuring, or troubleshooting the ollama image.
Ollama LLM server on port 11434 with CUDA GPU support and model persistence. Use when working with Ollama, LLM serving, or local AI model inference.
Openbox lightweight X11 window manager with keybindings and desktop support. Use when working with Openbox WM in X11 desktop containers.
Headless OpenClaw AI gateway image. Runs the gateway on port 18789 without a desktop environment. Use when working with the headless MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw image.
Desktop applications (terminal, file manager) for X11 containers. Use when working with the x11-apps layer.
Base X11 desktop composition with Xorg headless, Openbox, Chrome, terminal, and file manager. Use when working with X11 desktop containers or comparing X11 vs Wayland stacks.
XDG desktop portal integration for Niri compositor (GTK + GNOME backends). Use when working with portals, screen sharing, or file dialogs in Niri containers.
Headless OpenClaw with all tool layers. No desktop environment. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full image.
OpenClaw full + ML tools (whisper, sherpa-onnx-tts, CUDA). Use when working with the openclaw-full-ml layer.
Maximal OpenClaw deployment (gateway + browser + all feasible tools/skills). Use when working with the openclaw-full layer.
OpenClaw with all tools + Sway desktop + VNC. No GPU/ML. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full-sway image.
Headless OpenClaw gateway with local Ollama LLM inference. GPU-accelerated, no desktop. Use when working with the headless openclaw+ollama deployment MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-ollama image.
Topic skill (no dedicated `ov openclaw` command — the surface is layer composition + image deployment). MUST be invoked before any work involving: OpenClaw gateway configuration, model auth, browser integration, channel setup, or any image composing `openclaw-*` layers (`openclaw`, `openclaw-ollama`, `openclaw-sway-browser`, `openclaw-full`, `openclaw-full-ml`, `openclaw-full-sway`, `openclaw-ollama-sway-browser`, `openclaw-browser-bootc`).
Open WebUI image with auto-configured LLM providers, MCP servers, and Jupyter on port 8080. MUST be invoked before building, deploying, configuring, or troubleshooting the openwebui image.
Open WebUI with auto-configured LLM providers, MCP servers, and Jupyter code execution. MUST be invoked before any work involving: the openwebui layer, Open WebUI configuration, LLM provider auto-detection, or MCP server discovery for Open WebUI.
Oracle CLI for prompt bundling and multi-engine AI queries. Use when working with the oracle layer.
OS system configuration for bootc images: SDDM/KDE cleanup, systemd preset, /opt permissions, initramfs rebuild. Use when working with bootc OS configuration, systemd presets, or initramfs in bootable containers.
Overthink CLI (ov) binary installed into container/VM images for in-container use. Use when working with ov binary deployment inside containers, native D-Bus support, or the ov-full composition.
Full ov toolchain composition with CLI, virtualization, encrypted storage, and console access. Use when working with ov inside containers/VMs, VM management, or encrypted volumes.
PulseAudio volume control GUI for desktop containers with PipeWire audio. Use when working with audio configuration or volume control.
PipeWire audio and media server with WirePlumber session manager. Use when working with audio in containers, PipeWire, or PulseAudio compatibility.
Pixi package manager binary with environment and PATH setup. Use when working with pixi, conda-forge packages, or Python environment management.
Playwright browser automation (OpenClaw AI snapshots). Use when working with the playwright layer.
Wayland overlay windows via gtk4-layer-shell (for screen recordings). Use when working with the wl-overlay layer, gtk4-layer-shell, or overlay dependencies.
Fullscreen Wayland overlays for screen recordings via gtk4-layer-shell. MUST be invoked before any work involving: ov test wl overlay commands, recording overlays, title cards, lower-thirds, countdowns, or fade transitions.
Core ML/AI Python environment with PyTorch, vLLM runtime deps, and CUDA support. Tier 2 environment-owner meta-layer that composes llama-cpp. Use when working with machine learning, PyTorch, HuggingFace, or GPU computing.
Redis in-memory data store on port 6379 with periodic persistence. Use when working with Redis, caching, or session storage in containers.
Remove service container, quadlet file, and deploy.yml entry. MUST be invoked before any work involving: ov remove command, cleaning up containers, removing quadlets, or purging volumes.
Fast recursive text search (rg). Use when working with the ripgrep layer.
AMD ROCm runtime, OpenCL, and GPU compute support via system packages. Use when working with AMD GPU computing, ROCm, HIP, OpenCL, or AMD GPU passthrough in containers.
Base Sway desktop composition with audio, portals, Wayland tools, Chrome, terminal, file manager, and status bar. Use sway-desktop-vnc for VNC remote access.
Thunar file manager for Sway desktop environments with sway config integration. Use when working with file management in Sway desktop containers.
MUST be invoked before any work involving: ov shell command, interactive shells, command execution in containers, workspace mounts, TTY allocation, or port relay.
sherpa-onnx offline text-to-speech. Use when working with the sherpa-onnx layer.
Topic skill (no dedicated `ov sidecar` command — the surface is the `--sidecar <name>` / `--list-sidecars` flags on `ov config` and the `sidecars:` field in `deploy.yml`). MUST be invoked before any work involving: sidecar containers, pod networking, Tailscale exit nodes, `ov config --sidecar`, the `deploy.yml` `sidecars:` field, or sidecar-env filtering (`env_accepts` / `env_requires` routing to the sidecar vs the app container).
SPICE wire-level client for VMs — `ov test spice <vm>` handshake, inputs, native display screenshots via the Shells-com/spice library.
Generic SSH support for ov — `--host <alias>` re-execs any command on a remote machine; `ov ssh tunnel` exposes remote SPICE/VNC endpoints on the local host for external GUI apps.
OpenSSH server and client on port 22 for remote access. Use when working with SSH access, remote login, or sshd configuration in containers/VMs.
Start a container as a background service. MUST be invoked before any work involving: ov start command, launching containers, quadlet vs direct mode startup, or encrypted volume auto-mounting.
Service status display with tool probes and device detection. MUST be invoked before any work involving: ov status command, checking container state, tool availability, port mapping, or JSON status output.
Steam gaming client with gamescope. Use when working with Steam, gaming, or gamescope in containers.
Summarize CLI for extracting text/transcripts from URLs and files. Use when working with the summarize layer.
Base Ubuntu 24.04 noble image. Root of the image hierarchy for Ubuntu- based builds. Runs as uid 1000 `ubuntu` via ADOPT mode — the upstream ubuntu:24.04 base image ships a pre-existing ubuntu:ubuntu account, and build.yml distro.ubuntu declares base_user to adopt it verbatim. Enabled 2026-04 as part of Phase A–F. MUST be invoked before building, deploying, configuring, or troubleshooting any Ubuntu-based image.
Supervisord process manager for running multiple services inside containers. Use when working with supervisord, container service management, multi-process containers, event listeners for crash-loop circuit breaking, or service priority ordering.
MUST be invoked before any work involving: `ov test`, `ov image test`, the `tests:` / `deploy_tests:` fields in layer.yml / image.yml / deploy.yml, the `org.overthinkos.tests` OCI label, or any declarative check authoring. Covers verb catalog (file/port/command/http/package/service/process/dns/ user/group/interface/kernel-param/mount/addr/matching), runtime variable resolution (`${HOST_PORT:N}`, `${VOLUME_PATH:name}`, `${CONTAINER_IP}`, `${ENV_*}`), deploy.yml overlay rules, authoring gotchas learned the hard way (package renames, absent binaries, host vs container network routing), and both build-time / deploy-time CLI wrappers.
Persistent tmux sessions inside containers: shell reconnection, background commands, output capture, and key sending. Use when running long-lived or TTY-dependent commands. MUST be invoked before any work involving: ov tmux commands, persistent shells, background container commands, or TTY-dependent TUI programs.
Traefik reverse proxy on ports 8000/8080/443 with automatic TLS and dynamic routing. Use when working with Traefik, reverse proxy, TLS certificates, or service routing.
Terminal multiplexer. Use when working with the tmux layer.
Kitchen-sink development image on Ubuntu 24.04 noble: coding + AI-coding CLIs + DevOps tooling in one container. Ubuntu base, 30+ direct layers mirroring fedora-coder's stack. Runs as uid 1000 `ubuntu` — the upstream ubuntu:24.04 account, adopted verbatim via build.yml's base_user declaration. 142/0/1-skip tests pass as of 2026-04-20. Use when working with the ubuntu-coder image — especially when the `${USER}` / `${HOME}` / sudoers differ from the other three coder images.
MUST be invoked before any work involving: GPU device access rules, ov udev commands, udev rule management, or container GPU troubleshooting.
Just task runner with ujust wrapper for Universal Blue justfile conventions. Use when working with just/ujust task runners or ublue-os justfile integration.
Unsloth Studio fine-tuning web UI with CUDA GPU support, vLLM inference, and llama.cpp. Runs as a supervisord service on ports 8888 (Studio) and 8000 (vLLM API). MUST be invoked before building, deploying, configuring, or troubleshooting the unsloth-studio image.
Unsloth Studio fine-tuning web UI on ports 8888/8000 with vLLM inference. Tier 2 environment-owner meta-layer composing llama-cpp + unsloth, owns pixi.toml. Use when working with Unsloth Studio, the fine-tuning web UI, or the unsloth-studio image.
uv + uvx — Astral's fast Python package/project manager. Rewritten 2026-04 to install as a direct-download binary (no pixi env, no Python dep). Pulled via the `download:` verb with `strip_components: 1` to handle the upstream tarball's arch-prefixed top-level directory. Use when working with the uv layer or when deciding whether to install a CLI tool via pixi vs. direct binary download.
VectorChord PostgreSQL extension for optimized vector similarity search. Use when working with VectorChord, vector indices, or smart search performance.
Test image with Valkey (Redis-compatible) key-value store. Currently disabled. Used for development testing. MUST be invoked before building or troubleshooting the valkey-test image.
Show ov CLI version information. MUST be invoked before any work involving: ov version command or checking installed ov version.
QEMU/KVM/libvirt stack plus supervisord-managed virtqemud and virtnetworkd daemons. Works rootless: `qemu:///session` mode serves uid 1000 with only /dev/kvm passthrough — no SYS_ADMIN, no root. Canonical source for the rootless nested VM recipe. Use when working with virtual machines, QEMU, KVM, libvirt, or the virtualization layer.
OpenXR, OpenVR, and GStreamer libraries for VR streaming and development. Use when working with VR, AR, streaming, or spatial computing.
Waybar status bar and sway-autotile for the Sway desktop compositor. Use when working with Waybar configuration, status bar, or automatic tiling.
Desktop video recorder via selkies WebSocket capture bridge for selkies-desktop. Use when working with the wl-record-pixelflux layer.
Screenshot via selkies WebSocket capture bridge for selkies-desktop. Use when working with the wl-screenshot-pixelflux layer.
# wl-tools - Compositor-Agnostic Desktop Automation Tools ## Overview Provides CLI tools for desktop automation — Wayland-native, X11, and clipboard. Used by the `ov test wl` command. Works on all wlroots compositors (sway, labwc, niri). No daemon or special device access needed. **Note:** Screenshots are NOT included in this layer. Use `wl-screenshot-grim` (sway) or `wl-screenshot-pixelflux` (selkies) depending on your compositor. ## Layer Definition ```yaml rpm: packages: - wtype
Xfce4 terminal emulator for Sway desktop environments with sway config integration. Use when working with terminal emulators in Sway desktop containers.
Xorg X server with dummy video driver and libinput for headless containers. Provides virtual framebuffer + input device auto-detection from /dev/input.
X (Twitter) API CLI for posts, search, DMs, and media. Use when working with the xurl layer.
AUR helper for Arch Linux, enabling aur: package sections in layer.yml. Use when working with the yay layer or Arch AUR builds.
OpenClaw with all tools + Sway desktop + VNC. No GPU/ML. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full-sway image.
Bootc VM image with OpenClaw gateway, Chrome, VNC, and PipeWire. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-browser-bootc image.
Full-stack AI image: OpenClaw gateway + all tools + Ollama LLM + Whisper STT + sherpa-onnx TTS + Sway desktop with Chrome. GPU-accelerated with CUDA. MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-ollama-sway-browser image.
Google Chrome running on Niri compositor with DevTools protocol. Use when working with Chrome in Niri desktop containers.
KDE-native desktop applications (Konsole, Dolphin) for KWin compositor. Use when working with the kwin-apps layer.
Google Chrome running on Mutter compositor with DevTools protocol. Use when working with Chrome in Mutter/GNOME desktop containers.
GNOME-native desktop applications (gnome-terminal, Nautilus) for Mutter compositor. Use when working with the mutter-apps layer.
Headless OpenClaw AI gateway image. Runs the gateway on port 18789 without a desktop environment. Use when working with the headless MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw image.
KDE desktop composition with KWin, PipeWire, XDG Portal, Chrome, Konsole, and Dolphin. Use when working with KWin desktop containers.
GNOME desktop composition with Mutter, PipeWire, XDG Portal, Chrome, gnome-terminal, and Nautilus. Use when working with Mutter/GNOME desktop containers.
GNOME Mutter Wayland compositor running headless inside containers with virtual monitor. Use when working with Mutter, GNOME desktop, or headless compositor setup.
Browser-accessible desktop streaming via WebSocket using pixelflux and pcmflux. Use when working with Selkies streaming engine, pixelflux, pcmflux, or browser-based remote desktop.
GPU-accelerated Selkies streaming desktop with NVIDIA CUDA. Use when working with the selkies-desktop-nvidia image.
PipeWire audio and media server with WirePlumber session manager. Use when working with audio in containers, PipeWire, or PulseAudio compatibility.
Bootable (bootc) VM image combining the selkies-desktop streaming desktop with Tailscale (mesh VPN) and KeePassXC (password manager). Fedora 43 base. Boots under libvirt/QEMU as a full OS. Canonical worked example of the external-base-bootc + explicit-distro pattern. MUST be invoked before building, deploying, or troubleshooting selkies-desktop-bootc.
OpenXR, OpenVR, and GStreamer libraries for VR streaming and development. Use when working with VR, AR, streaming, or spatial computing.
WhatsApp CLI for message sending and history sync. Use when working with the wacli layer.
KWin Wayland compositor running headless inside containers with virtual backend. Use when working with KWin, KDE desktop, or headless compositor setup.
Waybar status bar and sway-autotile for the Sway desktop compositor. Use when working with Waybar configuration, status bar, or automatic tiling.
Thunar file manager for Sway desktop environments with sway config integration. Use when working with file management in Sway desktop containers.
kind:vm entity pairing with the /ov-foundation:aurora bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-foundation:aurora. This skill documents only the VM resource sizing. MUST be invoked before editing aurora-bootc in vms.yml.
KDE XDG Desktop Portal backend with ScreenCast and RemoteDesktop support. Use when working with KDE portals, screen sharing, or libei input in KWin containers.
XDG desktop portal integration for Niri compositor (GTK + GNOME backends). Use when working with portals, screen sharing, or file dialogs in Niri containers.
kind:vm entity pairing with the /ov-openclaw:openclaw-browser-bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-openclaw:openclaw-browser-bootc. This skill documents only VM overrides. MUST be invoked before editing openclaw-browser-bootc-bootc in vms.yml.
kind:vm entity pairing with the /ov-foundation:bazzite-ai bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-foundation:bazzite-ai. This skill documents only the VM-specific fields. MUST be invoked before editing bazzite-ai-bootc in vms.yml.
kind:vm entity pairing with the /ov-selkies:selkies-desktop-bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-selkies:selkies-desktop-bootc (the canonical bootc-VM worked example). MUST be invoked before editing selkies-desktop-bootc-bootc in vms.yml.
Stop a running service container. MUST be invoked before any work involving: ov stop command, stopping containers, or halting services.
MUST be invoked before any work involving: virtual machines, ov vm commands, kind:vm entities in vm.yml, cloud_image vs bootc source types, libvirt/QEMU backends, BIOS vs UEFI firmware, virtio-gpu video, or VM lifecycle.
Image inspection showing resolved configuration as JSON. MUST be invoked before any work involving: ov image inspect command, viewing image configuration, or querying image metadata.
Topic skill (no dedicated `ov enc` command — the surface is flags + subcommands on `ov config`). MUST be invoked before any work involving: encrypted storage, gocryptfs, or the `--encrypt` / `-v <name>:encrypted` backing flags on `ov config`, the `ov config mount` / `unmount` / `status` / `passwd` subcommands, or `ov-enc-<image>-<volume>.scope` systemd units.
Mounts a virtiofs share tagged `workspace` at /workspace inside a VM guest via a systemd .mount unit. Use when a kind:vm entity shares a host directory into the guest and you need it auto-mounted (and re-mounted at every boot).
QEMU guest agent for host-guest communication in virtual machines. Use when working with QEMU/KVM VMs, guest agent setup, or libvirt channel configuration.
Go type reference for VmSpec and the discriminated-union source types (VmSource cloud_image | bootc). Documents every field, validation rules, and the adopt-user decision. Source files: ov/vm_spec.go, ov/cloud_init_types.go, ov/libvirt_validate.go. MUST be invoked before editing VmSpec Go code or authoring vm.yml entries.
Authoring reference for kind:vm entities in vm.yml. Parallel to /ov-image:layer and /ov-image:image. Covers the VmSpec schema, source.kind discriminator (cloud_image vs bootc), base_user adopt pattern, and step-by-step recipes for both source kinds. MUST be invoked before authoring or editing vm.yml entries.
Lightweight Wayland compositor (wlroots-based) for nested desktop inside pixelflux. MUST be invoked when working with: the labwc layer, Wayland compositor config in selkies images, or labwc-wrapper.
Desktop notification client library providing notify-send CLI. Use when working with notify-send, libnotify, or shell-based notifications.
PipeWire audio and media server with WirePlumber session manager. Use when working with audio in containers, PipeWire, or PulseAudio compatibility.
Browser-accessible desktop streaming via WebSocket using pixelflux and pcmflux. Use when working with Selkies streaming engine, pixelflux, pcmflux, or browser-based remote desktop.
Headless OpenClaw gateway with local Ollama LLM inference. GPU-accelerated, no desktop. Use when working with the headless openclaw+ollama deployment MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-ollama image.
Full-stack AI image: OpenClaw gateway + all tools + Ollama LLM + Whisper STT + sherpa-onnx TTS + Sway desktop with Chrome. GPU-accelerated with CUDA. MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-ollama-sway-browser image.
OpenClaw with all tools + Sway desktop + VNC. No GPU/ML. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full-sway image.
Unsloth fine-tuning notebook collection provisioned into the workspace volume at deploy time. Data-only layer — no packages, no services, no dependencies. Use when working with notebook-finetuning, Unsloth training notebooks, or unsloth-studio data provisioning.
Unsloth Studio fine-tuning web UI on ports 8888/8000 with vLLM inference. Tier 2 environment-owner meta-layer composing llama-cpp + unsloth, owns pixi.toml. Use when working with Unsloth Studio, the fine-tuning web UI, or the unsloth-studio image.
Open WebUI image with auto-configured LLM providers, MCP servers, and Jupyter on port 8080. MUST be invoked before building, deploying, configuring, or troubleshooting the openwebui image.
Maximal OpenClaw deployment with Sway desktop, Chrome, VNC, and all tool layers. Includes all feasible OpenClaw skill dependencies. Use when working with MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-sway-browser image.
Headless OpenClaw AI gateway image. Runs the gateway on port 18789 without a desktop environment. Use when working with the headless MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw image.
RTSP/ONVIF camera snapshot and clip CLI. Use when working with the camsnap layer.
versa — image bundling marimo reactive notebook environment with Apache Airflow + GPU-accelerated OSM/GTFS analytics + martin vector tiles + 3D terrain via MapLibre + Polars geospatial extensions (polars-st, geopolars) + GeoArrow + deck.gl rendering via lonboard. Composes a marimo + airflow + OSM/GTFS analytics stack (agent-forwarding, nvidia, cuda, marimo, airflow, osm-tools, maputnik, notebook-osm, notebook-graph, debug-tools, dbus, ov, plus the versatiles tile-serving layers) on a CachyOS / Arch base into a single pod that exposes 7 host ports and 1 MCP server. MUST be invoked before building, deploying, configuring, or troubleshooting the versa image.
Bootstrap-from-scratch Ubuntu 24.04 rootfs via debootstrap inside a privileged builder (from: builder:debootstrap, bootstrap_builder_image: ubuntu-debootstrap-builder). Retained for offline/air-gapped builds. Lives in the overthinkos/ubuntu submodule (image/ubuntu). MUST be invoked before building or troubleshooting ubuntu-debootstrap.
Rootless nested podman/buildah/skopeo recipe. Ships zero cap_add — works via surgical `unmask=/proc/*` security_opt plus dual-location containers.conf/storage.conf/policy.json plus two canonical env vars plus subuid layout that fits inside the outer user namespace. Authoritative source for the `mount_too_revealing()` kernel RCA. Use when working with nested containers, the container-nesting layer, or any "rootless-in-rootless podman" question.
Terminal session recorder (asciinema). Use when working with the asciinema layer.
Topic skill (no dedicated `ov sidecar` command — the surface is the `--sidecar <name>` / `--list-sidecars` flags on `ov config` and the `sidecar:` field in `deploy.yml`). MUST be invoked before any work involving: sidecar containers, pod networking, Tailscale exit nodes, `ov config --sidecar`, the `deploy.yml` `sidecar:` field, or sidecar-env filtering (`env_accept` / `env_require` routing to the sidecar vs the app container).
Persistent tmux sessions inside containers: shell reconnection, background commands, output capture, and key sending. Use when running long-lived or TTY-dependent commands. MUST be invoked before any work involving: ov tmux commands, persistent shells, background container commands, or TTY-dependent TUI programs.
OpenAI Codex CLI coding agent. Use when working with the codex layer.
COPR and external desktop packages: CoolerControl, Ghostty terminal, Nerd Fonts, WinBoat. Use when working with COPR repositories or these desktop applications in bootc images.
DevOps CLI tools: AWS CLI, Scaleway, kubectx/kubens, OpenTofu, wrangler, bind-utils, jq, rsync. Use when working with cloud infrastructure, DNS lookups, infrastructure-as-code, or DevOps tooling.
GitHub CLI, git, and git-lfs — the single-responsibility home for all git/GitHub tooling. Ships the noscripts + post-install dance for git-lfs so the RPM's systemd trigger doesn't fail at build time. Use when composing git + gh + git-lfs into an image, or when deciding which layer should own a git-related binary.
Google Cloud SDK providing gcloud, gsutil, and bq CLI tools. Use when working with Google Cloud Platform, GCP services, or cloud SDK configuration.
Oracle CLI for prompt bundling and multi-engine AI queries. Use when working with the oracle layer.
MCP server exposing the full ov CLI as tools (Streamable HTTP on port 18765). Meta-layer composition — layers: [ov, supervisord] — ships only service wiring + `/workspace` bind-mount + OV_PROJECT_DIR env plumbing. Auto-falls back to the upstream overthinkos/overthink repo when /workspace has no image.yml. Use when composing an MCP gateway into any image so LLM agents can drive ov remotely.
Typst document processor binary for typesetting and document generation. Use when working with Typst, document compilation, or typesetting tools.
Base Arch Linux image. Root of the image hierarchy for all pac-based images. MUST be invoked before building, deploying, configuring, or troubleshooting the arch image.
Cloud-init for instance initialization in cloud/VM environments with NoCloud datasource. Use when working with cloud-init, VM provisioning, or cloud instance bootstrapping.
OS system configuration for bootc images: SDDM/KDE cleanup, systemd preset, /opt permissions, initramfs rebuild. Use when working with bootc OS configuration, systemd presets, or initramfs in bootable containers.
System files overlay and justfile imports for bootc images. Copies system_files to root filesystem. Use when working with system file overlays, justfile imports, or bazzite configuration.
MUST be invoked before any work involving: Chrome DevTools Protocol, ov eval cdp commands, browser automation, clicking elements, taking screenshots, or OAuth flows inside containers.
The DISPOSABLE pod bed (eval-sway-browser-vnc-pod) for R10 testing of the Sway desktop verb surface (cdp / wl / vnc / dbus / mcp / record). Deploys the shipping sway-browser-vnc image. Use when running or maintaining the live-container eval bed for the sway stack.
SPICE wire-level client for VMs — `ov eval spice <vm>` handshake, inputs, native display screenshots via the Shells-com/spice library.
Configure KeePassXC as the freedesktop.org Secret Service provider on a target:local host: enable FdoSecrets, autostart KeePassXC, disable competing daemons (gnome-keyring + kwallet) at the per-user XDG-autostart and systemd-user-unit layers, install pinentry/libsecret, and install generic direnv shell hooks for bash/zsh/fish. Use when adding KeePassXC as the Secret Service backend on a host (NOT for adding the binary to a container image — use /ov-infrastructure:keepassxc for that).
Terminal multiplexer. Use when working with the tmux layer.
QEMU/KVM/libvirt stack — works identically under supervisord (containers/ pods, custom `exec:` form) AND under systemd (host installs / bootc / VMs, use_packaged: virtqemud.socket / virtnetworkd.socket). Uses the mixed-entry `service:` schema (CLAUDE.md "Init-system polymorphism") — same name appears twice in the service: list, init system at deploy time picks the matching form. Canonical worked example of the polymorphism pattern.
VmDeployTarget is the 4th DeployTarget implementer (after OCITarget, PodDeployTarget, LocalDeployTarget; K8sDeployTarget is 5th). Applies an InstallPlan inside a running VM over SSH. Covers DeployExecutor interface, SSHExecutor, ShellExecutor, VmDeployState persistence, and the guest-side ledger. Source: ov/deploy_target_vm.go, ov/deploy_executor*.go, ov/deploy_add_cmd_vm.go. MUST be invoked before editing VM-target deploy code.
MUST be invoked before any work involving: `target: local` deployments, the Ansible-style `host:` destination field (literal `local` for direct shell, anything else routes through ssh(1) reading `~/.ssh/config` + ssh-agent), the `local:` template reference, the `user:` and `ssh_args:` Ansible-shaped overrides, the managed `~/.config/ov/ssh_config` fragment, the install ledger at `~/.config/overthink/installed/`, ReverseOp teardown, or the `--with-services`/`--allow-repo-changes`/`--allow-root-tasks` gates.
Lightweight JupyterLab with real-time collaboration on port 8888. No GPU required. Based on fedora (not nvidia), supports both amd64 and arm64. MUST be invoked before building, deploying, configuring, or troubleshooting the jupyter image.
Full CUDA ML JupyterLab image with finetuning, Ollama, and LLM course notebooks, CRDT MCP server, and real-time collaboration. Base: nvidia. Port 8888. Combines jupyter-ml with 37 Unsloth fine-tuning notebooks, 6 Ollama integration notebooks, and 15 LLM course notebooks. MUST be invoked before building, deploying, or troubleshooting the jupyter-ml-notebook image.
LLMs on Supercomputers course notebook collection (TU Wien AI Factory Austria). 15 Jupyter notebooks covering prompt engineering, RAG, and fine-tuning. Data-only layer — no packages, no services, no dependencies. Use when working with the LLM course notebooks, LangChain tutorials, or RAG examples.
OpenClaw full + ML tools (whisper, sherpa-onnx-tts, CUDA). Use when working with the openclaw-full-ml layer.
Headless OpenClaw with all tool layers. No desktop environment. MUST be invoked before building, deploying, or troubleshooting the openclaw-full image.
Desktop applications including Chromium, VLC, KeePassXC, btop, cockpit, and zsh. Use when working with GUI applications or desktop environment setup.
FFmpeg multimedia framework (negativo17 nonfree build with H.264/AAC support). Use when working with the ffmpeg layer.
GPU-accelerated Selkies streaming desktop with NVIDIA CUDA. Use when working with the selkies-desktop-nvidia image.
# wl-tools - Compositor-Agnostic Desktop Automation Tools ## Overview Provides CLI tools for desktop automation — Wayland-native, X11, and clipboard. Used by the `ov eval wl` command. Works on all wlroots compositors (sway, labwc). No daemon or special device access needed. **Note:** Screenshots are NOT included in this layer. Use `wl-screenshot-grim` (sway) or `wl-screenshot-pixelflux` (selkies) depending on your compositor. ## Layer Definition ```yaml rpm: packages: - wtype - wl
SwayNotificationCenter notification daemon for wlroots compositors (sway, labwc). Use when working with desktop notifications, notification center, or swaync configuration.
Wayland overlay windows via gtk4-layer-shell (for screen recordings). Use when working with the wl-overlay layer, gtk4-layer-shell, or overlay dependencies.
Wayland screen recorder for wlroots compositors. Use when working with the wf-recorder layer.
Blog/RSS feed monitor CLI. Use when working with the blogwatcher layer.
Fast recursive text search (rg). Use when working with the ripgrep layer.
Google Places API CLI for location search. Use when working with the goplaces layer.
MCP server CLI for listing, configuring, and calling MCP tools. Use when working with the mcporter layer.
nano-pdf CLI for PDF editing with natural language. Use when working with the nano-pdf layer.
Food delivery order status CLI (Foodora). Use when working with the ordercli layer.
ElevenLabs text-to-speech CLI. Use when working with the sag layer.
Just task runner with ujust wrapper for Universal Blue justfile conventions. Use when working with just/ujust task runners or ublue-os justfile integration.
Visual Studio Code editor installed from Microsoft's RPM repository. Use when working with VS Code installation or configuration in container images.
Topic skill (no dedicated `ov enc` command — the surface is flags + subcommands on `ov config`). MUST be invoked before any work involving: encrypted storage, gocryptfs, or the `--encrypt` / `-v <name>:encrypted` backing flags on `ov config`, the `ov config mount` / `unmount` / `status` / `passwd` subcommands, or `ov-enc-<image>-<volume>.scope` systemd units.
Topic skill (no dedicated `ov openclaw` command — the surface is layer composition + image deployment). MUST be invoked before any work involving: OpenClaw gateway configuration, model auth, browser integration, channel setup, or any image composing `openclaw-*` layers (`openclaw`, `openclaw-full`, or a custom image composing `openclaw`/`openclaw-full` + `sway-desktop`).
MUST be invoked before any work involving: ov secrets commands, Secret Service / config-file credential management, GPG-encrypted .secrets files, credential import/export, or secret administration.
Kitchen-sink development image on Ubuntu 24.04 noble: coding + AI-coding CLIs + DevOps tooling in one container. Ubuntu base, 30+ direct layers mirroring fedora-coder's stack. Runs as uid 1000 `ubuntu` — the upstream ubuntu:24.04 account, adopted verbatim via build.yml's base_user declaration. 142/0/1-skip tests pass. Use when working with the ubuntu-coder image — especially when the `${USER}` / `${HOME}` / sudoers differ from the other three coder images.
direnv -- automatic environment variable loading from .envrc files. Use when working with direnv, .envrc, .secrets, or environment management.
uv + uvx — Astral's fast Python package/project manager. Installs as a direct-download binary (no pixi env, no Python dep). Pulled via the `download:` verb with `strip_components: 1` to handle the upstream tarball's arch-prefixed top-level directory. Use when working with the uv layer or when deciding whether to install a CLI tool via pixi vs. direct binary download.
GitHub Actions local runner (act-cli) and guestfs-tools via COPR. Use when working with GitHub Actions, local CI testing, or act.
Google Gemini CLI for AI coding assistance and search. Use when working with the gemini layer.
MUST be invoked before any work involving: ov start/stop/status/logs/update/remove commands, ov config (deployment), init system service management, or container lifecycle.
Show ov CLI version information. MUST be invoked before any work involving: ov version command or checking installed ov version. Named `ov-version` (not `version`) to disambiguate from Claude Code's built-in `/version` slash command.
Self-hosted GitHub Actions runner with the full Overthink toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Host networking retained for reachability. MUST be invoked before building, deploying, configuring, or troubleshooting the githubrunner image.
libvirt-RPC test commands — `ov eval libvirt <vm> …` for VM info, framebuffer screenshots, send-key, passwd, QMP, qemu-guest-agent client, snapshots, events.
Hermes AI agent image with Playwright Chromium browser for web automation. Builds on top of the headless hermes image, adding Chromium and system deps. MUST be invoked before building, deploying, configuring, or troubleshooting the hermes-playwright image.
Hermes agent with AI CLIs (Claude Code, Codex, Gemini), developer tools, DevOps tools, and ov. Use when working with the hermes-full metalayer or full-featured standalone hermes deployments.
JupyterLab CRDT MCP server extension with 11 tools (notebook_*/cell_* + room_list + notebook_list_users) for programmatic notebook access. MUST be invoked when working with: the MCP server implementation, CRDT collaboration, the auto-attach single-room invariant, or the Tier 1 pip-only installation pattern for jupyter extensions.
# wl-screenshot-grim - Screenshot via grim (wlr-screencopy) ## Overview Provides `grim` for Wayland screenshot capture using the `wlr-screencopy` protocol. Works on sway and standalone wlroots compositors. **Does NOT work on selkies-desktop** (labwc nested in pixelflux can't deliver screencopy frames). For selkies-desktop, use `wl-screenshot-pixelflux` instead. ## Layer Definition ```yaml rpm: packages: - grim ``` ## Key Properties | Property | Value | |----------|-------| | Depends
Ollama LLM server on port 11434 with CUDA GPU support and model persistence. Use when working with Ollama, LLM serving, or local AI model inference.
Maximal OpenClaw deployment (gateway + browser + all feasible tools/skills). Use when working with the openclaw-full layer.
--- name: pod description: Schema reference for `kind: pod` and `kind: deploy` entities — deploy.yml entry shape, nested deploys, sidecars, pod networking. For verb-level operations see /ov-core:deploy. --- # `kind: pod` and `kind: deploy` — Schema Reference This skill is a thin schema pointer. For runtime verbs (`ov deploy add`, `ov deploy del`, `ov update`), see `/ov-core:deploy`. ## What lives in `kind: pod` / `kind: deploy` A `pod` entity declares a co-scheduled set of containers and the
Open WebUI with auto-configured LLM providers, MCP servers, and Jupyter code execution. MUST be invoked before any work involving: the openwebui layer, Open WebUI configuration, LLM provider auto-detection, or MCP server discovery for Open WebUI.
Base Sway desktop composition with audio, portals, Wayland tools, Chrome, terminal, file manager, and status bar. Use sway-desktop-vnc for VNC remote access.
Google Chrome with DevTools on port 9222, Chrome DevTools MCP on port 9224, and browser-open helper. Use when working with Chrome, CDP, browser automation, or DevTools Protocol.
PulseAudio volume control GUI for desktop containers with PipeWire audio. Use when working with audio configuration or volume control.
OpenClaw AI gateway service on port 18789 via npm with persistent data. Use when working with OpenClaw, AI gateway configuration, or model routing.
JetBrains Mono and Nerd Fonts for desktop containers. Use when working with font configuration or desktop text rendering.
MUST be invoked before any work involving: GPU device access rules, ov udev commands, udev rule management, or container GPU troubleshooting.
Fetch an image from its registry into local container storage so deploy-mode commands can read its OCI labels. MUST be invoked before any work involving: ov image pull command, the ErrImageNotLocal error, fetching images by short name / fully-qualified ref / @github.com/... remote ref, or recovering deploy-mode commands that fail with "image X is not available locally".
Kitchen-sink development image: coding + AI-coding CLIs + DevOps tooling in one container. Fedora-nonfree base, 32 direct layers spanning language runtimes, build tooling, five AI coding CLIs, and the full cloud/devops stack. Runs as uid 1000 with passwordless sudo — rootless-first, matches the /ov-openclaw:openclaw-desktop security posture. Use when working with the fedora-coder image — specifically any task that involves SSH-ing into a single container and having every tool a polyglot engineer reaches for during a working day already installed.
Service log viewing for running containers. MUST be invoked before any work involving: ov logs command, viewing container output, or debugging service issues.
GIF search and download CLI. Use when working with the gifgrep layer.
MUST be invoked before any work involving: VNC automation, ov eval vnc commands, RFB protocol desktop interaction, VNC screenshots, clicking coordinates, or VNC authentication.
sherpa-onnx offline text-to-speech. Use when working with the sherpa-onnx layer.
FileBrowser Quantum web file manager with Tailscale tunnel. MUST be invoked before building, deploying, configuring, or troubleshooting the filebrowser image.
X (Twitter) API CLI for posts, search, DMs, and media. Use when working with the xurl layer.
Fast system information tool (neofetch successor). Use when working with the fastfetch layer.
WhatsApp CLI for message sending and history sync. Use when working with the wacli layer.
Sway-browser-vnc instance wired to versa/ecovoyage tailnet URLs — chrome-devtools-mcp + CDP for debugging the generated MapLibre + folium maps.
OpenStreetMap data pipeline tooling: tippecanoe (GeoJSON → MBTiles/PMTiles, built from source), gdal/ogr2ogr, jq, martin (Rust musl static binary on port 3000), pmtiles CLI. Martin reads tiles from /workspace/tiles/pmtiles/. Use when working with the osm-tools layer, tippecanoe build steps, the martin tile server config, the martin "Underlying data source was modified" cache issue + DAG-completion supervisord-restart pattern, or the vector-tiles-only output that requires MapLibre GL JS clients (NOT folium TileLayer).
Standalone marimo notebook (osm-monaco-viz.py) that self-authors TWO Airflow DAGs (osm + gtfs), triggers them via REST, runs polars + pyarrow analytics on both datasets, and renders TWO maps: streets via MapLibre GL JS + martin vector tiles + 3D terrain, transit via folium with 98 bus-stop CircleMarkers. Use when working with the notebook content itself, the dual-DAG self-authoring pattern, the two URL spaces (server-side AIRFLOW_API_INTERNAL_URL vs browser-bound MARTIN_PUBLIC_URL), the MapLibre/folium rendering split, or the surfaced-and-fixed bug catalog.
Full ov toolchain composition with CLI, virtualization, encrypted storage, and console access. Works identically on container/pod targets AND on host/local/bootc targets via the unified virtualization layer's mixed-`service:` schema — one layer for every target, no `-host` sibling.
Rust compiler and Cargo package manager via system packages (RPM/DEB). Use when working with Rust development or Cargo builds.
Grafana observability CLI tools: mcp-grafana, logcli, promtool, mimirtool, tempo-cli, tanka, grafanactl. Use when working with Grafana, Prometheus, Loki, Mimir, Tempo, or observability tooling.
Bazzite NVIDIA bootc image with dev tools, CUDA, Kubernetes, Docker, and desktop apps. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the bazzite image.
Lightweight JupyterLab with real-time collaboration (jupyter-collaboration) on port 8888. No GPU required. Use when working with collaborative notebooks, jupyter-collaboration, or lightweight Jupyter environments without ML/CUDA dependencies.
Chrome DevTools MCP server via mcp-proxy (Streamable HTTP on port 9224). Use when working with the chrome-devtools-mcp layer, MCP-based browser automation, or the mcp-proxy stdio-to-HTTP bridge pattern.
Host dependency checker and hardware detector for the `ov doctor` CLI verb. Use when diagnosing host setup, checking dependencies, or verifying GPU detection. Named `ov-doctor` (not `doctor`) to disambiguate from Claude Code's built-in `/doctor` slash command.
Skill maintenance guidelines: when and how to update skills, CLAUDE.md, and README.md. Use when updating documentation, feeding back operational insights, or auditing skill coverage.
Test image for Arch Linux pacman and AUR package installation. MUST be invoked before building or troubleshooting the arch-test image.
Apache Airflow 3.x with LocalExecutor + SQLite (single-node, dev-friendly), 4 supervisord services (init, scheduler, dag-processor, webserver). Layer is service-only — its Python deps live in /ov-versa:versa-layer's pixi env. No MCP wrapper (no upstream v2 release exists; consumers drive Airflow via direct REST /api/v2 calls). Use when working with the airflow layer, Airflow 3.x compatibility findings, the SimpleAuthManager auth-fix pattern, the dag-processor split-from-scheduler architecture change, or the JWT-issuance + REST API trigger flow used by self-authoring notebooks.
Use when working with the openclaw-desktop image — the all-in-one CachyOS power image that fuses the selkies streaming desktop, the openclaw-full gateway + AI CLIs (claude-code/codex/gemini), a CPU ollama, and the full nested ov toolchain (build images / run nested rootless pods / launch rootless libvirt VMs from a terminal inside the browser-accessible desktop).
Test image with Valkey (Redis-compatible) key-value store. Currently disabled. Used for development testing. MUST be invoked before building or troubleshooting the valkey-test image.
Privileged debootstrap builder image (base: debian:13 — debootstrap is a Debian tool that bootstraps Ubuntu suites too) — ships the debootstrap toolchain for ubuntu-debootstrap and the ubuntu-debootstrap VM. Lives in the overthinkos/ubuntu submodule (image/ubuntu). MUST be invoked before building or troubleshooting ubuntu-debootstrap-builder.
OpenXR, OpenVR, and GStreamer libraries for VR streaming and development. Use when working with VR, AR, streaming, or spatial computing.
Developer tools including bat, ripgrep, neovim, direnv, fd-find, htop, podman-compose, and many more CLI utilities. Use when working with developer tooling, CLI utilities, or container dev environments.
Docker CE engine with buildx and compose plugins from the official Docker repository. Use when working with Docker, container builds, or Docker Compose.
Prune reusable build artifacts to defaults: retention (images, eval runs) and sweep one-time makepkg leftovers. MUST be invoked before any work involving: ov clean, build-artifact retention, keep_images / keep_eval_runs, image-tag pruning, or .eval run cleanup.
C/C++ build toolchain with gcc, cmake, autoconf, ninja, git, and pkg-config. Use when working with native compilation, build tools, or C/C++ development.
Privileged debootstrap builder image (base: debian:13) — ships the debootstrap toolchain used to bootstrap a Debian rootfs from scratch for debian-debootstrap and the debian-debootstrap VM. Lives in the overthinkos/debian submodule (image/debian). MUST be invoked before building or troubleshooting debian-debootstrap-builder.
Pixi package manager binary with environment and PATH setup. Use when working with pixi, conda-forge packages, or Python environment management.
Bootstrap-from-scratch Debian rootfs via debootstrap inside a privileged builder (from: builder:debootstrap, bootstrap_builder_image: debian-debootstrap-builder). Retained for offline/air-gapped builds and as a worked example of the from: builder:debootstrap pattern. Lives in the overthinkos/debian submodule (image/debian). MUST be invoked before building or troubleshooting debian-debootstrap.
Test image with Traefik reverse proxy and testapi service. Currently disabled. Used for development testing. MUST be invoked before building or troubleshooting the fedora-test image.
Bootable (bootc) VM image combining the selkies-desktop streaming desktop with Tailscale (mesh VPN) and KeePassXC (password manager). Fedora 43 base. Boots under libvirt/QEMU as a full OS. Canonical worked example of the external-base-bootc + explicit-distro pattern. MUST be invoked before building, deploying, or troubleshooting selkies-desktop-bootc.
# Image: selkies-desktop Browser-accessible Wayland desktop streamed via Selkies/pixelflux WebSocket at `https://localhost:3000` (HTTPS with self-signed Traefik certificate). ## Definition ```yaml selkies-desktop: base: cachyos.cachyos # via the `cachyos` import namespace build: [pac, aur] # aur required: chrome (google-chrome) + wl-tools (wlrctl) layers: - agent-forwarding - selkies-desktop - dbus - ov ports: - "3000:3000" - "9222:9222" - "9
Bootstrap-from-scratch CachyOS rootfs via pacstrap inside a privileged builder. Builds end-to-end as of ov 2026.141.1850 (shared pacstrap renderer emits Architecture + SigLevel); retained for offline/air-gapped builds. Lives in the overthinkos/cachyos submodule (image/cachyos). MUST be invoked before building or troubleshooting cachyos-pacstrap.
kind:vm entity pairing with the /ov-selkies:selkies-desktop-bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-selkies:selkies-desktop-bootc (the canonical bootc-VM worked example). MUST be invoked before editing selkies-desktop-bootc-bootc in image/bootc/overthink.yml.
Fedora image with the full ov toolchain using shared layers. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same layer list as arch-ov. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-ov image.
Aurora DX bootc image with NVIDIA, SSH, ov toolchain, and Go. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the aurora image.
kind:vm entity pairing with the /ov-distros:bazzite bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-distros:bazzite. This skill documents only the VM-specific fields. MUST be invoked before editing bazzite-bootc in image/bootc/overthink.yml.
kind:vm entity pairing with the /ov-distros:aurora bootc container image. source.kind: bootc. Thin pointer skill — composition + layer stack authority lives in /ov-distros:aurora. This skill documents only the VM resource sizing. MUST be invoked before editing aurora-bootc in image/bootc/overthink.yml.
Traefik reverse proxy on ports 8000/8080/443 with automatic TLS and dynamic routing. Use when working with Traefik, reverse proxy, TLS certificates, or service routing.
VectorChord PostgreSQL extension for optimized vector similarity search. Use when working with VectorChord, vector indices, or smart search performance.
ComfyUI image generation server with CUDA GPU support. Runs as a supervisord service on port 8188 with persistent storage. MUST be invoked before building, deploying, configuring, or troubleshooting the comfyui image.
Minimal Debian 13 builder image (pixi + Node.js + build-toolchain) used as the multi-stage builder for every image based on Debian — currently debian-coder. Produces the pre-compiled pixi envs, npm globals, and cargo crates that land in the final runtime image via COPY --from. MUST be invoked before building, deploying, configuring, or troubleshooting the debian-builder image.
MUST be invoked before any work involving: `ov deploy add`/`ov deploy del` commands, quadlet generation, volume backing, tunnels (Tailscale/Cloudflare), `add_layer:` overlay, or per-machine deploy overlays.
Use when @github layer/namespace pins drift across repos and the resolver emits "referenced at multiple versions" warnings — `ov image reconcile` aligns every pin of a repo to one version (clearing the warnings). Invoked as `ov image reconcile`.
CUDA toolkit, cuDNN, ONNX Runtime, and NVIDIA GPU development libraries from negativo17 repos. Depends on the nvidia layer for runtime support. Use when working with GPU computing, CUDA, cuDNN, machine learning infrastructure, or NVIDIA development tools.
NVIDIA GPU base image with runtime support and CUDA toolkit on Fedora. Base for all GPU-accelerated images (python-ml, jupyter, ollama, comfyui). MUST be invoked before building, deploying, configuring, or troubleshooting the nvidia image.
Immich photo management with CUDA ML backend for face recognition and smart search. Includes PostgreSQL, Redis, and the immich-ml service. MUST be invoked before building, deploying, configuring, or troubleshooting the immich-ml image.
MUST be invoked before any work involving: the `ov migrate` command (the single idempotent migration that brings any overthink config up to the latest schema CalVer), the CalVer schema-version stamp (`version: YYYY.DDD.HHMM`), the ordered migration chain / registry (ov/migrate_registry.go), the `LatestSchemaVersion()` load-time gate, adding a new schema cutover as a migration step, or the calver-schema int→CalVer transition.
Full CUDA ML stack + JupyterLab with real-time collaboration and CRDT MCP server on port 8888. Use when working with GPU-accelerated Jupyter notebooks, ML training with collaboration, or the jupyter-ml layer.
Unsloth Studio fine-tuning web UI with CUDA GPU support, vLLM inference, and llama.cpp. Runs as a supervisord service on ports 8888 (Studio) and 8000 (vLLM API). MUST be invoked before building, deploying, configuring, or troubleshooting the unsloth-studio image.
Kitchen-sink development image on Arch Linux: coding + AI-coding CLIs + DevOps tooling in one container. Arch base, 30+ direct layers mirroring fedora-coder's stack but with pac:-section packages (plus AUR for a few unique cases). Runs as uid 1000 (`user`) with passwordless sudo. Use when working with the arch-coder image — or when comparing cross-distro parity across the four coder-family images (fedora, debian, ubuntu, arch).
Multi-language runtime meta-layer — Go, PHP, .NET 9 SDK, nodejs-devel, python3-devel, ramalama. System Python via RPM (not pixi-python). Uses nodejs and rust layers as explicit deps. Use when working with polyglot development or composing multiple language runtimes into a single image.
ComfyUI image generation service on port 8188 with CUDA GPU support. Use when working with ComfyUI, image generation, Stable Diffusion, or AI art pipelines.
MUST be invoked before any work involving: OCI label contract, Capabilities / ImageMetadata struct, CapabilityLabelMap completeness check, LabelServices structured round-trip, source-less deploy via `ov deploy from-image`, or adding a new OCI label. Developer-facing; users author via `/ov-image:layer` and `/ov-image:image`.
Immich photo management server on port 2283. Includes PostgreSQL, Redis, and non-free codec support via RPM Fusion. CPU-only (no ML). MUST be invoked before building, deploying, configuring, or troubleshooting the immich image.
PostgreSQL database server on port 5432 with pgvector extension and persistent data. Entrypoint supports POSTGRES_SHARED_PRELOAD_LIBRARIES for extension loading. Use when working with PostgreSQL, database configuration, or pgvector.
Containerfile generation: understanding ov image generate output, multi-stage builds, intermediate images, and the .build/ directory. Use when debugging or understanding generated Containerfiles. MUST be invoked before reading or modifying any Go source file in ov/.
MUST be invoked before any work involving: authoring `kind: local` templates, `local.yml` files, the inline `local:` map in `overthink.yml`, or the merge semantics between a `kind: local` template and a `target: local` deployment.
Standalone Ollama LLM inference server with CUDA GPU support. Runs as a supervisord service on port 11434 with persistent model storage. MUST be invoked before building, deploying, configuring, or troubleshooting the ollama image.
Redis in-memory data store on port 6379 with periodic persistence. Use when working with Redis, caching, or session storage in containers.
Minimal Ubuntu 24.04 builder image (pixi + Node.js + build-toolchain) used as the multi-stage builder for Ubuntu-based images — currently ubuntu-coder. Runs as uid 1000 `ubuntu` (adopted from the upstream ubuntu:24.04 base image via build.yml's base_user declaration). MUST be invoked before building, deploying, configuring, or troubleshooting the ubuntu-builder image.
Maximal OpenClaw deployment with Sway desktop, Chrome, VNC, and all tool layers. Includes all feasible OpenClaw skill dependencies. Use when working with MUST be invoked before building, deploying, configuring, or troubleshooting the openclaw-sway-browser image.
Base Ubuntu 24.04 noble image. Root of the image hierarchy for Ubuntu- based builds. Runs as uid 1000 `ubuntu` via ADOPT mode — the upstream ubuntu:24.04 base image ships a pre-existing ubuntu:ubuntu account, and build.yml distro.ubuntu declares base_user to adopt it verbatim. MUST be invoked before building, deploying, configuring, or troubleshooting any Ubuntu-based image.
CachyOS base image (docker.io/cachyos/cachyos-v3) — x86_64_v3-optimized Arch derivative. Owned by the overthinkos/cachyos submodule (image/cachyos); consumed by main's versa image via the `cachyos` import namespace. MUST be invoked before building, deploying, or troubleshooting cachyos images.
Base Debian 13 trixie image. Root of the image hierarchy for Debian builds that run as uid 1000 `user` (create mode — Debian 13 ships no pre-existing uid-1000 account). Owned by the overthinkos/debian submodule (image/debian); consumed by no main-repo image. MUST be invoked before building, deploying, configuring, or troubleshooting any Debian-based image.
CachyOS bootstrap VM (kind:vm cachyos-vm) — source.kind: bootstrap via cachyos-pacstrap-builder + pacstrap, btrfs rootfs, uefi-insecure. Plus the disposable eval-cachyos-vm kind:eval bed. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing cachyos-vm or its eval bed.
Ubuntu bootstrap VM (kind:vm ubuntu-debootstrap) — source.kind: bootstrap via ubuntu-debootstrap-builder + debootstrap, ext4 rootfs, uefi-insecure. Plus the disposable eval-ubuntu-debootstrap-vm kind:eval bed. Lives in the overthinkos/ubuntu submodule. MUST be invoked before editing ubuntu-debootstrap or its eval bed.
MUST be invoked before any work involving: `ov eval` (image / live / run), the `eval:` / `deploy_eval:` fields in layer.yml / image.yml / deploy.yml, the `org.overthinkos.eval` OCI label, the AI iteration harness loop, `kind: ai` / `kind: recipe` / `kind: score` / `kind: eval` (disposable R10 beds run via `ov eval run <bed>`) in eval.yml, or any declarative check authoring. Covers the unified `ov eval` surface: three primary modes (image / live / run), 9 live-container probe verbs (cdp/wl/dbus/vnc/mcp/record/spice/libvirt/k8s), verb catalog (file/port/command/http/package/service/process/dns/user/ group/interface/kernel-param/mount/addr/matching), runtime variable resolution (`${HOST_PORT:N}`, `${VOLUME_PATH:name}`, `${CONTAINER_IP}`, `${ENV_*}`), deploy.yml overlay rules, authoring gotchas learned the hard way (package renames, absent binaries, host vs container network routing), AI-iteration loop semantics (plateau-bounded, progressive recipe disclosure, watchdog), and the `from:` block for composing recipes from existing layer/image/pod/vm tests.
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 layers) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the ov-cachyos workstation profile.
First kind:vm entity with source.kind: cloud_image — fetches the Arch Linux cloud qcow2 from pkgbuild.com, applies cloud-init, boots under libvirt/QEMU via BIOS firmware + virtio-gpu. Documents the stale-BOOTX64.EFI RCA, the simpledrm→qxldrmfb takeover race, the adopt-user pattern, and resource sizing. MUST be invoked before editing arch in image/arch/overthink.yml or authoring another cloud_image VM from a template.
Debian bootstrap VM (kind:vm debian-debootstrap) — source.kind: bootstrap via debian-debootstrap-builder + debootstrap, ext4 rootfs, uefi-insecure. Plus the disposable eval-debian-debootstrap-vm kind:eval bed. Lives in the overthinkos/debian submodule. MUST be invoked before editing debian-debootstrap or its eval bed.
Go file map for the target:local execution surface. Files: local_spec.go, deploy_target_local.go, unified_targets_local.go, ssh_managed_config.go, hostdistro.go, install_ledger.go, builder_run.go, shell_profile.go, reverse_ops.go, service_render.go, deploy_ref.go. MUST be invoked before reading or modifying any of those files, or when debugging target:local deploy behaviour (ledger state, sudo batching, managed-block insertion, glibc preflight, ssh-config fragment, ref resolution).
Fully rootless Selkies streaming desktop + the full ov toolchain inside one image. Runs as uid 1000 with zero --privileged / zero cap_add; nested rootless podman and rootless libvirt session VMs work via config-level namespace sharing and the surgical unmask=/proc/* security_opt. Use when working with the selkies-desktop-ov image — especially for any "browser-accessible desktop that can itself build images, start pods, or launch VMs" workflow.
Image inspection showing resolved configuration as JSON. MUST be invoked before any work involving: ov image inspect command, viewing image configuration, or querying image metadata.
SQLite database CLI. Use when working with the sqlite layer.
# wl-screenshot-grim - Screenshot via grim (wlr-screencopy) ## Overview Provides `grim` for Wayland screenshot capture using the `wlr-screencopy` protocol. Works on sway and standalone wlroots compositors. **Does NOT work on selkies-desktop** (labwc nested in pixelflux can't deliver screencopy frames). For selkies-desktop, use `wl-screenshot-pixelflux` instead. ## Layer Definition ```yaml rpm: packages: - grim ``` ## Key Properties | Property | Value | |----------|-------| | Depends
GPU-accelerated Selkies streaming desktop with NVIDIA CUDA. Use when working with the selkies-desktop-nvidia image.
Kubernetes client tools: kubectl and Helm package manager. Use when working with Kubernetes, kubectl, or Helm charts.
Immich machine learning backend on port 3003 for photo classification and search. Use when working with Immich ML features, face detection, or CLIP search.
Fedora image using remote layer references from GitHub. Demonstrates the @github.com/org/repo/layers/name:version remote layer syntax. MUST be invoked before building, deploying, configuring, or troubleshooting the fedora-remote image.
Typst document processor binary for typesetting and document generation. Use when working with Typst, document compilation, or typesetting tools.
OpenClaw full + ML tools + Ollama + Sway desktop + VNC. GPU-accelerated. Currently disabled. Enable in image.yml to build. MUST be invoked before building, deploying, or troubleshooting the openclaw-full-ml image.