ov/skills/udev/SKILL.md
MUST be invoked before any work involving: GPU device access rules, ov udev commands, udev rule management, or container GPU troubleshooting.
npx skillsauth add overthinkos/overthink-plugins udevInstall 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.
Manage udev rules that grant rootless containers access to GPU devices. Without these rules, DRM card nodes and AMD KFD devices may not be accessible to non-root users, blocking GPU features like NVENC encoding and ROCm compute.
| Action | Command | Description |
|--------|---------|-------------|
| Show status | ov udev status | GPU devices, groups, rule status, fix suggestions |
| Print rules | ov udev generate | Print udev rule content to stdout |
| Install rules | ov udev install | Write rules file + reload udev (requires sudo) |
| Remove rules | ov udev remove | Delete rules file + reload udev (requires sudo) |
Rules are written to /etc/udev/rules.d/99-ov-container-access.rules:
# Card nodes: render group access for NVENC hardware encoding
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", GROUP="render", MODE="0660"
# AMD KFD: ROCm compute access
SUBSYSTEM=="kfd", KERNEL=="kfd", GROUP="render", MODE="0660"
/dev/dri/card*) — set group to render, mode 0660. Render nodes (renderD*) are already world-accessible; card nodes need explicit rules for NVENC/dev/kfd) — set group to render, mode 0660. Required for ROCm GPU computeRootless Podman's user namespace mapping prevents DRM master abuse, making this safe.
ov udev status shows:
GPU Devices:
/dev/dri/card0 nvidia root:render 0660 OK
/dev/dri/renderD128 nvidia root:render 0666 OK
User Groups:
video: yes
render: yes
Udev Rules:
/etc/udev/rules.d/99-ov-container-access.rules: installed
Status: OK — GPU device access available for containers
If problems are detected, it prints specific fix commands.
ov udev status # Check current state
ov udev install # Install rules (prompts for sudo)
Install writes the rules file, then runs:
sudo udevadm control --reload-rulessudo udevadm trigger --subsystem-match=drmsudo udevadm trigger --subsystem-match=kfdIdempotent: skips if rules are already up to date.
render group for GPU accessvideo groupov udev status shows exact usermod commands if groups are missing/ov:doctor — hardware detection and dependency checks (includes GPU)/ov-layers:nvidia — NVIDIA GPU runtime layer/ov-layers:rocm — AMD ROCm GPU compute layer/ov-layers:cuda — CUDA toolkit layerov/udev.go.
MUST be invoked when the task involves GPU device access, udev rules, or troubleshooting container GPU passthrough. Invoke this skill BEFORE reading source code or launching Explore agents.
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).