ov-vms/skills/selkies-desktop-bootc-bootc/SKILL.md
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.
npx skillsauth add overthinkos/overthink-plugins selkies-desktop-bootc-bootcInstall 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.
kind: vm entity that pairs with the /ov-selkies:selkies-desktop-bootc container image. The doubled -bootc suffix reflects that the paired image already ends in -bootc.
Composition authority: /ov-selkies:selkies-desktop-bootc. This is the canonical worked example for the full bootc-VM flow in the project — layer stack (9 layers), port remaps (13000/19222/19224/2250), Fedora 43 external base, distro tags, known caveats, verification recipes. Read it end-to-end before touching this VM.
vms:
selkies-desktop-bootc-bootc:
source:
kind: bootc
image: selkies-desktop-bootc
disk_size: 40 GiB
ram: 8G
cpus: 4
ssh:
user: root
port: 2250
| Setting | Value | Rationale |
|---|---|---|
| Disk size | 40 GiB | Selkies + Chrome + PipeWire + toolchain transitives — more than openclaw-browser-bootc's 20 GiB |
| RAM | 8G | Chrome + compositor + recorder want headroom |
| CPUs | 4 | 8 G/4 cpus rule of thumb for streaming desktop VMs |
| SSH user | root | bootc default |
| SSH port | 2250 | Non-default to avoid colliding with ov-selkies-desktop* containers that claim host :2222 |
ov image build selkies-desktop-bootc
ov vm build selkies-desktop-bootc-bootc --type qcow2
ov vm create selkies-desktop-bootc-bootc
ov vm start selkies-desktop-bootc-bootc
ssh -p 2250 root@localhost
# Desktop accessible at https://localhost:13000 (self-signed)
/ov-selkies:selkies-desktop-bootc — canonical worked example: full 9-layer stack, port remaps, Fedora 43 external base, known caveats, end-to-end verification recipes/ov-vms:vms — VmSpec authoring reference, bootc branch authoring recipe/ov-advanced:vm — VM lifecycle commands + bootc-specific caveats (rootful storage split, loopback device requirements, nested-container transport)/ov-build:migrate — ov migrate vm-spec legacy conversion/ov-selkies:selkies-desktop — Selkies streaming desktop metalayer/ov-foundation:bootc-base — sshd + qemu-guest-agent + bootc-config bundle/ov-foundation:tailscale — mesh VPN (included in composition)/ov-foundation:keepassxc — password manager (included in composition)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).