diff --git a/src/content/docs/recipes/automation/openclaw-deploy.md b/src/content/docs/recipes/automation/openclaw-deploy.md index 029111e8..b7088e9c 100644 --- a/src/content/docs/recipes/automation/openclaw-deploy.md +++ b/src/content/docs/recipes/automation/openclaw-deploy.md @@ -1,6 +1,6 @@ --- title: "openclaw-deploy" -description: "OpenClaw gateway configuration, model auth, browser integration, channel setup, or any box composing `openclaw-*` candies (`openclaw`, `openclaw-full`, or a custom box composing openclaw + sway-desktop)." +description: "OpenClaw gateway configuration, model auth, browser integration, channel setup, or any box composing `openclaw-*` candies (`openclaw`, `openclaw`, or a custom box composing openclaw + sway-desktop)." --- @@ -13,7 +13,7 @@ description: "OpenClaw gateway configuration, model auth, browser integration, c OpenClaw is an AI gateway that connects LLM agents to messaging channels (WhatsApp, Telegram, Discord, Slack, Signal, iMessage, IRC, Teams) and exposes them via a WebSocket API, CLI, and web Control UI. It runs as a Node.js process with an embedded agent runtime, model failover, browser automation, and multi-agent routing. -In OpenCharly, OpenClaw runs as a supervisord service inside containers. The `openclaw` candy provides the npm package; compose it with the `sway-desktop` metalayer (full Sway desktop + Chrome browser + VNC) for browser-based workflows like OAuth and web automation. For a desktop+browser box, compose your own from the candies (shown below); for non-browser channels use the headless `openclaw` / `openclaw-full` boxes. +In OpenCharly, OpenClaw runs as a supervisord service inside containers. The `openclaw` candy provides the npm package; compose it with the `sway-desktop` metalayer (full Sway desktop + Chrome browser + VNC) for browser-based workflows like OAuth and web automation. For a desktop+browser box, compose your own from the candies (shown below); for non-browser channels use the headless `openclaw` / `openclaw` boxes. The gateway listens on port 18789 (WebSocket + HTTP). All CLI commands (`openclaw *`) connect to the gateway WebSocket. The Control UI is served at the gateway root URL. Config is stored in `~/.openclaw/openclaw.json` (JSON5 format). @@ -54,15 +54,15 @@ The gateway binds to loopback only (no `--bind lan`). External access is handled ### Box -Compose your own desktop+browser box — e.g. an `openclaw-desktop` entry in `charly.yml` combining `openclaw-full` + `sway-desktop` on a Fedora base: +Compose your own desktop+browser box — e.g. an `charly-fedora` entry in `charly.yml` combining `openclaw` + `sway-desktop` on a Fedora base: ```yaml -openclaw-desktop: +charly-fedora: candy: base: fedora candy: - '@github.com/opencharly/layer-agent-forwarding' - - '@github.com/opencharly/layer-openclaw-full' + - '@github.com/opencharly/layer-openclaw' - '@github.com/opencharly/layer-sway-desktop' - '@github.com/opencharly/pod-dbus' - charly @@ -83,19 +83,19 @@ Tunnel config exposes all ports via Tailscale (`ports: all`). Platform: linux/am ### Host Alias ```bash -charly alias add openclaw openclaw-desktop +charly alias add openclaw charly-fedora # Now: openclaw --help (runs inside the container) ``` ### Lifecycle ```bash -charly box build openclaw-desktop # Build image -charly config openclaw-desktop # Generate quadlet, daemon-reload -charly start openclaw-desktop # Start via systemd -charly stop openclaw-desktop # Stop -charly status openclaw-desktop # Check systemd status -charly logs openclaw-desktop -f # Follow container logs +charly box build charly-fedora # Build image +charly config charly-fedora # Generate quadlet, daemon-reload +charly start charly-fedora # Start via systemd +charly stop charly-fedora # Stop +charly status charly-fedora # Check systemd status +charly logs charly-fedora -f # Follow container logs ``` ## Gateway Configuration @@ -249,7 +249,7 @@ models: { ### Connecting to Existing Chrome -In a composed openclaw desktop box (e.g. `openclaw-desktop`), Chrome already runs as a supervisord service on port 9222. OpenClaw must connect to it rather than launching a new instance: +In a composed openclaw desktop box (e.g. `charly-fedora`), Chrome already runs as a supervisord service on port 9222. OpenClaw must connect to it rather than launching a new instance: ```bash openclaw config set browser.cdpUrl "http://127.0.0.1:9222" diff --git a/src/content/docs/recipes/check/check/authoring-gotchas.md b/src/content/docs/recipes/check/check/authoring-gotchas.md index 4e7c961f..fcfec8f6 100644 --- a/src/content/docs/recipes/check/check/authoring-gotchas.md +++ b/src/content/docs/recipes/check/check/authoring-gotchas.md @@ -374,16 +374,16 @@ Worked example: [`/charly-coder:sshd`](/recipes/coder/sshd/) ships exactly the ` `charly check box` resolves its positional argument against local podman storage, not `charly.yml`. When the host has accumulated many CalVer tags for the same image (a normal consequence of iterative `charly box build` runs), the short form errors out: ``` -charly: error: ambiguous short name "openclaw-desktop" in local storage; - candidates: ghcr.io/opencharly/openclaw-desktop:latest, - ghcr.io/opencharly/openclaw-desktop:2026.109.1418, +charly: error: ambiguous short name "charly-fedora" in local storage; + candidates: ghcr.io/opencharly/charly-fedora:latest, + ghcr.io/opencharly/charly-fedora:2026.281.1200, ... Re-run with a full ref. ``` Use the fully-qualified registry ref: ```bash -charly check box ghcr.io/opencharly/openclaw-desktop:latest +charly check box ghcr.io/opencharly/charly-fedora:latest ``` This is different from `charly box inspect`, `charly box build`, and `charly check live` (the live-service runner), which key off `charly.yml` and accept short names unambiguously. Only the disposable-container runner has this restriction because it does not consult `charly.yml` at all. diff --git a/src/content/docs/recipes/check/check/beds-and-r10.md b/src/content/docs/recipes/check/check/beds-and-r10.md index 021d52bc..6d233903 100644 --- a/src/content/docs/recipes/check/check/beds-and-r10.md +++ b/src/content/docs/recipes/check/check/beds-and-r10.md @@ -184,7 +184,7 @@ bed name against the live tree before launching it. | `check-jupyter-pod` / `check-jupyter-ml-pod` | pod | `image: jupyter` / `image: jupyter-ml` | jupyter-mcp regression coverage; jupyter-ml spacy/quarto + GPU MCP probes | | `check-versa-pod` | pod | `image: versa` | versa OSM analytics + vector-tile + marimo MCP | | `check-android-emulator-pod` | pod | `image: android-emulator` | Android 14 emulator (/dev/kvm) + adb/appium | -| `check-openclaw-pod` / `check-openclaw-full-pod` / `check-openclaw-desktop-pod` | pod | `image: openclaw*` | minimal / maximal / streamed-desktop headless gateway | +| `check-openclaw-pod` / `check-openclaw-pod` / `check-charly-fedora-pod` | pod | `image: openclaw*` | minimal / maximal / streamed-desktop headless gateway | | `check-cachyos-gpu-vm` / `check-selkies-labwc-nvidia-vm` / `check-selkies-kde-nvidia-vm` | vm | `from: cachyos-gpu-vm` | VFIO GPU-passthrough + nested selkies NVENC streaming (`requires_exclusive: [nvidia-gpu]` — serialized) | | `check-arch-pacstrap-vm` / `check-arch-vm` / `check-cachyos-vm` / `check-debian-debootstrap-vm` / `check-ubuntu-debootstrap-vm` / `check-fedora-vm` | vm | `from: -vm` | the distro bootstrap-VM beds (pacstrap / debootstrap) | | `check-cross-pod-cdp` / `check-cross-vm-http` / `check-cross-local-http` / `check-cross-local-driver` | pod/vm/local | — | cross-deployment probing (pod→pod, host→pod/VM) | @@ -257,7 +257,7 @@ construction. `check-pod` ~110s idle but **842s measured under a concurrent roster** (one build → deploy → check → fresh-update → teardown cycle covering all four mechanisms) · `check-local-vm` ~45s · `check-sidecar-pod` ~180–290s · `check-k3s-vm` ~5–7 min · -`check-openclaw-full-pod` ~1414s · the heavy feature beds +`check-openclaw-pod` ~1414s · the heavy feature beds (`check-sway-browser-vnc-pod` ~2477s ≈ 41 min incl. image build) longer. **These are load-dependent, and the idle figures mislead.** A bed's own newest diff --git a/src/content/docs/recipes/coder/arch-coder.md b/src/content/docs/recipes/coder/arch-coder.md index c9166cfd..adcb35d2 100644 --- a/src/content/docs/recipes/coder/arch-coder.md +++ b/src/content/docs/recipes/coder/arch-coder.md @@ -162,7 +162,7 @@ Conflicts with [`/charly-coder:fedora-coder`](/recipes/coder/fedora-coder/) / [` - [`/charly-coder:debian-coder`](/recipes/coder/debian-coder/) — deb-family sibling on Debian 13. - [`/charly-coder:ubuntu-coder`](/recipes/coder/ubuntu-coder/) — deb-family sibling on Ubuntu 24.04 (adopt mode). - [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — slimmer Arch alternative with just the charly toolchain (no AI CLIs or DevOps tooling). -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — adds a browser-streamed Wayland desktop (plus the openclaw gateway, AI CLIs, and a CPU ollama) with the same rootless charly toolchain. +- `/charly-distros:charly-fedora` — adds a browser-streamed Wayland desktop (plus the openclaw gateway, AI CLIs, and a CPU ollama) with the same rootless charly toolchain. ## Related layers diff --git a/src/content/docs/recipes/coder/charly-arch.md b/src/content/docs/recipes/coder/charly-arch.md index ac39e4ce..0f4aaf15 100644 --- a/src/content/docs/recipes/coder/charly-arch.md +++ b/src/content/docs/recipes/coder/charly-arch.md @@ -59,7 +59,7 @@ Resolved OCI security label: | `devices` | `[/dev/fuse, /dev/net/tun]` (from [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)) | | `privileged` | `false` | -See [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) for the sibling rootless-first +See `/charly-distros:charly-fedora` for the sibling rootless-first box that proves this posture works under streaming-desktop + nested-VM load, and [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/) for the kernel `mount_too_revealing()` RCA. @@ -73,7 +73,7 @@ mappings to work with. (That leg also handles host-networked containers via `HostConfig.NetworkMode` detection — `ContainerInspection.IsHostNetworked()` in `sdk/kit/checkvars.go` — so the bridge isn't strictly required — but it remains the portable default.) If host-port 2222 is already taken by -another running box (canonical conflict: [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) +another running box (canonical conflict: `/charly-distros:charly-fedora` or any `selkies-desktop-*` variant), remap at config time: `charly config charly-arch -p 2223:2222`. @@ -199,7 +199,7 @@ packages and scripts per distro. - [`/charly-distros:arch`](/recipes/distros/arch/) — parent base image - [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/) — Fedora counterpart, same candies, same rootless posture - [`/charly-coder:fedora-coder`](/recipes/coder/fedora-coder/) — kitchen-sink dev sibling (adds coding CLIs + DevOps) -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — streaming-desktop counterpart (charly toolchain + browser-accessible Wayland); shares the rootless-first posture +- `/charly-distros:charly-fedora` — streaming-desktop counterpart (charly toolchain + browser-accessible Wayland); shares the rootless-first posture - [`/charly-distros:githubrunner`](/recipes/distros/githubrunner/) — self-hosted GitHub Actions runner; same uid=1000 posture ## Related Commands diff --git a/src/content/docs/recipes/coder/charly-mcp.md b/src/content/docs/recipes/coder/charly-mcp.md index d5deedb5..1f3f4f2c 100644 --- a/src/content/docs/recipes/coder/charly-mcp.md +++ b/src/content/docs/recipes/coder/charly-mcp.md @@ -124,7 +124,7 @@ Six deploy-scope tests ship with the candy: All `mcp:` checks pass `mcp_name: charly` so they stay unambiguous on boxes that also expose `jupyter` or `chrome-devtools` servers -(e.g. [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/)). +(e.g. `/charly-distros:charly-fedora`). ## Host networking caveat diff --git a/src/content/docs/recipes/coder/codex.md b/src/content/docs/recipes/coder/codex.md index 87ea6ebf..28588dcb 100644 --- a/src/content/docs/recipes/coder/codex.md +++ b/src/content/docs/recipes/coder/codex.md @@ -27,9 +27,6 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) — Required Node.js runtime parent dependency - [`/charly-coder:claude-code`](/recipes/coder/claude-code/) — Sibling AI coding agent CLI bundled in same metalayers diff --git a/src/content/docs/recipes/coder/fedora-coder.md b/src/content/docs/recipes/coder/fedora-coder.md index 2407559a..cdd09c14 100644 --- a/src/content/docs/recipes/coder/fedora-coder.md +++ b/src/content/docs/recipes/coder/fedora-coder.md @@ -11,7 +11,7 @@ description: "Kitchen-sink development box: coding + AI-coding CLIs + DevOps too The everyday-development counterpart to [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/): all the coding + AI + DevOps tooling a developer needs in one box, no desktop, -no streaming. Distinct from `openclaw-desktop` (which adds the +no streaming. Distinct from `charly-fedora` (which adds the browser-streamed Wayland desktop) — `fedora-coder` is headless and meant to be accessed via `ssh -p 2222` or `charly shell`. @@ -86,7 +86,7 @@ normal `-p host:container` remapping (e.g. running `arch-coder` alongside No `uid:` / `gid:` / `user:` / `security:` override — inherits `1000/1000/user` from `defaults` and the candy-level security from [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/). Rootless-first by design (shares this -posture with [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/)). +posture with `/charly-distros:charly-fedora`). ## Resolved security posture (OCI label) @@ -251,7 +251,7 @@ All four produce the same daily-dev surface (sshd on 2222, charly-mcp on 18765, ## Related Boxes -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — sibling rootless-first power-user box; same security posture + container-nesting, but adds the streaming desktop. Prefer when you want browser-accessible GUI + dev tools. +- `/charly-distros:charly-fedora` — sibling rootless-first power-user box; same security posture + container-nesting, but adds the streaming desktop. Prefer when you want browser-accessible GUI + dev tools. - [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/) — minimal charly toolchain (no coding CLIs, no DevOps), also uid=1000 with sudo. - [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — Arch Linux counterpart of charly-fedora. - [`/charly-distros:githubrunner`](/recipes/distros/githubrunner/) — self-hosted GitHub Actions runner; same uid=1000 posture. @@ -273,7 +273,7 @@ All four produce the same daily-dev surface (sshd on 2222, charly-mcp on 18765, - Building, deploying, or troubleshooting the `fedora-coder` box. - Picking the right power-user base image for a coding/dev workload (this - vs. `charly-fedora` vs. `charly-arch` vs. `openclaw-desktop`). + vs. `charly-fedora` vs. `charly-arch` vs. `charly-fedora`). - Understanding the rootless-first architectural pattern shared by the four power-user boxes (kernel RCA belongs in [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/); the composition that proves it works diff --git a/src/content/docs/recipes/coder/gemini.md b/src/content/docs/recipes/coder/gemini.md index 35df2ab0..0d9588af 100644 --- a/src/content/docs/recipes/coder/gemini.md +++ b/src/content/docs/recipes/coder/gemini.md @@ -28,12 +28,11 @@ my-box: ## Used In Boxes -- `openclaw-full` (via `openclaw-full` metalayer) ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) — required runtime dependency -- [`/charly-coder:claude-code`](/recipes/coder/claude-code/) — sibling AI CLI in openclaw-full and hermes-full -- [`/charly-coder:codex`](/recipes/coder/codex/) — sibling AI CLI in openclaw-full and hermes-full +- [`/charly-coder:claude-code`](/recipes/coder/claude-code/) — sibling AI CLI in hermes-full +- [`/charly-coder:codex`](/recipes/coder/codex/) — sibling AI CLI in hermes-full ## Related Commands - [`/charly-build:secrets`](/recipes/build/secrets/) — provision Gemini API credentials for the CLI diff --git a/src/content/docs/recipes/coder/gh.md b/src/content/docs/recipes/coder/gh.md index 9a50e524..0ac2f5be 100644 --- a/src/content/docs/recipes/coder/gh.md +++ b/src/content/docs/recipes/coder/gh.md @@ -82,7 +82,7 @@ my-box: ## Used In Boxes - [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/), [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/), [`/charly-coder:fedora-coder`](/recipes/coder/fedora-coder/) — power-user boxes that compose gh explicitly -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — streaming-desktop sibling +- `/charly-distros:charly-fedora` — streaming-desktop sibling - Any box composing `hermes-full` ## Related Candies diff --git a/src/content/docs/recipes/coder/kimi.md b/src/content/docs/recipes/coder/kimi.md index 857895b1..caa68a07 100644 --- a/src/content/docs/recipes/coder/kimi.md +++ b/src/content/docs/recipes/coder/kimi.md @@ -28,7 +28,7 @@ my-dev: ## Used In Boxes - No enabled boxes use this candy yet — composition into the AI-CLI metalayers - (`hermes-full`, `openclaw-full`) and the coder boxes is the named + (`hermes-full`, `openclaw`) and the coder boxes is the named `@github`-pin follow-up once the candy carries a published tag (see [`/charly-build:reconcile`](/recipes/build/reconcile/)) diff --git a/src/content/docs/recipes/coder/oracle.md b/src/content/docs/recipes/coder/oracle.md index bd67c8b7..88d17656 100644 --- a/src/content/docs/recipes/coder/oracle.md +++ b/src/content/docs/recipes/coder/oracle.md @@ -27,12 +27,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) -- runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- parent metalayer that bundles oracle +- `/charly-openclaw:openclaw-layer` -- parent metalayer that bundles oracle ## Related Commands - [`/charly-automation:openclaw-deploy`](/recipes/automation/openclaw-deploy/) -- gateway/skill configuration diff --git a/src/content/docs/recipes/core/charly-config.md b/src/content/docs/recipes/core/charly-config.md index 987e08a2..37f2d394 100644 --- a/src/content/docs/recipes/core/charly-config.md +++ b/src/content/docs/recipes/core/charly-config.md @@ -260,11 +260,11 @@ When a `-p HOST:CONTAINER` flag publishes onto a host port that another listener Warning: port conflicts detected: Port 13000 is in use Fix: find and stop the process using port 13000 - Or remap: charly start openclaw-desktop --port 13001:3000 + Or remap: charly start charly-fedora --port 13001:3000 Wrote /home/user/.config/containers/systemd/charly--.container ``` -The quadlet is still written with the conflicting port, so `charly start` will fail at bind time unless you either free the port, re-run `charly config` with a remap, or edit `charly.yml`. Detection uses a local `net.Listen` probe per published port at configure time. Handy for multi-instance deployments alongside a production fleet (e.g., running [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) as a test instance while [`/charly-selkies:selkies-labwc`](/recipes/selkies/selkies-labwc/) holds the canonical 3000/9222/9224/2222 range). +The quadlet is still written with the conflicting port, so `charly start` will fail at bind time unless you either free the port, re-run `charly config` with a remap, or edit `charly.yml`. Detection uses a local `net.Listen` probe per published port at configure time. Handy for multi-instance deployments alongside a production fleet (e.g., running `/charly-distros:charly-fedora` as a test instance while [`/charly-selkies:selkies-labwc`](/recipes/selkies/selkies-labwc/) holds the canonical 3000/9222/9224/2222 range). ## Deploy State diff --git a/src/content/docs/recipes/distros/agent-forwarding.md b/src/content/docs/recipes/distros/agent-forwarding.md index ee61aec7..b1a1ca52 100644 --- a/src/content/docs/recipes/distros/agent-forwarding.md +++ b/src/content/docs/recipes/distros/agent-forwarding.md @@ -124,7 +124,7 @@ Resolution chain: charly.yml per-box > global setting > default (true). ## Used In Boxes -charly-arch, arch-test, comfyui, charly-fedora, fedora-test, githubrunner, immich, immich-ml, jupyter, nvidia, ollama, openclaw, openclaw-full, python-ml, selkies-desktop, selkies-labwc-nvidia, sway-browser-vnc, unsloth-studio, valkey-test +charly-arch, arch-test, comfyui, charly-fedora, fedora-test, githubrunner, immich, immich-ml, jupyter, nvidia, ollama, openclaw, openclaw, python-ml, selkies-desktop, selkies-labwc-nvidia, sway-browser-vnc, unsloth-studio, valkey-test ## Related Candies diff --git a/src/content/docs/recipes/distros/charly-fedora.md b/src/content/docs/recipes/distros/charly-fedora.md index 687f973e..503c35bb 100644 --- a/src/content/docs/recipes/distros/charly-fedora.md +++ b/src/content/docs/recipes/distros/charly-fedora.md @@ -57,7 +57,7 @@ Resolved OCI security label: | `devices` | `[/dev/fuse, /dev/net/tun]` (from [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)) | | `privileged` | `false` | -See [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) (streaming-desktop sibling) and +See `/charly-distros:charly-fedora` (streaming-desktop sibling) and [`/charly-coder:fedora-coder`](/recipes/coder/fedora-coder/) (kitchen-sink dev sibling) for other boxes sharing this posture, and [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/) for the kernel `mount_too_revealing()` RCA. @@ -168,7 +168,7 @@ and scripts per distro. - [`/charly-distros:fedora`](/recipes/distros/fedora/) — parent base image - [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — Arch counterpart, same layers, same rootless posture - [`/charly-coder:fedora-coder`](/recipes/coder/fedora-coder/) — kitchen-sink dev sibling (adds coding CLIs + DevOps) -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — streaming-desktop counterpart (charly toolchain + browser-accessible Wayland); shares the rootless-first posture +- `/charly-distros:charly-fedora` — streaming-desktop counterpart (charly toolchain + browser-accessible Wayland); shares the rootless-first posture - [`/charly-distros:githubrunner`](/recipes/distros/githubrunner/) — self-hosted GitHub Actions runner; same uid=1000 posture ## Related Commands diff --git a/src/content/docs/recipes/distros/container-nesting.md b/src/content/docs/recipes/distros/container-nesting.md index 375f54ee..6995740d 100644 --- a/src/content/docs/recipes/distros/container-nesting.md +++ b/src/content/docs/recipes/distros/container-nesting.md @@ -303,7 +303,7 @@ The resolved OCI label then unions to `cap_add:[ALL] + security_opt:[unmask=/proc/*, label=disable, seccomp=unconfined]`, which matches their historical posture. -Rootless boxes like [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) don't add a +Rootless boxes like `/charly-distros:charly-fedora` don't add a box-level `security:` block, so the resolved posture stays at `security_opt:[unmask=/proc/*]` only — zero capability escalation. @@ -315,11 +315,11 @@ box-level `security:` block, so the resolved posture stays at ```yaml # charly.yml -openclaw-desktop: +charly-fedora: base: cachyos.cachyos candy: - selkies-desktop - - openclaw-full + - openclaw - ollama - charly - container-nesting # donates unmask + devices + config + env @@ -353,16 +353,16 @@ Both paths work; they just resolve to different OCI security labels. ## Verification ```bash -# Rootless posture on openclaw-desktop -charly box inspect openclaw-desktop | jq '.HostConfig? // .Config.Labels."ai.opencharly.security"' +# Rootless posture on charly-fedora +charly box inspect charly-fedora | jq '.HostConfig? // .Config.Labels."ai.opencharly.security"' # → cap_add:[], security_opt:[unmask=/proc/*], devices:[/dev/fuse,/dev/net/tun] # Nested podman smoke (inside the running container) -charly shell openclaw-desktop -c 'podman run --rm quay.io/libpod/alpine:latest true' +charly shell charly-fedora -c 'podman run --rm quay.io/libpod/alpine:latest true' # → exit 0, NO "mount proc to proc: Operation not permitted" # Diagnostic: inspect the OCI spec generated for a nested container -charly shell openclaw-desktop -c ' +charly shell charly-fedora -c ' podman create --name t quay.io/libpod/alpine:latest /bin/true >/dev/null sf=$(find ~/.local/share/containers -name config.json -path "*/userdata/*" | head -1) jq ".linux.maskedPaths" "$sf"' @@ -379,7 +379,7 @@ this order: ## Used In Boxes -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — rootless path; box-level adds nothing +- `/charly-distros:charly-fedora` — rootless path; box-level adds nothing - [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/) — root path; box-level adds `cap_add:[ALL] + security_opt:[label=disable, seccomp=unconfined]` - [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — same root path as charly-fedora - [`/charly-distros:githubrunner`](/recipes/distros/githubrunner/) — same root path; doesn't compose the full charly toolchain but keeps nested podman for CI workloads @@ -404,7 +404,7 @@ this order: - Authoring or debugging any candy/box that needs nested podman, buildah, or skopeo. - Chasing `mount_too_revealing` / `mount proc to proc: Operation not permitted` errors — this is the authoritative RCA. - Choosing between `--privileged`, `cap_add: ALL`, and `unmask=/proc/*` — this skill documents why the surgical `unmask` fix is the minimum-privilege path and the others are hammers. -- Evaluating the security posture of [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/), [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/), [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/), or [`/charly-distros:githubrunner`](/recipes/distros/githubrunner/). +- Evaluating the security posture of `/charly-distros:charly-fedora`, [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/), [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/), or [`/charly-distros:githubrunner`](/recipes/distros/githubrunner/). ## Related diff --git a/src/content/docs/recipes/distros/githubrunner.md b/src/content/docs/recipes/distros/githubrunner.md index a4811a9f..cc558bb1 100644 --- a/src/content/docs/recipes/distros/githubrunner.md +++ b/src/content/docs/recipes/distros/githubrunner.md @@ -10,7 +10,7 @@ description: "Self-hosted GitHub Actions runner on CachyOS, fully rootless — r # githubrunner Self-hosted GitHub Actions runner on **CachyOS**, fully rootless. Shares the -rootless nested-container posture with [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) (uid=1000, +rootless nested-container posture with `/charly-distros:charly-fedora` (uid=1000, no caps, `unmask=/proc/*` via [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)). ## Box Properties @@ -124,7 +124,7 @@ charly remove githubrunner -e RUNNER_TOKEN= ## Related Boxes - [`/charly-distros:cachyos`](/recipes/distros/cachyos/) — the CachyOS base (parent, via the `cachyos` namespace) -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — same rootless container-nesting posture (uid 1000, no caps) +- `/charly-distros:charly-fedora` — same rootless container-nesting posture (uid 1000, no caps) - [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/), [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — the charly-toolchain siblings (root path, box-level full-hammer security) ## Related Commands diff --git a/src/content/docs/recipes/hermes/playwright-layer.md b/src/content/docs/recipes/hermes/playwright-layer.md index 8aab0317..8b049d87 100644 --- a/src/content/docs/recipes/hermes/playwright-layer.md +++ b/src/content/docs/recipes/hermes/playwright-layer.md @@ -28,12 +28,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) -- runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- parent metalayer that bundles playwright +- `/charly-openclaw:openclaw-layer` -- parent metalayer that bundles playwright - [`/charly-selkies:chrome`](/recipes/selkies/chrome/) -- browser commonly driven by playwright ## Related Commands diff --git a/src/content/docs/recipes/infrastructure/sqlite.md b/src/content/docs/recipes/infrastructure/sqlite.md index 8784be5b..f421574e 100644 --- a/src/content/docs/recipes/infrastructure/sqlite.md +++ b/src/content/docs/recipes/infrastructure/sqlite.md @@ -32,12 +32,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:dev-tools`](/recipes/coder/dev-tools/) -- common dev CLI bundle that pairs with sqlite -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- parent metalayer that bundles sqlite +- `/charly-openclaw:openclaw-layer` -- parent metalayer that bundles sqlite ## Related Commands - [`/charly-core:shell`](/recipes/core/shell/) -- run sqlite3 inside the container diff --git a/src/content/docs/recipes/infrastructure/tmux-layer.md b/src/content/docs/recipes/infrastructure/tmux-layer.md index dd44870b..b59ba8ea 100644 --- a/src/content/docs/recipes/infrastructure/tmux-layer.md +++ b/src/content/docs/recipes/infrastructure/tmux-layer.md @@ -32,9 +32,6 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Skills - [`/charly-automation:tmux`](/recipes/automation/tmux/) — Typed persistent terminals, safe input, snapshots, transcripts, and agent runtimes diff --git a/src/content/docs/recipes/infrastructure/virtualization.md b/src/content/docs/recipes/infrastructure/virtualization.md index 2b1b1eca..fac667b6 100644 --- a/src/content/docs/recipes/infrastructure/virtualization.md +++ b/src/content/docs/recipes/infrastructure/virtualization.md @@ -158,7 +158,7 @@ Two deliberate choices: - **No `user=` directive.** The supervisord programs inherit the parent supervisord's uid. On `charly-fedora`/`charly-arch`/`githubrunner`, supervisord runs as uid 0 → daemons run as uid 0 → - `qemu:///session` targets root's session. On `openclaw-desktop`, + `qemu:///session` targets root's session. On `charly-fedora`, supervisord runs as uid 1000 → daemons run as uid 1000 → `qemu:///session` targets user's session. Both work because the session URI keys off `$XDG_RUNTIME_DIR` rather than a fixed socket @@ -184,7 +184,7 @@ This candy makes that URI actually work inside a container at uid gets KVM acceleration. - `virsh -c qemu:///session domcapabilities` reports `kvm` once the daemons are running — verified - on `openclaw-desktop` at uid 1000. + on `charly-fedora` at uid 1000. ## Tests baked into the candy @@ -224,7 +224,7 @@ See [`/charly-check:check`](/recipes/check/check/) "`package:` + `package_map:` ```yaml # charly.yml — rootless nested VM image -openclaw-desktop: +charly-fedora: candy: - ... - charly # the full toolchain — pulls virtualization @@ -253,7 +253,7 @@ Drops on deb: `gvisor-tap-vsock`, `podman-machine` (not packaged; VM-mode networ ## Used In Boxes -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — rootless VM host inside a streaming desktop +- `/charly-distros:charly-fedora` — rootless VM host inside a streaming desktop - [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/) — root VM host (same daemons, uid 0) - [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — Arch counterpart - [`/charly-coder:debian-coder`](/recipes/coder/debian-coder/), [`/charly-coder:ubuntu-coder`](/recipes/coder/ubuntu-coder/) — deb-based consumers (via the `charly` candy) diff --git a/src/content/docs/recipes/ollama/ollama.md b/src/content/docs/recipes/ollama/ollama.md index 85981ad1..895345e7 100644 --- a/src/content/docs/recipes/ollama/ollama.md +++ b/src/content/docs/recipes/ollama/ollama.md @@ -79,7 +79,7 @@ and Volumes.) such list through the Arch-only rule above, which is the part that does not move. - A consumer that composes neither pays for neither ON A PACKAGED DISTRO — - e.g. [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) (cachyos base, no GPU candy). On a + e.g. `/charly-distros:charly-fedora` (cachyos base, no GPU candy). On a tarball distro it still carries the bundled CUDA backend. ## Ports @@ -177,7 +177,7 @@ composition. - [`/charly-distros:nvidia`](/recipes/distros/nvidia/) — the GPU base family - [`/charly-distros:cachyos`](/recipes/distros/cachyos/) — the CachyOS image family, which carries its own ollama boxes -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — a desktop image that serves a local ollama +- `/charly-distros:charly-fedora` — a desktop image that serves a local ollama - [`/charly-jupyter:jupyter-ml-notebook`](/recipes/jupyter/jupyter-ml-notebook/) — receives `OLLAMA_HOST` via env_provide when ollama is deployed - [`/charly-openwebui:openwebui`](/recipes/openwebui/openwebui/) — receives `OLLAMA_HOST` via env_provide, auto-configures as `OLLAMA_BASE_URL` diff --git a/src/content/docs/recipes/openclaw/clawhub.md b/src/content/docs/recipes/openclaw/clawhub.md index 26a1dcd8..e919700d 100644 --- a/src/content/docs/recipes/openclaw/clawhub.md +++ b/src/content/docs/recipes/openclaw/clawhub.md @@ -28,12 +28,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) — Required Node.js runtime parent dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — Metalayer bundling clawhub with codex/gemini/claude-code +- `/charly-openclaw:openclaw-layer` — Metalayer bundling clawhub with codex/gemini/claude-code - [`/charly-openclaw:openclaw`](/recipes/openclaw/openclaw/) — OpenClaw gateway service that consumes installed skills ## Related Commands diff --git a/src/content/docs/recipes/openclaw/openclaw-layer.md b/src/content/docs/recipes/openclaw/openclaw-layer.md index bb65b7a3..7cfb6814 100644 --- a/src/content/docs/recipes/openclaw/openclaw-layer.md +++ b/src/content/docs/recipes/openclaw/openclaw-layer.md @@ -44,7 +44,7 @@ openclaw config # uses the alias ## Used In Boxes - [`/charly-openclaw:openclaw`](/recipes/openclaw/openclaw/) -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) +- `/charly-openclaw:openclaw-layer` ## Port Relay diff --git a/src/content/docs/recipes/openclaw/openclaw.md b/src/content/docs/recipes/openclaw/openclaw.md index 02e2ea58..b9cc8e13 100644 --- a/src/content/docs/recipes/openclaw/openclaw.md +++ b/src/content/docs/recipes/openclaw/openclaw.md @@ -50,7 +50,7 @@ charly start openclaw ## Related Boxes -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — maximal variant (gateway + browser + all tools) +- `/charly-openclaw:openclaw-layer` — maximal variant (gateway + browser + all tools) ## Verification diff --git a/src/content/docs/recipes/selkies/camsnap.md b/src/content/docs/recipes/selkies/camsnap.md index f726d311..9c38ce17 100644 --- a/src/content/docs/recipes/selkies/camsnap.md +++ b/src/content/docs/recipes/selkies/camsnap.md @@ -34,12 +34,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) — Required Go runtime parent dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — Metalayer that bundles camsnap with other agent CLIs +- `/charly-openclaw:openclaw-layer` — Metalayer that bundles camsnap with other agent CLIs ## Related Commands - [`/charly-build:build`](/recipes/build/build/) — Builds the candy (Go install via a `command:` run step) diff --git a/src/content/docs/recipes/selkies/ffmpeg.md b/src/content/docs/recipes/selkies/ffmpeg.md index 5578f270..dbb15fa9 100644 --- a/src/content/docs/recipes/selkies/ffmpeg.md +++ b/src/content/docs/recipes/selkies/ffmpeg.md @@ -36,8 +36,6 @@ my-box: All candies that need ffmpeg should declare it as a dependency rather than independently adding the negativo17 repo. This ensures a single authoritative install point. ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - `hermes` (via `hermes` candy `require: ffmpeg`) - `hermes-playwright` (via `hermes` candy `require: ffmpeg`) - `immich` (via `immich` candy `require: ffmpeg`) diff --git a/src/content/docs/recipes/selkies/selkies-labwc-nvidia.md b/src/content/docs/recipes/selkies/selkies-labwc-nvidia.md index 87b122a9..5fef0a2d 100644 --- a/src/content/docs/recipes/selkies/selkies-labwc-nvidia.md +++ b/src/content/docs/recipes/selkies/selkies-labwc-nvidia.md @@ -106,7 +106,7 @@ encoding (zero CPU overhead). - [`/charly-selkies:selkies-desktop-layer`](/recipes/selkies/selkies-desktop-layer/) — the labwc desktop metalayer this box is the GPU build of - `selkies-labwc` (in this same `opencharly/distro-cachyos` submodule) — the CPU-encoding labwc sibling - `selkies-kde-nvidia` — the KDE-Plasma GPU sibling (same `cachyos.nvidia` base + CUDA arch-builder) -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — the CachyOS/CPU all-in-one: this streaming desktop stack + the openclaw-full gateway + AI CLIs + a CPU ollama + the full charly toolchain (charly + container-nesting + golang + gh). Use it if you want to build boxes / start nested pods / launch VMs from inside the browser-accessible desktop. +- `/charly-distros:charly-fedora` — the CachyOS/CPU all-in-one: this streaming desktop stack + the openclaw gateway + AI CLIs + a CPU ollama + the full charly toolchain (charly + container-nesting + golang + gh). Use it if you want to build boxes / start nested pods / launch VMs from inside the browser-accessible desktop. - [`/charly-distros:cachyos`](/recipes/distros/cachyos/) — the CachyOS base image family (owns this box's submodule) ## Related Commands diff --git a/src/content/docs/recipes/selkies/selkies-labwc.md b/src/content/docs/recipes/selkies/selkies-labwc.md index 4b98e865..0fc6dc2f 100644 --- a/src/content/docs/recipes/selkies/selkies-labwc.md +++ b/src/content/docs/recipes/selkies/selkies-labwc.md @@ -367,7 +367,7 @@ diagnostic recipe that found the leak. ## Related Boxes - [`/charly-selkies:selkies-labwc-nvidia`](/recipes/selkies/selkies-labwc-nvidia/) — the GPU sibling of this CPU box: the same `selkies-desktop` metalayer on the CachyOS GPU base (`cachyos.nvidia`, `build: [pac, aur]`) with `builder.pixi: arch.cuda-arch-builder` for real NVENC, in the `opencharly/distro-cachyos` submodule. See [`/charly-distros:cachyos`](/recipes/distros/cachyos/). -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — all-in-one CachyOS variant: this streaming desktop fused with the openclaw-full gateway + AI CLIs, a CPU ollama, and the full charly toolchain (build boxes, run nested pods, launch rootless libvirt VMs from inside the streaming desktop). Uses [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)'s `unmask=/proc/*` posture — no `--privileged`, still uid 1000. +- `/charly-distros:charly-fedora` — all-in-one CachyOS variant: this streaming desktop fused with the openclaw gateway + AI CLIs, a CPU ollama, and the full charly toolchain (build boxes, run nested pods, launch rootless libvirt VMs from inside the streaming desktop). Uses [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)'s `unmask=/proc/*` posture — no `--privileged`, still uid 1000. - [`/charly-selkies:sway-browser-vnc`](/recipes/selkies/sway-browser-vnc/) — VNC-based alternative using Sway compositor instead of Selkies/labwc streaming ## Verification diff --git a/src/content/docs/recipes/selkies/wacli.md b/src/content/docs/recipes/selkies/wacli.md index 0f8bfdfe..09be7897 100644 --- a/src/content/docs/recipes/selkies/wacli.md +++ b/src/content/docs/recipes/selkies/wacli.md @@ -34,12 +34,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) — Go toolchain dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that bundles wacli +- `/charly-openclaw:openclaw-layer` — metalayer that bundles wacli - [`/charly-hermes:hermes`](/recipes/hermes/hermes/) — companion messaging stack with WhatsApp bridge ## Related Commands diff --git a/src/content/docs/recipes/tools/blogwatcher.md b/src/content/docs/recipes/tools/blogwatcher.md index ae1f5752..510dcd47 100644 --- a/src/content/docs/recipes/tools/blogwatcher.md +++ b/src/content/docs/recipes/tools/blogwatcher.md @@ -34,12 +34,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) — Required Go runtime parent dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — Metalayer that bundles blogwatcher with other AI/agent CLIs +- `/charly-openclaw:openclaw-layer` — Metalayer that bundles blogwatcher with other AI/agent CLIs ## Related Commands - [`/charly-build:build`](/recipes/build/build/) — Builds the candy (Go install via a `run:` step) diff --git a/src/content/docs/recipes/tools/gifgrep.md b/src/content/docs/recipes/tools/gifgrep.md index a80d56e1..f9f35de4 100644 --- a/src/content/docs/recipes/tools/gifgrep.md +++ b/src/content/docs/recipes/tools/gifgrep.md @@ -34,13 +34,10 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) — required Go toolchain dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that includes gifgrep -- [`/charly-tools:goplaces`](/recipes/tools/goplaces/) — sibling Go-based CLI in openclaw-full +- `/charly-openclaw:openclaw-layer` — metalayer that includes gifgrep +- [`/charly-tools:goplaces`](/recipes/tools/goplaces/) — sibling Go-based CLI in openclaw ## Related Commands - [`/charly-build:build`](/recipes/build/build/) — compiles gifgrep via the Go builder during image build diff --git a/src/content/docs/recipes/tools/gogcli.md b/src/content/docs/recipes/tools/gogcli.md index 2114fb51..15e40295 100644 --- a/src/content/docs/recipes/tools/gogcli.md +++ b/src/content/docs/recipes/tools/gogcli.md @@ -34,13 +34,10 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) — required Go toolchain dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that includes gogcli -- [`/charly-tools:goplaces`](/recipes/tools/goplaces/) — sibling Google API CLI in openclaw-full +- `/charly-openclaw:openclaw-layer` — metalayer that includes gogcli +- [`/charly-tools:goplaces`](/recipes/tools/goplaces/) — sibling Google API CLI in openclaw ## Related Commands - [`/charly-build:secrets`](/recipes/build/secrets/) — provision Google OAuth credentials for gogcli diff --git a/src/content/docs/recipes/tools/goplaces.md b/src/content/docs/recipes/tools/goplaces.md index 2e3ce737..8736ffe3 100644 --- a/src/content/docs/recipes/tools/goplaces.md +++ b/src/content/docs/recipes/tools/goplaces.md @@ -34,13 +34,10 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) — required Go toolchain dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that includes goplaces -- [`/charly-tools:gogcli`](/recipes/tools/gogcli/) — sibling Google API CLI in openclaw-full +- `/charly-openclaw:openclaw-layer` — metalayer that includes goplaces +- [`/charly-tools:gogcli`](/recipes/tools/gogcli/) — sibling Google API CLI in openclaw ## Related Commands - [`/charly-build:secrets`](/recipes/build/secrets/) — provision Google Places API key for the CLI diff --git a/src/content/docs/recipes/tools/himalaya.md b/src/content/docs/recipes/tools/himalaya.md index 3b236459..33d28a66 100644 --- a/src/content/docs/recipes/tools/himalaya.md +++ b/src/content/docs/recipes/tools/himalaya.md @@ -27,12 +27,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:rust`](/recipes/coder/rust/) — required Rust toolchain dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that includes himalaya +- `/charly-openclaw:openclaw-layer` — metalayer that includes himalaya - [`/charly-infrastructure:gnupg`](/recipes/infrastructure/gnupg/) — pairs with himalaya for PGP-encrypted email ## Related Commands diff --git a/src/content/docs/recipes/tools/mcporter.md b/src/content/docs/recipes/tools/mcporter.md index 669c9c10..ccb88424 100644 --- a/src/content/docs/recipes/tools/mcporter.md +++ b/src/content/docs/recipes/tools/mcporter.md @@ -27,12 +27,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) — required runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that includes mcporter +- `/charly-openclaw:openclaw-layer` — metalayer that includes mcporter - [`/charly-coder:claude-code`](/recipes/coder/claude-code/) — sibling AI CLI commonly paired with MCP tools ## Related Commands diff --git a/src/content/docs/recipes/tools/nano-pdf.md b/src/content/docs/recipes/tools/nano-pdf.md index aa3ae2b3..c0742f85 100644 --- a/src/content/docs/recipes/tools/nano-pdf.md +++ b/src/content/docs/recipes/tools/nano-pdf.md @@ -27,13 +27,10 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-languages:python`](/recipes/languages/python/) — required Python runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that includes nano-pdf -- [`/charly-coder:uv`](/recipes/coder/uv/) — sibling Python tooling in openclaw-full +- `/charly-openclaw:openclaw-layer` — metalayer that includes nano-pdf +- [`/charly-coder:uv`](/recipes/coder/uv/) — sibling Python tooling in openclaw ## Related Commands - [`/charly-build:build`](/recipes/build/build/) — installs nano-pdf via the pixi builder during image build diff --git a/src/content/docs/recipes/tools/ordercli.md b/src/content/docs/recipes/tools/ordercli.md index 0d485767..58e7732f 100644 --- a/src/content/docs/recipes/tools/ordercli.md +++ b/src/content/docs/recipes/tools/ordercli.md @@ -34,12 +34,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) -- build/runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- parent metalayer that bundles ordercli +- `/charly-openclaw:openclaw-layer` -- parent metalayer that bundles ordercli ## Related Commands - [`/charly-core:shell`](/recipes/core/shell/) -- run ordercli inside the container diff --git a/src/content/docs/recipes/tools/ripgrep.md b/src/content/docs/recipes/tools/ripgrep.md index 08958e5e..ede9069f 100644 --- a/src/content/docs/recipes/tools/ripgrep.md +++ b/src/content/docs/recipes/tools/ripgrep.md @@ -31,12 +31,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:dev-tools`](/recipes/coder/dev-tools/) -- bundles ripgrep alongside other CLI utilities -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- parent metalayer that bundles ripgrep +- `/charly-openclaw:openclaw-layer` -- parent metalayer that bundles ripgrep ## Related Commands - [`/charly-core:shell`](/recipes/core/shell/) -- run rg interactively inside the container diff --git a/src/content/docs/recipes/tools/sag.md b/src/content/docs/recipes/tools/sag.md index da4e89d2..b06aa743 100644 --- a/src/content/docs/recipes/tools/sag.md +++ b/src/content/docs/recipes/tools/sag.md @@ -38,9 +38,6 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) -- build/runtime dependency - [`/charly-tools:sherpa-onnx`](/recipes/tools/sherpa-onnx/) -- offline TTS sibling diff --git a/src/content/docs/recipes/tools/songsee.md b/src/content/docs/recipes/tools/songsee.md index e7e4f176..55920e71 100644 --- a/src/content/docs/recipes/tools/songsee.md +++ b/src/content/docs/recipes/tools/songsee.md @@ -34,12 +34,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:golang`](/recipes/coder/golang/) -- build/runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- parent metalayer that bundles songsee +- `/charly-openclaw:openclaw-layer` -- parent metalayer that bundles songsee ## Related Commands - [`/charly-core:shell`](/recipes/core/shell/) -- run songsee CLI inside the container diff --git a/src/content/docs/recipes/tools/summarize.md b/src/content/docs/recipes/tools/summarize.md index a1783c7d..abca1203 100644 --- a/src/content/docs/recipes/tools/summarize.md +++ b/src/content/docs/recipes/tools/summarize.md @@ -27,13 +27,10 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) — runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that bundles summarize -- [`/charly-tools:whisper`](/recipes/tools/whisper/) — speech-to-text companion in the `openclaw-full-ml` candy +- `/charly-openclaw:openclaw-layer` — metalayer that bundles summarize +- [`/charly-tools:whisper`](/recipes/tools/whisper/) — speech-to-text companion in the `openclaw-ml` candy ## Related Commands - [`/charly-core:shell`](/recipes/core/shell/) — run summarize CLI inside the container diff --git a/src/content/docs/recipes/tools/xurl.md b/src/content/docs/recipes/tools/xurl.md index cff2506c..ecb7a9b4 100644 --- a/src/content/docs/recipes/tools/xurl.md +++ b/src/content/docs/recipes/tools/xurl.md @@ -27,12 +27,9 @@ my-box: ``` ## Used In Boxes - -- `openclaw-full` (via `openclaw-full` metalayer) - ## Related Candies - [`/charly-coder:nodejs`](/recipes/coder/nodejs/) — runtime dependency -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — metalayer that bundles xurl +- `/charly-openclaw:openclaw-layer` — metalayer that bundles xurl - [`/charly-hermes:hermes`](/recipes/hermes/hermes/) — companion social/messaging agent ## Related Commands diff --git a/src/content/docs/recipes/vm/vm.md b/src/content/docs/recipes/vm/vm.md index 4d725cc8..582c15bf 100644 --- a/src/content/docs/recipes/vm/vm.md +++ b/src/content/docs/recipes/vm/vm.md @@ -620,7 +620,7 @@ rm /tmp/bootc.tar charly vm build --transport containers-storage ``` -`--transport containers-storage` forces `bootc install` to pull from the machine's local store. Worked example: [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) "Two-level nested-virtualization proof". +`--transport containers-storage` forces `bootc install` to pull from the machine's local store. Worked example: `/charly-distros:charly-fedora` "Two-level nested-virtualization proof". ### `charly vm destroy` — the DEPLOY name keys the domain (`--domain`) and missing targets are strict @@ -697,7 +697,7 @@ Expected. The agent needs a `virtio-serial` channel that charly's QEMU backend d - [`/charly-build:pull`](/recipes/build/pull/) — fetch container images into local storage (prereq for bootc VM builds) - [`/charly-build:build`](/recipes/build/build/) — building container images before VM disk builds - [`/charly-image:layer`](/recipes/image/layer/) — `libvirt.snippets:` field in charly.yml -- [`/charly-openclaw:openclaw-desktop`](/recipes/openclaw/openclaw-desktop/) — two-level nested-virtualization proof +- `/charly-distros:charly-fedora` — two-level nested-virtualization proof - [`/charly-distros:cloud-init`](/recipes/distros/cloud-init/) — guest-side cloud-init package (complements host-side seed ISO rendering) - [`/charly-distros:qemu-guest-agent`](/recipes/distros/qemu-guest-agent/) — virtio-serial channel