ov-layers/skills/k3s-agent/SKILL.md
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.
npx skillsauth add overthinkos/overthink-plugins k3s-agentInstall 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.
| Property | Value |
|----------|-------|
| Install files | layer.yml, tasks:, service:, secret_requires:, env_requires: |
| Depends on | /ov-layers:k3s |
| Service | k3s-agent.service (system scope, enabled) |
K3S_CLUSTER_TOKEN from the credential store (same secret the
server consumes).K3S_SERVER_URL from deploy.yml env (e.g.,
https://k3s-srv.lan:6443)./etc/rancher/k3s/config.yaml with server: and token:./etc/systemd/system/k3s-agent.service running k3s agent.No join-token handoff, no kubeconfig retrieval — agents only need the server URL (declarative, known at author time) and the pre-shared token (from the credential store).
# overthink.yml (assumes k3s-srv already up; see /ov-layers:k3s-server)
vm:
k3s-ag1:
source: { kind: cloud_image, url: "…" }
disposable: true
ram: 4G
cpus: 2
deployments:
images:
"vm:k3s-ag1":
target: vm
vm_source: k3s-ag1
add_layers: [k3s-agent]
env:
- K3S_SERVER_URL=https://k3s-srv.lan:6443
# K3S_CLUSTER fed in for the agent-joined test below — must
# match the cluster profile name registered by the server.
- K3S_CLUSTER=k3s-srv
ov deploy add vm:k3s-ag1
# agent registers; ov test k8s wait-nodes on server confirms the join.
ov test k8s wait-nodes --cluster k3s-srv --count 2 --timeout 3m
Build-scope:
/etc/rancher/k3s/config.yaml exists, mode 0600./etc/systemd/system/k3s-agent.service exists.Deploy-scope (uses /ov:test-k8s):
k8s: wait-nodes name=${HOSTNAME} — this node reaches Ready on the
server./ov-layers:k3s — Base layer installing the k3s binary (required dep)/ov-layers:k3s-server — Control-plane node this agent joins/ov:test-k8s — Test verb used by the agent-joined checktools
OpenCharly CLI (charly) binary installed into container/VM images for in-container use. Use when working with charly binary deployment inside containers, native D-Bus support, or the full charly toolchain (charly binary + virtualization + gocryptfs + socat).
development
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 candies) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the charly-cachyos workstation profile.
tools
Fedora box with the full charly toolchain using shared candies. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same candy list as charly-arch. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-fedora box.
tools
Arch Linux box with the full charly toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /charly-coder:charly-mcp so the box is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-arch box.