ov-foundation/skills/fedora-ov/SKILL.md
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.
npx skillsauth add overthinkos/overthink-plugins fedora-ovInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fedora container with the full ov toolchain. Uses almost the same
layer list as /ov-coder:arch-ov — the tag system handles
Fedora-specific packages and scripts via rpm: sections. Supports
nested containers at any depth via /ov-foundation:container-nesting.
| Property | Value |
|----------|-------|
| Base | fedora (quay.io/fedora/fedora:43) |
| Tags | [all, rpm, fedora, fedora:43] |
| Layers | agent-forwarding, ov-full, golang, gh, sshd, container-nesting, nvidia |
| Platforms | linux/amd64 |
| UID / user | 1000 / user (rootless-first since 2026-04) |
| Network | host |
| Security | layer-level only (from /ov-foundation:container-nesting) |
| Registry | ghcr.io/overthinkos |
Previously ran as uid: 0 / user: root with cap_add: [ALL] +
security_opt: [label=disable, seccomp=unconfined]. All four
power-user images (fedora-ov, /ov-coder:arch-ov,
/ov-coder:fedora-coder, /ov-foundation:githubrunner) dropped that
posture once the /ov-foundation:container-nesting kernel RCA proved
that unmask=/proc/* + subuid/subgid delegation is sufficient for
rootless nested containers + rootless libvirt VMs.
The /ov-coder:sshd layer installs /etc/sudoers.d/ov-user with
passwordless sudo for user, so anything that genuinely needs root
is one sudo prefix away. Default user for every process is uid=1000.
Resolved OCI security label:
| Field | Value |
|---|---|
| cap_add | (empty) |
| security_opt | [unmask=/proc/*] (from /ov-foundation:container-nesting) |
| devices | [/dev/fuse, /dev/net/tun] (from /ov-foundation:container-nesting) |
| privileged | false |
See /ov-selkies:selkies-desktop-ov (streaming-desktop sibling) and
/ov-coder:fedora-coder (kitchen-sink dev sibling) for other images
sharing this posture, and /ov-foundation:container-nesting for the
kernel mount_too_revealing() RCA.
network: hostHost networking is kept on fedora-ov (unlike arch-ov which moved
to bridge) so the image can reach host services and the host
namespace directly. As of 2026-04, ov-mcp's rewriteMCPURLForHost
also handles host-networked containers via
HostConfig.NetworkMode=host detection (see
ov/mcp_client.go:lookupHostPort), so host networking no longer
breaks MCP URL rewriting. If you want ov-mcp on fedora-ov, compose it
into the layer list — it will work on either networking mode.
Full ov toolchain via shared layers:
golang-bin)git + git-lfs (single-responsibility since 2026-04; see /ov-coder:gh)openssh-server, openssh-clients) + passwordless sudo for usertailscale-stable repo)# Build
ov image build fedora-ov
# Interactive shell (as uid=1000)
ov shell fedora-ov
# Run a command
ov shell fedora-ov -c "ov version"
ov shell fedora-ov -c "sudo -n whoami" # root (passwordless)
# Start as service
ov start fedora-ov
ov status fedora-ov
ov stop fedora-ov
Rootless podman works inside fedora-ov at any nesting depth. The
/ov-foundation:container-nesting layer provides the config + env vars +
subuid/subgid delegation per the podman/stable recipe:
# Level 1: run containers inside fedora-ov
ov shell fedora-ov -c "podman run --rm quay.io/libpod/alpine:latest echo hello"
# Level 2: run ov inside fedora-ov inside fedora-ov
ov shell fedora-ov -c "ov shell fedora-ov -c 'ov version'"
Use quay.io/libpod/alpine:latest instead of
docker.io/library/alpine to dodge Docker Hub rate limits.
The /ov-foundation:nvidia layer provides NVIDIA GPU runtime:
nvidia-container-toolkit — CDI spec generation (driver userspace libs provided by CDI at runtime, matching host kernel module)libva-nvidia-driver — VA-API accelerationov automatically calls EnsureCDI() before launching GPU
containers. GPU access works at any nesting depth.
ov shell fedora-ov -c "id" # uid=1000(user)
ov shell fedora-ov -c "sudo -n whoami" # root
ov shell fedora-ov -c "ov version"
ov shell fedora-ov -c "ov doctor"
ov shell fedora-ov -c "podman info"
ov shell fedora-ov -c "podman run --rm quay.io/libpod/alpine:latest echo OK"
ov shell fedora-ov -c "which nvidia-ctk"
# Verify OCI tags
ov image inspect fedora-ov --format tags
# ["all","rpm","fedora","fedora:43"]
Both fedora-ov and /ov-coder:arch-ov use the exact same layer
list. The tag system (build: [rpm] + distro: ["fedora:43", fedora]
vs build: [pac] + distro: [archlinux]) selects the right packages
and scripts per distro.
/ov-coder:ov-full — ov binary plus VM/encryption tools/ov-foundation:container-nesting — nested rootless podman/buildah (authoritative RCA for mount_too_revealing() + unmask=/proc/*)/ov-coder:sshd — SSH daemon + passwordless sudo for user/ov-coder:gh — GitHub CLI + git + git-lfs (owns all git tooling as of 2026-04)/ov-foundation:nvidia — NVIDIA GPU runtime/ov-foundation:fedora — parent base image/ov-coder:arch-ov — Arch counterpart, same layers, same rootless posture/ov-coder:fedora-coder — kitchen-sink dev sibling (32 layers, adds coding CLIs + DevOps)/ov-selkies:selkies-desktop-ov — streaming-desktop counterpart (ov toolchain + browser-accessible Wayland); shares the rootless-first posture/ov-foundation:githubrunner — self-hosted GitHub Actions runner; same uid=1000 posture/ov-core:shell — open an interactive shell in fedora-ov (as uid=1000 with sudo)/ov-core:service — manage fedora-ov as a service/ov-advanced:vm — nested libvirt VMs via qemu:///session (rootless)/ov-build:mcp — MCP gateway deployment patterns (if you add ov-mcp to the layers)/ov-build:image — image family umbrella (image: entries in overthink.yml, build/validate/inspect/list)/ov-build:build — build.yml vocabulary (distros, builders, init-systems)development
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?".
tools
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).
development
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`.
tools
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.