From 2f04543e7a552bd7ccb4a2f490c9ea53b2df9042 Mon Sep 17 00:00:00 2001 From: Andreas Trawoeger Date: Thu, 8 Oct 2026 19:19:45 +0200 Subject: [PATCH] fix(docs)!: drop the remaining retired openclaw references from the recipes The last judgement hits from the previous round's census, across 44 recipe pages. Per the rule that round produced, each shape was read before being changed rather than pattern-matched blind: - sibling-box prose and links naming the retired openclaw-desktop box now point at /charly-distros:charly-fedora, a live rootless-first box that several of these pages already named alongside it; - purely-metalayer list lines are removed; - names inside the surviving openclaw family are corrected to the live entities; - and an illustrative error transcript in authoring-gotchas.md that quoted a retired image name now quotes a live one, since it exists to show an ambiguous-short-name error rather than to document that image. Verified across the whole recipe tree: the only remaining hits are the four pages opencharly/docs#151 deletes and index.md, which that PR also fixes. Nothing else is left in this repository. Refs opencharly/opencharly#431 Agent: openclaw-family Assisted-by: DSH DeepSeek V4.1 Flash (documentation reviewed) --- .../recipes/automation/openclaw-deploy.md | 26 +++++++++---------- .../recipes/check/check/authoring-gotchas.md | 8 +++--- .../docs/recipes/check/check/beds-and-r10.md | 4 +-- src/content/docs/recipes/coder/arch-coder.md | 2 +- src/content/docs/recipes/coder/charly-arch.md | 6 ++--- src/content/docs/recipes/coder/charly-mcp.md | 2 +- src/content/docs/recipes/coder/codex.md | 3 --- .../docs/recipes/coder/fedora-coder.md | 8 +++--- src/content/docs/recipes/coder/gemini.md | 5 ++-- src/content/docs/recipes/coder/gh.md | 2 +- src/content/docs/recipes/coder/kimi.md | 2 +- src/content/docs/recipes/coder/oracle.md | 5 +--- .../docs/recipes/core/charly-config.md | 4 +-- .../docs/recipes/distros/agent-forwarding.md | 2 +- .../docs/recipes/distros/charly-fedora.md | 4 +-- .../docs/recipes/distros/container-nesting.md | 18 ++++++------- .../docs/recipes/distros/githubrunner.md | 4 +-- .../docs/recipes/hermes/playwright-layer.md | 5 +--- .../docs/recipes/infrastructure/sqlite.md | 5 +--- .../docs/recipes/infrastructure/tmux-layer.md | 3 --- .../recipes/infrastructure/virtualization.md | 8 +++--- src/content/docs/recipes/ollama/ollama.md | 4 +-- src/content/docs/recipes/openclaw/clawhub.md | 5 +--- .../docs/recipes/openclaw/openclaw-layer.md | 2 +- src/content/docs/recipes/openclaw/openclaw.md | 2 +- src/content/docs/recipes/selkies/camsnap.md | 5 +--- src/content/docs/recipes/selkies/ffmpeg.md | 2 -- .../recipes/selkies/selkies-labwc-nvidia.md | 2 +- .../docs/recipes/selkies/selkies-labwc.md | 2 +- src/content/docs/recipes/selkies/wacli.md | 5 +--- src/content/docs/recipes/tools/blogwatcher.md | 5 +--- src/content/docs/recipes/tools/gifgrep.md | 7 ++--- src/content/docs/recipes/tools/gogcli.md | 7 ++--- src/content/docs/recipes/tools/goplaces.md | 7 ++--- src/content/docs/recipes/tools/himalaya.md | 5 +--- src/content/docs/recipes/tools/mcporter.md | 5 +--- src/content/docs/recipes/tools/nano-pdf.md | 7 ++--- src/content/docs/recipes/tools/ordercli.md | 5 +--- src/content/docs/recipes/tools/ripgrep.md | 5 +--- src/content/docs/recipes/tools/sag.md | 3 --- src/content/docs/recipes/tools/songsee.md | 5 +--- src/content/docs/recipes/tools/summarize.md | 7 ++--- src/content/docs/recipes/tools/xurl.md | 5 +--- src/content/docs/recipes/vm/vm.md | 4 +-- 44 files changed, 83 insertions(+), 149 deletions(-) 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