{"id":46069859,"url":"https://github.com/weak-fox/openclaw-offline-seed","last_synced_at":"2026-05-30T23:01:19.536Z","repository":{"id":340893370,"uuid":"1168065088","full_name":"weak-fox/openclaw-offline-seed","owner":"weak-fox","description":"Config-driven offline plugin and skill seeding for OpenClaw runtimes (Kubernetes, Helm, Docker).","archived":false,"fork":false,"pushed_at":"2026-04-21T21:12:35.000Z","size":54,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T23:22:47.420Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/weak-fox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-27T01:18:28.000Z","updated_at":"2026-04-21T21:12:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/weak-fox/openclaw-offline-seed","commit_stats":null,"previous_names":["weak-fox/openclaw-offline-seed"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/weak-fox/openclaw-offline-seed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weak-fox%2Fopenclaw-offline-seed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weak-fox%2Fopenclaw-offline-seed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weak-fox%2Fopenclaw-offline-seed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weak-fox%2Fopenclaw-offline-seed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weak-fox","download_url":"https://codeload.github.com/weak-fox/openclaw-offline-seed/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weak-fox%2Fopenclaw-offline-seed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32201871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T20:19:26.138Z","status":"ssl_error","status_checked_at":"2026-04-23T20:19:23.520Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-01T13:06:55.275Z","updated_at":"2026-05-05T23:05:35.435Z","avatar_url":"https://github.com/weak-fox.png","language":"Shell","funding_links":[],"categories":["Skills \u0026 Plugins"],"sub_categories":["Notable Skills \u0026 Plugins"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/banner.svg\" alt=\"openclaw-offline-seed banner\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/icon.svg\" alt=\"openclaw-offline-seed premium icon\" width=\"160\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eConfig-driven offline plugin and skill seeding for OpenClaw runtimes.\u003c/strong\u003e\n\u003c/p\u003e\n\n[![CI](https://github.com/weak-fox/openclaw-offline-seed/actions/workflows/ci.yml/badge.svg)](https://github.com/weak-fox/openclaw-offline-seed/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/weak-fox/openclaw-offline-seed)](https://github.com/weak-fox/openclaw-offline-seed/releases)\n[![License](https://img.shields.io/github/license/weak-fox/openclaw-offline-seed)](https://github.com/weak-fox/openclaw-offline-seed/blob/main/LICENSE)\n\n---\n\n\u003e **`openclaw-offline-seed`** is a companion image project for OpenClaw offline deployments.\n\u003e \n\u003e It builds a seed image that contains pre-installed plugins and skills, then copies them into the OpenClaw runtime home directory (`OPENCLAW_HOME_DIR`, default: `/home/node/.openclaw`) before OpenClaw starts.\n\nThis project is not tied to one chart. You can integrate it with:\n\n- ☸️ Any Kubernetes Deployment/StatefulSet\n- ⛵ Any Helm chart\n- 🐳 Docker run / Docker Compose\n\n## 📦 What gets seeded\n\n- `extensions/*` (plugins)\n- `workspace/skills/*` (skills)\n\n## 🏠 Runtime home path\n\n`seed-init.sh` writes into `OPENCLAW_HOME_DIR`.\n\n- If `OPENCLAW_HOME_DIR` is not set, it defaults to `/home/node/.openclaw`.\n- You can set it to any path, as long as seed and runtime use the same mounted directory.\n- Keep these three values aligned:\n  1. `OPENCLAW_HOME_DIR` in the seed container\n  2. Seed container volume mount path\n  3. OpenClaw runtime volume mount/home path\n\n## ⚙️ Configure install list\n\nEdit [`config/seed-config.json`](./config/seed-config.json):\n\n```json\n{\n  \"plugins\": [\n    { \"spec\": \"openclaw-mcp-adapter\", \"enabled\": true }\n  ],\n  \"skills\": [\n    { \"slug\": \"weather\", \"enabled\": true }\n  ]\n}\n```\n\n**Supported item formats:**\n\n- **`plugins`**: `\"\u003cspec\u003e\"` or `{ \"spec\": \"\u003cspec\u003e\", \"enabled\": true }`\n- **`skills`**: `\"\u003cslug\u003e\"` or `{ \"slug\": \"\u003cslug\u003e\", \"enabled\": true }`\n\n\u003e 💡 `spec` is passed directly to `openclaw plugins install`, so you can use npm specs, local paths, or tarballs.\n\nSchema reference: [`config/seed-config.schema.json`](./config/seed-config.schema.json)\n\n## 📁 Optional vendoring for strict offline builds\n\nIf you do not want build-time network installs, vendor local content:\n\n- `plugins/\u003cplugin-id\u003e/...`\n- `skills/\u003cskill-name\u003e/...`\n\nThose directories are copied directly into the seed payload.\n\n## 🏗️ Build and push\n\n```bash\ncd openclaw-offline-seed\n\nIMAGE=REGISTRY/openclaw-offline-seed:v1 \\\nOPENCLAW_IMAGE=REGISTRY/openclaw:2026.3.13-1 \\\nCONFIG_PATH=config/seed-config.json \\\n./build.sh\n\ndocker push REGISTRY/openclaw-offline-seed:v1\n```\n\n## ⛵ Integration: Helm charts (generic)\n\nIf your chart supports overriding init containers, inject one seed init container that:\n\n- Uses image `REGISTRY/openclaw-offline-seed:v1`\n- Runs `/usr/local/bin/seed-init.sh`\n- Mounts the same persistent data volume as the OpenClaw runtime at `OPENCLAW_HOME_DIR`\n\n\u003e ⚠️ The concrete values path differs across charts, so this project does not assume a specific chart structure.\n\u003e Use the Kubernetes snippet below as the source of truth.\n\n## ☸️ Integration: generic Kubernetes\n\nUse an init container that mounts the same OpenClaw data volume and runs `/usr/local/bin/seed-init.sh`.\n\n📝 Example manifest snippet: [`examples/kubernetes-init-container.yaml`](./examples/kubernetes-init-container.yaml)\n\n**Key points:**\n\n- Mount the same PVC to both the seed init container and OpenClaw container\n- Set `OPENCLAW_HOME_DIR` to the runtime home path you use\n- Set OpenClaw plugin loading to preinstalled mode in your runtime config\n\n\u003e ⚠️ If you use `--bind lan` for quick verification in Kubernetes, you may use the same\n\u003e `dangerouslyAllowHostHeaderOriginFallback` startup shortcut shown below.\n\u003e This is for verification/testing only; production should use `gateway.controlUi.allowedOrigins`.\n\n## 🐳 Integration: Docker\n\nUse a one-shot seed container against a shared named volume, then start OpenClaw with the same volume.\n\n```bash\ndocker volume create openclaw-data\nOPENCLAW_HOME_DIR=/home/node/.openclaw  # change if your runtime uses a different home path\n\n# 1. Run the seed container\ndocker run --rm \\\n  -e OPENCLAW_HOME_DIR=\"$OPENCLAW_HOME_DIR\" \\\n  -v openclaw-data:\"$OPENCLAW_HOME_DIR\" \\\n  REGISTRY/openclaw-offline-seed:v1\n\n# 2. Start OpenClaw runtime\ndocker run -d --name openclaw \\\n  -p 18789:18789 \\\n  -v openclaw-data:\"$OPENCLAW_HOME_DIR\" \\\n  REGISTRY/openclaw:2026.3.13-1 \\\n  sh -lc 'node openclaw.mjs config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true \u0026\u0026 node openclaw.mjs gateway --bind lan --port 18789 --allow-unconfigured'\n```\n\n📝 Docker Compose example: [`examples/docker-compose.yaml`](./examples/docker-compose.yaml)\n\n\u003e ⚠️ The startup command above is for **verification/testing only**.\n\u003e For production, configure `gateway.controlUi.allowedOrigins` and follow OpenClaw security guidance:\n\u003e - https://docs.openclaw.ai/web/control-ui\n\u003e - https://docs.openclaw.ai/cli/security\n\n## ✅ Verify runtime state\n\n```bash\nOPENCLAW_HOME_DIR=/home/node/.openclaw\n\n# Check seeded plugins\nkubectl -n \u003cnamespace\u003e exec \u003copenclaw-pod-or-deploy\u003e -- sh -lc \\\n  \"ls -la ${OPENCLAW_HOME_DIR}/extensions\"\n\n# Check seeded skills\nkubectl -n \u003cnamespace\u003e exec \u003copenclaw-pod-or-deploy\u003e -- sh -lc \\\n  \"ls -la ${OPENCLAW_HOME_DIR}/workspace/skills\"\n```\n\n## 📌 Notes\n\n- Runtime can be fully offline when both OpenClaw and seed images are in your private registry.\n- If plugin entry id in `openclaw.json` is not `openclaw-mcp-adapter`, update your config accordingly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweak-fox%2Fopenclaw-offline-seed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweak-fox%2Fopenclaw-offline-seed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweak-fox%2Fopenclaw-offline-seed/lists"}