#I don't understand how npm or pnpm is an essential part of plugin / skill installation (or is it)?

1 messages · Page 1 of 1 (latest)

static idol
#

I am coming from a docker installation point of view - when installing OpenClaw with the docker method, onboarding runs through openclaw-gateway directly when the gateway itself still didn't exist. Therefore any attempt to setup skills during onboarding would fail (or at least that's the way I understand it). This makes me think - is my plugin installation mechanism / skills installation mechanism broken somehow because I run a docker container? If npm / pnpm is required for plugins/skills, have they even been properly configured for my docker setup? Please clarify and give me peace of mind. Thanks @molten valley

stable bridgeBOT
terse locustBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

static idol
#

... am I getting abandoned by @molten valley ?

molten valleyBOT
#

Nope, not abandoned 🙂 I checked the docs and code.

Short version: your Docker setup is not inherently breaking skills/plugins.

What’s going on:

  • The Docker flow is intentionally split. Before the gateway container is up, onboarding/config writes run through openclaw-gateway directly. After startup, openclaw-cli is the normal tool. That is the designed Docker path, not a broken one.
    Docs: https://docs.openclaw.ai/install/docker

  • Skills during onboarding do not require an already-running gateway. The onboarding skills step calls the installer logic directly, it does not depend on a live gateway RPC round-trip.

  • Skills and plugins are different:

    • openclaw skills install <slug> mainly downloads a skill folder into the workspace. That does not inherently need npm/pnpm.
    • Some skills have dependency installers (brew, node, uv, go, download). If a skill uses a node installer, then OpenClaw uses the configured node manager for that step.
    • openclaw plugins install <package> does involve package installation, because plugins are code packages.
      Docs: https://docs.openclaw.ai/cli/skills
      Docs: https://docs.openclaw.ai/cli/plugins
#
  • In Docker, npm/pnpm run inside the container, not on your host. The runtime image is Node-based, so npm is there, and the Docker image explicitly keeps pnpm available too.

So the real answer is:

No, Docker does not make the plugin/skill install mechanism fundamentally broken.
If something fails, it’s more likely a specific dependency/install recipe, not “onboarding happened before the gateway existed.”

If you want a quick sanity check, run:

docker compose run --rm openclaw-cli skills check
docker compose run --rm openclaw-cli plugins doctor
docker compose run --rm openclaw-cli status --all

If any of those fail, paste the output and also:

#
docker compose run --rm openclaw-cli --version

Glad that helped? If this clears it up, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it.

static idol
#

my OpenClaw docker environment has just node, but not brew, uv, go, nor download. Am I toast?

molten valleyBOT
#

No, you’re not toast.

The important bit is this:

  • brew / uv / go are not global prerequisites
  • they are just possible installer backends for certain skills
  • “download” is not a binary you need installed. That installer type is handled by OpenClaw itself

So with a Docker image that has Node:

  • Plugins: generally fine, because plugin install is a Node/package flow
  • openclaw skills install <slug>: fine, because that mostly downloads a skill folder
  • Skills with node installers: fine
  • Skills with download installers: usually fine
  • Skills with brew / uv / go installers: those specific auto-installs will not work until you add those runtimes to the container

One more subtlety:

#

Even if a skill installs cleanly, if that skill expects a binary on PATH at runtime, that binary has to exist inside the container, not just on your host.

So the real answer is:

Your Docker setup is not broken.
It just means your container currently supports the Node-based skill/plugin path, not every possible skill installer path.

Quick sanity check:

docker compose run --rm openclaw-cli skills check
docker compose run --rm openclaw-cli skills list --eligible

That will tell you which skills are actually usable in your current container.

If you paste that output, I can tell you exactly which ones are blocked by missing brew/uv/go and which ones are totally fine.

static idol
#

so I can still utilize clawhub to install plugins? Sorry I have never tried out clawhub before, don't even know what it is actually.

molten valleyBOT
#

Yep, you can still use ClawHub from Docker.

Very short version:

  • ClawHub is OpenClaw’s public registry/discovery hub for skills and many community plugins
  • you usually do not install “ClawHub” itself
  • the normal openclaw CLI talks to it for you

So in Docker:

docker compose run --rm openclaw-cli skills search
docker compose run --rm openclaw-cli skills install <skill-slug>
docker compose run --rm openclaw-cli plugins install <package-name>

A couple of important details:

#
  • Skills: openclaw skills install uses ClawHub directly
  • Plugins: openclaw plugins install <package> checks ClawHub first, then falls back to npm if needed

So yes, your Docker setup can still use that flow just fine.

If it helps, think of it like this:

  • ClawHub = the catalog / registry
  • openclaw-cli = the installer you run
  • Docker = just where that installer is running

Docs:

#

If you want, I can give you 2 concrete examples next:

  1. installing a skill from ClawHub in Docker
  2. installing a plugin in Docker
static idol
#

yes show me the examples

molten valleyBOT
#

Yep, here are two clean Docker examples.

1) Install a skill from ClawHub

Search first:

docker compose run --rm openclaw-cli skills search weather

Install one of the results, for example weather:

docker compose run --rm openclaw-cli skills install weather

Inspect it:

#
docker compose run --rm openclaw-cli skills info weather
docker compose run --rm openclaw-cli skills check

After that, start a new chat/session so OpenClaw picks the skill up cleanly.


2) Install a plugin in Docker

Example plugin from the docs:

docker compose run --rm openclaw-cli plugins install openclaw-codex-app-server
#

If you want to force ClawHub-only instead of “ClawHub first, npm fallback”:

docker compose run --rm openclaw-cli plugins install clawhub:openclaw-codex-app-server

Then verify it’s there:

docker compose run --rm openclaw-cli plugins list --verbose
docker compose run --rm openclaw-cli plugins inspect openclaw-codex-app-server

Mental model

#
  • ClawHub website = browse/discover stuff
  • openclaw-cli = actually install it
  • Docker = where that install command runs

So yes, you can absolutely use ClawHub with your Docker setup.

If you want, next I can show:

  1. how to tell whether a skill is blocked by missing deps, or
  2. how to tell whether a plugin needs extra config after install.
static idol
#

how do you UNINSTALL a plugin?

molten valleyBOT
#

In Docker, this is the basic uninstall flow:

docker compose run --rm openclaw-cli plugins list --verbose
docker compose run --rm openclaw-cli plugins uninstall <plugin-id>

Useful variants:

docker compose run --rm openclaw-cli plugins uninstall <plugin-id> --dry-run
docker compose run --rm openclaw-cli plugins uninstall <plugin-id> --keep-files

So:

  • plugins list --verbose = find the exact plugin id
#
  • plugins uninstall <id> = remove it
  • --dry-run = preview only
  • --keep-files = remove it from OpenClaw config/state, but leave files on disk

Docs: https://docs.openclaw.ai/cli/plugins

If you want, paste your plugins list --verbose output and I can point to the exact id to remove.

static idol
#
node@7a440ac70693:/app$ openclaw plugins install openclaw-codex-app-server

🦞 OpenClaw 2026.3.28 (unknown) — Gateway online—please keep hands, feet, and appendages inside the shell at all times.

Resolving clawhub:openclaw-codex-app-server…
ClawHub code-plugin openclaw-codex-app-server@0.5.0 channel=community verification=source-linked
Compatibility: pluginApi=>=2026.3.22 minGateway=2026.3.22
ClawHub package "openclaw-codex-app-server" is community; review source and verification before enabling.
ClawHub /api/v1/packages/openclaw-codex-app-server/download failed (429): Rate limit exceeded
node@7a440ac70693:/app$
molten valleyBOT
#

That error is not your Docker setup breaking.

What happened:

  • OpenClaw found the plugin on ClawHub
  • compatibility looks fine (minGateway=2026.3.22, and you’re on 2026.3.28)
  • the install then failed because ClawHub rate-limited the download (429)

So the problem is basically: ClawHub said “too many requests”, not “your container can’t install plugins.”

One subtle thing from the docs: for plugin installs, OpenClaw only auto-falls back to npm when ClawHub does not have the package or version. A 429 does not trigger npm fallback.

Easiest fix

Wait a bit, then retry:

#
openclaw plugins install openclaw-codex-app-server

If you want a workaround right now

Since that plugin is also on npm, you can pack it from npm and install the local archive:

npm pack openclaw-codex-app-server
openclaw plugins install ./openclaw-codex-app-server-0.5.0.tgz

Use the exact .tgz filename that npm pack prints.

Then verify:

#
openclaw plugins list --verbose

So, peace of mind version:

not a Docker problem, not a missing npm/pnpm problem, not a broken plugin system
just a ClawHub 429.

Docs: https://docs.openclaw.ai/cli/plugins

If you want, I can show you the safest exact Docker command sequence for the npm pack workaround too.

static idol
#

I've read online guides that say you need to do clawhub login first to avoid 429, but my docker container does not have clawhub

molten valleyBOT
#

Right, and this is the subtle part:

you do not need the separate clawhub binary for OpenClaw itself to use ClawHub.

The built-in OpenClaw ClawHub client can already use auth if you provide it. It checks:

  • OPENCLAW_CLAWHUB_TOKEN
  • CLAWHUB_TOKEN
  • CLAWHUB_AUTH_TOKEN

and it can also read a ClawHub config file if one exists.

So if authenticated ClawHub access gives you better rate limits, you can do this without installing clawhub:

export CLAWHUB_TOKEN="your_token_here"
#
openclaw plugins install openclaw-codex-app-server

Or in Docker Compose terms, set it on the container/service environment.

Important distinction

  • clawhub CLI = separate tool for ClawHub account workflows like login/publish/sync
  • openclaw plugins install ... = OpenClaw’s own installer, which can still use a ClawHub token

So the missing clawhub binary is not the reason your install failed.

Practical recommendation

If you don’t already have a ClawHub token, the easiest paths are still:

#
  1. wait and retry after the 429 cools down, or
  2. use the npm tarball workaround I showed earlier

If you do have a ClawHub token, set CLAWHUB_TOKEN in the container and retry.

Docs: https://docs.openclaw.ai/tools/clawhub

If you want, I can show the exact docker compose env snippet for adding CLAWHUB_TOKEN cleanly.