From 278864ebb6e0b55e1f296aea199ebd8fec288a04 Mon Sep 17 00:00:00 2001 From: Andreas Trawoeger Date: Thu, 8 Oct 2026 19:15:39 +0200 Subject: [PATCH] fix(docs)!: delete the retired openclaw pages and reference snapshots The docs site still carried whole pages for entities this cutover retired (opencharly/opencharly#431): - recipes/openclaw/openclaw-desktop.md - recipes/openclaw/openclaw-full.md - recipes/openclaw/openclaw-full-layer.md - recipes/openclaw/openclaw-full-ml-layer.md and eight versioned reference snapshots generated from the retired repos (layer-charly-openclaw x2, layer-openclaw-full x3, pod-openclaw x3). All twelve are deleted, and the four index links that pointed at the pages are removed with them. The three live openclaw pages are kept: clawhub, openclaw and openclaw-layer. These are hand-written recipe pages and versioned snapshots, not output that follows a pin bump, which is why the docs site stayed stale while the owning repos were fixed. The remaining work in this repo is the Related/Bundled-by lines in the roughly fifty recipe pages that reference the retired metalayers by name; it is tracked and will follow in this same batch. Refs opencharly/opencharly#431 Agent: openclaw-family Assisted-by: DSH DeepSeek V4.1 Flash (documentation reviewed) --- src/content/docs/recipes/index.md | 4 - .../docs/recipes/openclaw/openclaw-desktop.md | 255 ------------------ .../recipes/openclaw/openclaw-full-layer.md | 87 ------ .../openclaw/openclaw-full-ml-layer.md | 61 ----- .../docs/recipes/openclaw/openclaw-full.md | 62 ----- .../charly-openclaw.md | 24 -- .../charly-openclaw.md | 24 -- .../openclaw-full.md | 46 ---- .../openclaw-full.md | 46 ---- .../openclaw-full.md | 46 ---- .../openclaw.md | 38 --- .../openclaw.md | 38 --- .../openclaw.md | 40 --- 13 files changed, 771 deletions(-) delete mode 100644 src/content/docs/recipes/openclaw/openclaw-desktop.md delete mode 100644 src/content/docs/recipes/openclaw/openclaw-full-layer.md delete mode 100644 src/content/docs/recipes/openclaw/openclaw-full-ml-layer.md delete mode 100644 src/content/docs/recipes/openclaw/openclaw-full.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-239-1640/charly-openclaw.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-243-0950/charly-openclaw.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-238-2103/openclaw-full.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-240-0119/openclaw-full.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-247-0718/openclaw-full.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-237-558/openclaw.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-239-1639/openclaw.md delete mode 100644 src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-246-2119/openclaw.md diff --git a/src/content/docs/recipes/index.md b/src/content/docs/recipes/index.md index 28eed272..00cb7c46 100644 --- a/src/content/docs/recipes/index.md +++ b/src/content/docs/recipes/index.md @@ -404,10 +404,6 @@ Self-contained skills for the openclaw image family (CachyOS base): the headless - [clawhub](/recipes/openclaw/clawhub/) - [openclaw](/recipes/openclaw/openclaw/) -- [openclaw-desktop](/recipes/openclaw/openclaw-desktop/) -- [openclaw-full](/recipes/openclaw/openclaw-full/) -- [openclaw-full-layer](/recipes/openclaw/openclaw-full-layer/) -- [openclaw-full-ml-layer](/recipes/openclaw/openclaw-full-ml-layer/) - [openclaw-layer](/recipes/openclaw/openclaw-layer/) ### charly-openwebui diff --git a/src/content/docs/recipes/openclaw/openclaw-desktop.md b/src/content/docs/recipes/openclaw/openclaw-desktop.md deleted file mode 100644 index 48e34720..00000000 --- a/src/content/docs/recipes/openclaw/openclaw-desktop.md +++ /dev/null @@ -1,255 +0,0 @@ ---- -title: "openclaw-desktop" -description: "Use when working with the openclaw-desktop box — the all-in-one CachyOS power box that fuses the selkies streaming desktop, the openclaw-full gateway + AI CLIs (claude-code/codex/gemini), a CPU ollama, and the full nested charly toolchain (build boxes / run nested rootless pods / launch rootless libvirt VMs from a terminal inside the browser-accessible desktop)." ---- - - - -*Recipe card from the `charly-openclaw` plugin (Images — the deployable catalog).* - -# openclaw-desktop - -The all-in-one workstation box: a browser-accessible Wayland **streaming -desktop** that also runs the **OpenClaw gateway + its full tool/skill stack**, -a **CPU Ollama** inference server, and the **complete `charly` toolchain** — all as -uid 1000 `user` with no `--privileged` and no added capabilities. Open -`https://localhost:3000`, get a labwc desktop with Chrome, and from a terminal -inside it you can `charly box build`, run nested rootless pods, launch rootless -libvirt VMs, drive the OpenClaw gateway on :18789, and hit a local Ollama on -:11434. - -## Definition - -```yaml -openclaw-desktop: - base: cachyos.cachyos # Arch-derived, pacman/AUR, x86_64_v3 (via the `cachyos` import namespace) - build: [pac, aur] # required — selkies' chrome (AUR google-chrome) + wl-tools (AUR wlrctl) - candy: - - agent-forwarding - - selkies-desktop # full streaming desktop stack - - openclaw-full # gateway + the OpenClaw tools incl. claude-code/codex/gemini - - ollama # CPU ollama (GPU-agnostic layer) - - charly # the full toolchain: charly binary + virtualization + gocryptfs + socat - - container-nesting # nested rootless podman/buildah/skopeo - - '@github.com/opencharly/layer-golang' - - gh - - '@github.com/opencharly/pod-dbus' - - charly - port: - - "3000:3000" # Selkies web UI (Traefik HTTPS) - - "9222:9222" # Chrome DevTools Protocol (cdp-proxy) - - "9224:9224" # chrome-devtools-mcp (Streamable HTTP) - - "2222:2222" # sshd-wrapper - - "18789:18789" # OpenClaw gateway - - "11434:11434" # Ollama API - platform: [linux/amd64] -``` - -No `uid:`/`gid:`/`user:`/`network:` override — inherits `1000/1000/user` and the -default `charly` bridge network. Rootless is the whole design. - -## Base — CachyOS, CPU - -`base: cachyos.cachyos` ([`/charly-distros:cachyos`](/recipes/distros/cachyos/), reached via the `cachyos` import -namespace) is the Arch-derived `x86_64_v3` base. The -box is **CPU-only** — there is no `nvidia`/`cuda` candy. Ollama auto-detects -the absence of a GPU and runs CPU inference; selkies streams via the CPU x264 -encoder. `build: [pac, aur]` is mandatory (not inherited): selkies' `chrome` -candy compiles `google-chrome` from AUR and `wl-tools` builds `wlrctl`; -inheriting cachyos's bare `[pac]` would gate out the AUR builder and silently -drop the browser. The `aur → arch-builder` builder map comes from the cachyos -base. - -## Resolved security posture (OCI label) - -| Field | Value | -|---|---| -| `cap_add` | **(empty)** | -| `security_opt` | `[unmask=/proc/*]` (from [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)) | -| `devices` | `[/dev/fuse, /dev/net/tun]` (from [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/)) | -| `shm_size` | `1g` (from [`/charly-selkies:chrome`](/recipes/selkies/chrome/)) | -| `memory_max` | `6g` (from [`/charly-selkies:chrome`](/recipes/selkies/chrome/)) | -| `privileged` | `false` | -| Network | default charly bridge (NOT host) | -| UID / user | `1000 / user` | - -**No `--privileged`. No `cap_add: ALL`. No `seccomp=unconfined`. No -`label=disable`.** The only security relaxation is `unmask=/proc/*` — surgical, -documented in [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/) with the full kernel-level RCA. - -## The four fused stacks - -| Stack | Candies | What it gives you | -|---|---|---| -| Streaming desktop | `selkies-desktop` (chrome, chrome-cdp, labwc, waybar, pipewire, swaync, pavucontrol, wl-tools, selkies, sshd, …) | labwc Wayland desktop streamed over HTTPS:3000; Chrome + CDP:9222 + chrome-devtools-mcp:9224; sshd:2222 | -| OpenClaw + tools | `openclaw-full` (openclaw gateway + claude-code, codex, gemini + more tools) | AI gateway on :18789; `claude` CLI at `/usr/local/bin/claude`, `codex` / `gemini` CLIs at `${HOME}/.npm-global/bin/`; playwright now drives the desktop's real Chrome (synergy) | -| LLM inference | `ollama` | CPU Ollama API on :11434; `ollama` host alias; `models` volume at `~/.ollama` | -| Nested charly toolchain | `charly` + `container-nesting` + `golang` + `gh` | `charly box build`, nested rootless podman/buildah/skopeo, rootless libvirt VMs, gocryptfs encrypted volumes, socat relays | - -**Browser synergy:** `openclaw-full` ships `playwright` but deliberately omits a -system browser (it's normally headless). Fusing it with `selkies-desktop`'s -`chrome` + `chrome-cdp` stack gives playwright a real browser + CDP on :9222 — -a pure enhancement, no conflict. - -## Ports - -| Port | Service | -|---|---| -| 3000 | Selkies web UI (Traefik HTTPS, self-signed) | -| 9222 | Chrome DevTools Protocol (via `cdp-proxy`) | -| 9224 | `chrome-devtools-mcp` (Streamable HTTP) | -| 2222 | `sshd-wrapper` (supervisord-managed) | -| 18789 | OpenClaw gateway + Control UI | -| 11434 | Ollama API | - -All six are distinct — no collisions. For multi-instance deployments alongside a -running selkies/openclaw instance holding these host ports, remap via -`charly config openclaw-desktop -p 3010:3000 -p 9232:9222 -p 9242:9224 -p 2232:2222 -p 18790:18789 -p 11444:11434`. - -## Quick Start - -```bash -charly box build openclaw-desktop -charly config openclaw-desktop -charly start openclaw-desktop -# Desktop: https://localhost:3000 (accept the self-signed cert) -# Gateway: http://localhost:18789 -# Ollama: curl http://localhost:11434/api/tags -charly shell openclaw-desktop -c "ollama pull llama3" -``` - -## Nested rootless podman — how it works here - -See [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/) for the full kernel-level RCA. The short -version: podman's rootless outer container injects `linux.maskedPaths`; the -kernel's `mount_too_revealing()` then refuses any fresh `/proc` mount from the -inner container. `unmask=/proc/*` tells podman not to emit those masks on the -outer, so the inner `/proc` mount has nothing to mismatch with. Verified: - -```bash -charly shell openclaw-desktop -c 'podman run --rm quay.io/libpod/alpine:latest /bin/true' -# zero extra caps, uid 1000 -``` - -## Nested rootless VMs — how it works here - -See [`/charly-infrastructure:virtualization`](/recipes/infrastructure/virtualization/). `virtqemud --timeout 0` + -`virtnetworkd --timeout 0` run as supervisord programs at uid 1000; libvirt -`qemu:///session` keys off `$XDG_RUNTIME_DIR` and needs no CAP_SYS_ADMIN — only -`/dev/kvm` passthrough. - -```bash -charly shell openclaw-desktop -c 'virsh -c qemu:///session list --all' -``` - -### Two-level nested-virtualization (end-to-end `charly vm` run-through) - -The full `charly vm build/create/ssh/stop/destroy` lifecycle completes inside the -rootless pod, two levels of KVM nesting deep: - -1. Host (rootless podman, uid 1000) runs `charly-openclaw-desktop`. -2. Inside it, `charly vm build --transport containers-storage` - auto-falls back to `engine.rootful=machine` (no host `sudo` in reach), which - spawns a podman-machine VM (nested VM #1) via KVM passthrough and runs - `bootc install to-disk`. -3. `charly vm create -i smoke --ssh-key generate` boots the produced - qcow2 as a QEMU user-net VM (nested VM #2). -4. `charly vm ssh -i smoke -- uname -a` returns the guest kernel. -5. `charly vm destroy --disk` cleans up. - -No `--privileged`, no `cap_add`, no seccomp relaxations beyond the baked -`[unmask=/proc/*]`. Only `/dev/kvm` passthrough. - -### Cross-storage loading for private bootc images - -The podman-machine in step 2 has its own rootful storage, separate from the -outer container's nested rootless store. Load a private bootc image via the host: - -```bash -# on host -podman save -o /tmp/bootc.tar ghcr.io//:latest -charly cp openclaw-desktop /tmp/bootc.tar :/tmp/bootc.tar -# inside the pod -podman load -i /tmp/bootc.tar # nested rootless store -podman --connection charly-root load -i /tmp/bootc.tar # podman-machine rootful store -charly vm build --transport containers-storage -``` - -### Docker Hub rate-limit note - -For nested test harnesses, prefer `quay.io/libpod/alpine:latest` (unmetered) -over `docker.io/library/alpine` — the baked `nested-podman-run` check already -uses this mirror. - -## What works from inside the desktop - -Every `charly` verb family runs as uid 1000 inside the container sandbox: -`charly box build/generate/validate/merge/inspect/list/pull`, -`charly check box/live/wl/libvirt` (cdp/vnc/mcp/record/kube/adb/appium/spice/dbus are declarative out-of-process verbs), -`charly config/deploy/start/stop/update/remove/shell/cmd/service/status/logs`, -`charly vm list/create/start/stop/ssh/destroy` (rootless libvirt session), -`charly doctor/secrets/settings/alias`. The `charly` candy bakes only the binary — for -build-mode verbs that read `charly.yml`, mount or `charly cp` the project in. - -## Volumes - -- `chrome-data` → `~/.chrome-debug` (Chrome profile, from the chrome candy) -- `selkies-config` → `~/.config/selkies` -- `models` → `~/.ollama` (Ollama model storage) - -## Verification - -```bash -charly status openclaw-desktop # all services RUNNING -curl -k https://localhost:3000 # selkies HTTPS 200 -curl -s http://localhost:18789 # openclaw gateway -curl -s http://localhost:11434/api/tags # ollama API -charly shell openclaw-desktop -c 'podman run --rm quay.io/libpod/alpine:latest /bin/true' -``` - -A desktop screenshot is captured by a `wl: screenshot` step, run with -`charly check live openclaw-desktop --filter wl`. - -The baked box-level `check:` carries the nested-rootless posture checks (subuid -two-ranges, `newuidmap` cap, `policy.json`, containers.conf `userns=host`, -`_CONTAINERS_USERNS_CONFIGURED` + `BUILDAH_ISOLATION` env), the deploy-scope -nested-toolchain checks (nested `podman run`, `virsh` session list, in-container -`charly version`/`charly doctor`), and the three fused services' liveness (gateway, -ollama API, chrome-devtools-mcp port). The R10 bed is -`check-openclaw-desktop-pod` (`charly check run check-openclaw-desktop-pod`). - -## Key Candies - -- [`/charly-selkies:selkies-desktop-layer`](/recipes/selkies/selkies-desktop-layer/) — the streaming desktop metalayer -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — gateway + the OpenClaw tools (claude-code/codex/gemini) -- [`/charly-ollama:ollama`](/recipes/ollama/ollama/) — CPU/GPU-agnostic Ollama candy (GPU is box-level) -- [`/charly-tools:charly`](/recipes/tools/charly/) — the full toolchain: charly binary + virtualization + gocryptfs + socat -- [`/charly-distros:container-nesting`](/recipes/distros/container-nesting/) — rootless nested podman recipe (RCA for `unmask=/proc/*`) -- [`/charly-infrastructure:virtualization`](/recipes/infrastructure/virtualization/) — supervisord-managed virtqemud/virtnetworkd -- [`/charly-distros:agent-forwarding`](/recipes/distros/agent-forwarding/) — GPG/SSH/direnv agent sockets - -## Related Boxes - -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — the headless gateway + tools WITHOUT the desktop / ollama / charly toolchain. -- [`/charly-openclaw:openclaw`](/recipes/openclaw/openclaw/) — minimal gateway only. -- [`/charly-selkies:selkies-labwc`](/recipes/selkies/selkies-labwc/) — the CPU streaming desktop WITHOUT openclaw / ollama / charly toolchain. -- [`/charly-selkies:selkies-labwc-nvidia`](/recipes/selkies/selkies-labwc-nvidia/) — GPU streaming desktop (base nvidia), no openclaw/ollama/charly toolchain. -- [`/charly-distros:charly-fedora`](/recipes/distros/charly-fedora/) / [`/charly-coder:charly-arch`](/recipes/coder/charly-arch/) — root-mode charly toolchain WITHOUT a streaming desktop. - -## When to Use This Skill - -**MUST be invoked** when the task involves: - -- Building, deploying, or troubleshooting the `openclaw-desktop` box. -- Running `charly` verbs (image build, nested pods, rootless VMs) from inside a - streaming desktop. -- The OpenClaw gateway, AI CLIs, or a CPU Ollama running alongside a Wayland - streaming desktop in one box. -- The non-`--privileged` rootless-in-rootless nesting path on a CachyOS desktop. - -## Related - -- [`/charly-image:image`](/recipes/image/image/) — image family umbrella (`candy:` image entries with `base:`/`from:`, build/validate/inspect/list) -- [`/charly-check:check`](/recipes/check/check/) — declarative testing + the `check-openclaw-desktop-pod` R10 bed -- [`/charly-check:cdp`](/recipes/check/cdp/), [`/charly-check:wl`](/recipes/check/wl/) — desktop automation on this box -- [`/charly-core:charly-config`](/recipes/core/charly-config/) — deploy setup (tunnel, port remapping, multi-instance, encrypted volumes) diff --git a/src/content/docs/recipes/openclaw/openclaw-full-layer.md b/src/content/docs/recipes/openclaw/openclaw-full-layer.md deleted file mode 100644 index e3716f06..00000000 --- a/src/content/docs/recipes/openclaw/openclaw-full-layer.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: "openclaw-full-layer" -description: "Maximal OpenClaw deployment (gateway + browser + all feasible tools/skills)." ---- - - - -*Recipe card from the `charly-openclaw` plugin (Images — the deployable catalog).* - -# openclaw-full -- Maximal OpenClaw deployment - -## Candy Properties - -| Property | Value | -|----------|-------| -| Install files | `charly.yml` (metalayer, layers only) | -| Depends | none (composes other candies) | - -## Composed Candies - -This metalayer includes the following candies: - -- `openclaw` -- AI gateway -- `chrome` -- Google Chrome browser -- `claude-code` -- Claude Code CLI -- `codex` -- OpenAI Codex CLI -- `gemini` -- Google Gemini CLI -- `clawhub` -- ClawHub skill registry CLI -- `mcporter` -- MCP server CLI -- `oracle` -- Prompt bundling CLI -- `xurl` -- X/Twitter API CLI -- `summarize` -- URL/transcript extractor -- `playwright` -- Browser automation -- `blogwatcher` -- Blog/RSS feed monitor -- `gifgrep` -- GIF search and download -- `wacli` -- WhatsApp CLI -- `goplaces` -- Google Places API CLI -- `songsee` -- Audio spectrogram -- `sag` -- ElevenLabs TTS CLI -- `camsnap` -- Camera snapshot CLI -- `gogcli` -- Google Workspace CLI -- `ordercli` -- Food delivery order CLI -- `himalaya` -- Email CLI -- `uv` -- Python package manager -- `nano-pdf` -- PDF editing CLI -- `gh` -- GitHub CLI -- `tmux` -- Terminal multiplexer -- `ffmpeg` -- FFmpeg multimedia -- `ripgrep` -- Fast text search -- `sqlite` -- SQLite database CLI - -## Usage - -```yaml -# box charly.yml — composition is an inline candy: list in the body -openclaw-full-box: - candy: - base: fedora - candy: - - openclaw-full -``` - -## Used In Boxes - -- `openclaw-full` - -## Related Candies -- [`/charly-openclaw:openclaw`](/recipes/openclaw/openclaw/) — base gateway layer included in this metalayer -- [`/charly-selkies:sway-desktop-vnc`](/recipes/selkies/sway-desktop-vnc/) — desktop candy paired in sway-browser boxes - -## Related Commands -- [`/charly-automation:openclaw-deploy`](/recipes/automation/openclaw-deploy/) — gateway configuration, model auth, and channel setup -- [`/charly-build:build`](/recipes/build/build/) — builds the metalayer composition into a box -- [`/charly-core:charly-config`](/recipes/core/charly-config/) — sets up secrets and quadlets for openclaw-full boxes - -## When to Use This Skill - -Use when the user asks about: -- Full OpenClaw deployment with all tools -- The `openclaw-full` metalayer composition -- Which tools are included in the maximal OpenClaw box -- The `openclaw-full` candy - -## Related - -- [`/charly-image:layer`](/recipes/image/layer/) — candy authoring reference (`charly.yml` schema, plan steps, service declarations) -- [`/charly-check:check`](/recipes/check/check/) — declarative testing (`check:` block, `charly check box`, `charly check live`) diff --git a/src/content/docs/recipes/openclaw/openclaw-full-ml-layer.md b/src/content/docs/recipes/openclaw/openclaw-full-ml-layer.md deleted file mode 100644 index 895ffc82..00000000 --- a/src/content/docs/recipes/openclaw/openclaw-full-ml-layer.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "openclaw-full-ml-layer" -description: "OpenClaw full + ML tools (whisper, sherpa-onnx-tts, CUDA)." ---- - - - -*Recipe card from the `charly-openclaw` plugin (Images — the deployable catalog).* - -# openclaw-full-ml -- OpenClaw full + ML tools - -## Candy Properties - -| Property | Value | -|----------|-------| -| Install files | `charly.yml` (metalayer, layers only) | -| Depends | none (composes other candies) | - -## Composed Candies - -This metalayer extends `openclaw-full` with ML capabilities: - -- `openclaw-full` -- all OpenClaw tools -- `whisper` -- OpenAI Whisper speech-to-text (requires CUDA) -- `sherpa-onnx` -- Offline text-to-speech - -## Usage - -```yaml -# box charly.yml — composition is an inline candy: list in the body -openclaw-full-ml-box: - candy: - base: nvidia - candy: - - openclaw-full-ml -``` - -## Used In Boxes - - -## Related Candies -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) -- base composition with all OpenClaw tools -- [`/charly-tools:whisper`](/recipes/tools/whisper/) -- speech-to-text component -- [`/charly-tools:sherpa-onnx`](/recipes/tools/sherpa-onnx/) -- offline TTS component - -## Related Commands -- [`/charly-automation:openclaw-deploy`](/recipes/automation/openclaw-deploy/) -- gateway configuration and channel setup -- [`/charly-build:build`](/recipes/build/build/) -- build boxes composing this metalayer - -## When to Use This Skill - -Use when the user asks about: -- OpenClaw with ML/AI capabilities -- Speech-to-text and text-to-speech in OpenClaw -- CUDA-accelerated OpenClaw deployment -- The `openclaw-full-ml` candy - -## Related - -- [`/charly-image:layer`](/recipes/image/layer/) — candy authoring reference (`charly.yml` schema, plan steps, service declarations) -- [`/charly-check:check`](/recipes/check/check/) — declarative testing (`check:` block, `charly check box`, `charly check live`) diff --git a/src/content/docs/recipes/openclaw/openclaw-full.md b/src/content/docs/recipes/openclaw/openclaw-full.md deleted file mode 100644 index d9a9a67d..00000000 --- a/src/content/docs/recipes/openclaw/openclaw-full.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "openclaw-full" -description: "Headless OpenClaw with all tool candies." ---- - - - -*Recipe card from the `charly-openclaw` plugin (Images — the deployable catalog).* - -# openclaw-full - -Headless OpenClaw box with maximal tool/skill coverage. No desktop, no VNC. - -## Box Properties - -| Property | Value | -|----------|-------| -| Base | cachyos | -| Candies | agent-forwarding, openclaw-full | -| Platforms | linux/amd64 | -| Ports | 18789 (gateway) | -| Registry | ghcr.io/opencharly | - -## Full Candy Stack - -1. `cachyos` (external base, Arch-derived — pacman/AUR) -2. `openclaw-full` metalayer (no system browser): - - `openclaw` — AI gateway - - `claude-code` — Claude Code CLI - - the tool candies (codex, gemini, clawhub, mcporter, oracle, xurl, summarize, playwright, blogwatcher, gifgrep, wacli, goplaces, songsee, sag, camsnap, gogcli, ordercli, himalaya, uv, nano-pdf, gh, tmux, ffmpeg, ripgrep, sqlite) - -## Ports - -| Port | Service | Protocol | -|------|---------|----------| -| 18789 | OpenClaw gateway | HTTP | - -## Quick Start - -```bash -charly box build openclaw-full -charly config openclaw-full -charly start openclaw-full -``` - -## Key Candies - -- [`/charly-openclaw:openclaw-full`](/recipes/openclaw/openclaw-full/) — Metalayer composition (all tools) -- [`/charly-openclaw:openclaw`](/recipes/openclaw/openclaw/) — AI gateway service - -## Related Boxes - -- [`/charly-openclaw:openclaw`](/recipes/openclaw/openclaw/) — minimal (gateway only) - -## When to Use This Skill - -**MUST be invoked** when the task involves the openclaw-full box or the headless maximal OpenClaw deployment. - -## Related - -- [`/charly-image:image`](/recipes/image/image/) — image family umbrella (`candy:` image entries — those carrying `base:`/`from:` — in `charly.yml`, build/validate/inspect/list) -- [`/charly-build:build`](/recipes/build/build/) — the embedded build vocabulary (distros, builders, init-systems) diff --git a/src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-239-1640/charly-openclaw.md b/src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-239-1640/charly-openclaw.md deleted file mode 100644 index 355aa1bc..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-239-1640/charly-openclaw.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "charly-openclaw" -description: "Metadata concept candy owning the charly-openclaw skills whose names have no namesake candy (openclaw agent images)." ---- - - - -| | | -|---|---| -| **Version** | `2026.218.1200` | -| **Repo** | `box/github.com/opencharly/layer-charly-openclaw:v2026.239.1640` | - -Metadata concept candy owning the charly-openclaw skills whose names have no namesake candy (openclaw agent images). Owns its family's `skill:` kind entities (sibling nodes in this file) — the -the plugins→candies migration; candy/plugin-marketplace regenerates the marketplace -corpus (the standalone opencharly/marketplace repo) from them. - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `run` | this documentation-only candy ships no install content (it carries the family's skill/hook/marketplace entities); validate-satisfying no-op | -| `check` | the openclaw concept candy's skill entities are present and generated into the marketplace's openclaw/skills | diff --git a/src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-243-0950/charly-openclaw.md b/src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-243-0950/charly-openclaw.md deleted file mode 100644 index 54005682..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-layer-charly-openclaw-v2026-243-0950/charly-openclaw.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "charly-openclaw" -description: "Metadata concept candy owning the charly-openclaw skills whose names have no namesake candy (openclaw agent images)." ---- - - - -| | | -|---|---| -| **Version** | `2026.243.0909` | -| **Repo** | `box/github.com/opencharly/layer-charly-openclaw:v2026.243.0950` | - -Metadata concept candy owning the charly-openclaw skills whose names have no namesake candy (openclaw agent images). Owns its family's `skill:` kind entities (sibling nodes in this file) — the -the plugins→candies migration; candy/plugin-marketplace regenerates the marketplace -corpus (the standalone opencharly/marketplace repo) from them. - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `run` | this documentation-only candy ships no install content (it carries the family's skill/hook/marketplace entities); validate-satisfying no-op | -| `check` | the openclaw concept candy's skill entities are present and generated into the marketplace's openclaw/skills | diff --git a/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-238-2103/openclaw-full.md b/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-238-2103/openclaw-full.md deleted file mode 100644 index 254c8b8f..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-238-2103/openclaw-full.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "openclaw-full" -description: "Maximal headless OpenClaw deployment — gateway plus all feasible CLI tools/skills, no system Chrome/CDP openclaw-full is a pure meta-composition candy: it installs nothing of its own and instead composes a large set of candies — the openclaw gateway, the claude-code CLI, and the tool candies (codex, gemini, clawhub, mcporter, oracle, xurl, summarize, playwright, ripgrep, sqlite, tmux, ffmpeg, gh, uv, himalaya, …)." ---- - - - -| | | -|---|---| -| **Version** | `2026.200.1600` | -| **Repo** | `box/github.com/opencharly/layer-openclaw-full:v2026.238.2103` | - -Maximal headless OpenClaw deployment — gateway plus all feasible CLI tools/skills, no system Chrome/CDP -openclaw-full is a pure meta-composition candy: it installs nothing of -its own and instead composes a large set of candies — the openclaw gateway, the -claude-code CLI, and the tool candies (codex, gemini, clawhub, mcporter, -oracle, xurl, summarize, playwright, ripgrep, sqlite, tmux, ffmpeg, gh, -uv, himalaya, …). The observable effect of the composition is that every -composed tool's key artifact lands in ONE image: the openclaw / mcporter -binaries under ~/.npm-global/bin, the claude binary under /usr/local/bin -(native installer, relocated at build time so it survives the deploy-time -home-volume mount), uv under /usr/local/bin, and rg / sqlite3 / tmux / -ffmpeg / gh under /usr/bin. The scenarios and check -block assert that cross-section — they FAIL if any composed candy is -dropped from the metalayer. The gateway's own port reachability is -already checked by the composed openclaw candy and rides along. - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `check` | the claude-code CLI is composed into the image under the native install location | -| `check` | claude --version exits cleanly and prints the Claude Code banner | -| `check` | the mcporter MCP CLI is composed into the image | -| `check` | ripgrep's rg binary is present from the composed ripgrep candy | -| `check` | the sqlite3 shell is present from the composed sqlite candy | -| `check` | tmux is present from the composed tmux candy | -| `check` | ffmpeg is present from the composed ffmpeg candy | -| `check` | the GitHub CLI gh is present from the composed gh candy | -| `check` | the uv Python package manager is composed into the image at /usr/local/bin/uv | -| `agent-check` | the running OpenClaw gateway exposes the bundled CLI tools to agent requests without relying on a system browser | -| `check` | package=ripgrep | -| `check` | file=/usr/bin/git | -| `check` | file=/usr/local/bin/uvx | diff --git a/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-240-0119/openclaw-full.md b/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-240-0119/openclaw-full.md deleted file mode 100644 index 97a0e02c..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-240-0119/openclaw-full.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "openclaw-full" -description: "Maximal headless OpenClaw deployment — gateway plus all feasible CLI tools/skills, no system Chrome/CDP openclaw-full is a pure meta-composition candy: it installs nothing of its own and instead composes a large set of candies — the openclaw gateway, the claude-code CLI, and the tool candies (codex, gemini, clawhub, mcporter, oracle, xurl, summarize, playwright, ripgrep, sqlite, tmux, ffmpeg, gh, uv, himalaya, …)." ---- - - - -| | | -|---|---| -| **Version** | `2026.200.1600` | -| **Repo** | `box/github.com/opencharly/layer-openclaw-full:v2026.240.0119` | - -Maximal headless OpenClaw deployment — gateway plus all feasible CLI tools/skills, no system Chrome/CDP -openclaw-full is a pure meta-composition candy: it installs nothing of -its own and instead composes a large set of candies — the openclaw gateway, the -claude-code CLI, and the tool candies (codex, gemini, clawhub, mcporter, -oracle, xurl, summarize, playwright, ripgrep, sqlite, tmux, ffmpeg, gh, -uv, himalaya, …). The observable effect of the composition is that every -composed tool's key artifact lands in ONE image: the openclaw / mcporter -binaries under ~/.npm-global/bin, the claude binary under /usr/local/bin -(native installer, relocated at build time so it survives the deploy-time -home-volume mount), uv under /usr/local/bin, and rg / sqlite3 / tmux / -ffmpeg / gh under /usr/bin. The scenarios and check -block assert that cross-section — they FAIL if any composed candy is -dropped from the metalayer. The gateway's own port reachability is -already checked by the composed openclaw candy and rides along. - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `check` | the claude-code CLI is composed into the image under the native install location | -| `check` | claude --version exits cleanly and prints the Claude Code banner | -| `check` | the mcporter MCP CLI is composed into the image | -| `check` | ripgrep's rg binary is present from the composed ripgrep candy | -| `check` | the sqlite3 shell is present from the composed sqlite candy | -| `check` | tmux is present from the composed tmux candy | -| `check` | ffmpeg is present from the composed ffmpeg candy | -| `check` | the GitHub CLI gh is present from the composed gh candy | -| `check` | the uv Python package manager is composed into the image at /usr/local/bin/uv | -| `agent-check` | the running OpenClaw gateway exposes the bundled CLI tools to agent requests without relying on a system browser | -| `check` | package=ripgrep | -| `check` | file=/usr/bin/git | -| `check` | file=/usr/local/bin/uvx | diff --git a/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-247-0718/openclaw-full.md b/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-247-0718/openclaw-full.md deleted file mode 100644 index 981b8a76..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-layer-openclaw-full-v2026-247-0718/openclaw-full.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "openclaw-full" -description: "Maximal headless OpenClaw deployment (OpenClaw 2.0 gateway, npm openclaw@2026.8.x) — gateway plus all feasible CLI tools/skills, no system Chrome/CDP openclaw-full is a pure meta-composition candy: it installs nothing of its own and instead composes a large set of candies — the openclaw gateway, the claude-code CLI, and the tool candies (codex, gemini, clawhub, mcporter, oracle, xurl, summarize, playwright, ripgrep, sqlite, tmux, ffmpeg, gh, uv, himalaya, …)." ---- - - - -| | | -|---|---| -| **Version** | `2026.246.0300` | -| **Repo** | `box/github.com/opencharly/layer-openclaw-full:v2026.247.0718` | - -Maximal headless OpenClaw deployment (OpenClaw 2.0 gateway, npm openclaw@2026.8.x) — gateway plus all feasible CLI tools/skills, no system Chrome/CDP -openclaw-full is a pure meta-composition candy: it installs nothing of -its own and instead composes a large set of candies — the openclaw gateway, the -claude-code CLI, and the tool candies (codex, gemini, clawhub, mcporter, -oracle, xurl, summarize, playwright, ripgrep, sqlite, tmux, ffmpeg, gh, -uv, himalaya, …). The observable effect of the composition is that every -composed tool's key artifact lands in ONE image: the openclaw / mcporter -binaries under ~/.npm-global/bin, the claude binary under /usr/local/bin -(native installer, relocated at build time so it survives the deploy-time -home-volume mount), uv under /usr/local/bin, and rg / sqlite3 / tmux / -ffmpeg / gh under /usr/bin. The scenarios and check -block assert that cross-section — they FAIL if any composed candy is -dropped from the metalayer. The gateway's own port reachability is -already checked by the composed openclaw candy and rides along. - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `check` | the claude-code CLI is composed into the image under the native install location | -| `check` | claude --version exits cleanly and prints the Claude Code banner | -| `check` | the mcporter MCP CLI is composed into the image | -| `check` | ripgrep's rg binary is present from the composed ripgrep candy | -| `check` | the sqlite3 shell is present from the composed sqlite candy | -| `check` | tmux is present from the composed tmux candy | -| `check` | ffmpeg is present from the composed ffmpeg candy | -| `check` | the GitHub CLI gh is present from the composed gh candy | -| `check` | the uv Python package manager is composed into the image at /usr/local/bin/uv | -| `agent-check` | the running OpenClaw gateway exposes the bundled CLI tools to agent requests without relying on a system browser | -| `check` | package=ripgrep | -| `check` | file=/usr/bin/git | -| `check` | file=/usr/local/bin/uvx | diff --git a/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-237-558/openclaw.md b/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-237-558/openclaw.md deleted file mode 100644 index 245acc26..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-237-558/openclaw.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "openclaw" -description: "Headless OpenClaw AI gateway service on port 18789 Installs the openclaw npm package globally (package.json -> npm install -g) so the gateway binary lands at ~/.npm-global/bin/openclaw, then runs it as the supervised `openclaw` service (`openclaw gateway --port 18789 --allow-unconfigured --bind loopback` — loopback bind needs no auth and matches the socat relay; unconfigured lets the headless gateway start before any operator setup)." ---- - - - -| | | -|---|---| -| **Version** | `2026.200.0158` | -| **Repo** | `box/github.com/opencharly/pod-openclaw:v2026.237.558` | - -Headless OpenClaw AI gateway service on port 18789 -Installs the openclaw npm package globally (package.json -> -npm install -g) so the gateway binary lands at -~/.npm-global/bin/openclaw, then runs it as the supervised -`openclaw` service (`openclaw gateway --port 18789 ---allow-unconfigured --bind loopback` — loopback bind needs no -auth and matches the socat relay; unconfigured lets the headless -gateway start before any operator setup). socat -relays the loopback-bound gateway onto the container interface -and a `data` volume persists ~/.openclaw. Binary presence, the -supervised service, and the reachable port are all verifiable. - -## Services - -- `openclaw` - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `check` | the openclaw gateway binary is installed into the npm global bin | -| `check` | the openclaw gateway reports the exact security-patched package version | -| `check` | the openclaw gateway runs as a supervised service | -| `check` | the running gateway accepts a TCP connection on its published port 18789 | diff --git a/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-239-1639/openclaw.md b/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-239-1639/openclaw.md deleted file mode 100644 index 703e371a..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-239-1639/openclaw.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "openclaw" -description: "Headless OpenClaw AI gateway service on port 18789 Installs the openclaw npm package globally (package.json -> npm install -g) so the gateway binary lands at ~/.npm-global/bin/openclaw, then runs it as the supervised `openclaw` service (`openclaw gateway --port 18789 --allow-unconfigured --bind loopback` — loopback bind needs no auth and matches the socat relay; unconfigured lets the headless gateway start before any operator setup)." ---- - - - -| | | -|---|---| -| **Version** | `2026.200.0158` | -| **Repo** | `box/github.com/opencharly/pod-openclaw:v2026.239.1639` | - -Headless OpenClaw AI gateway service on port 18789 -Installs the openclaw npm package globally (package.json -> -npm install -g) so the gateway binary lands at -~/.npm-global/bin/openclaw, then runs it as the supervised -`openclaw` service (`openclaw gateway --port 18789 ---allow-unconfigured --bind loopback` — loopback bind needs no -auth and matches the socat relay; unconfigured lets the headless -gateway start before any operator setup). socat -relays the loopback-bound gateway onto the container interface -and a `data` volume persists ~/.openclaw. Binary presence, the -supervised service, and the reachable port are all verifiable. - -## Services - -- `openclaw` - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `check` | the openclaw gateway binary is installed into the npm global bin | -| `check` | the openclaw gateway reports the exact security-patched package version | -| `check` | the openclaw gateway runs as a supervised service | -| `check` | the running gateway accepts a TCP connection on its published port 18789 | diff --git a/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-246-2119/openclaw.md b/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-246-2119/openclaw.md deleted file mode 100644 index f8d39ee2..00000000 --- a/src/content/docs/reference/candy/github-com-opencharly-pod-openclaw-v2026-246-2119/openclaw.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "openclaw" -description: "Headless OpenClaw AI gateway service on port 18789 (OpenClaw 2.0, npm openclaw@2026.9.1 — the current latest stable)." ---- - - - -| | | -|---|---| -| **Version** | `2026.246.0300` | -| **Repo** | `box/github.com/opencharly/pod-openclaw:v2026.246.2119` | - -Headless OpenClaw AI gateway service on port 18789 (OpenClaw 2.0, -npm openclaw@2026.9.1 — the current latest stable). Installs the openclaw npm package globally -(package.json -> npm install -g) so the gateway binary lands at -~/.npm-global/bin/openclaw, then runs it as the supervised -`openclaw` service (`openclaw gateway --port 18789 ---allow-unconfigured --bind loopback` — loopback bind needs no -auth and matches the socat relay; unconfigured lets the headless -gateway start before any operator setup). socat -relays the loopback-bound gateway onto the container interface -and a `data` volume persists ~/.openclaw. Binary presence, the -supervised service, the reachable port, and the gateway's own -/healthz liveness endpoint are all verifiable. - -## Services - -- `openclaw` - -## Acceptance plan - -This candy's `plan:` — the runnable spec `charly check` executes against a live deployment. `check:` steps are idempotent probes; `run:` steps change state. - -| Intent | Step | -|---|---| -| `check` | the openclaw gateway binary is installed into the npm global bin | -| `check` | the openclaw gateway reports the exact security-patched package version | -| `check` | the running gateway's /healthz liveness endpoint responds 200 (OpenClaw 2.0 container probe) | -| `check` | the openclaw gateway runs as a supervised service | -| `check` | the running gateway accepts a TCP connection on its published port 18789 |