DEV Community

Fenju Fu
Fenju Fu

Posted on

Run SkillHub locally with Docker Compose, then choose the right CLI registry

SkillHub can be used in two related but distinct ways: as a registry you run yourself, and through a CLI that can target either that local instance or a public registry. This tutorial documents a real run of both paths and keeps the boundary visible throughout.

The screenshots come from the running software or from archived output of the official CLI. The local Compose result is not inferred from the public site, and the authenticated public-registry install is not presented as a local anonymous install.

1. Start the local stack

The run used SkillHub's release Compose file in a dedicated project named skillhub-t65:

docker compose --project-name skillhub-t65 `
  --env-file runtime/tutorial.env `
  -f compose.release.yml up -d --wait
Enter fullscreen mode Exit fullscreen mode

Docker Compose v2.40.0-desktop.1 reported five services: postgres, redis, skill-scanner, server, and web. Every container reached healthy.

The verification was then performed through the exposed endpoints:

  • http://localhost:8088 returned HTTP 200.
  • http://localhost:18081 returned HTTP 200 with {"status":"UP"}.

Self-hosted SkillHub Web UI in English

The screenshot establishes that the Web UI was reachable from the self-hosted instance. Numbers or sample copy visible in that local build are not used as adoption claims.

2. Verify the official CLI

The recorded command:

npx @astron-team/skillhub@latest version
Enter fullscreen mode Exit fullscreen mode

returned SkillHub CLI 0.1.9 in the captured run. The tutorial then executed real search, install, and inventory commands.

Official SkillHub CLI real-run evidence

The public-registry search was explicit:

npx @astron-team/skillhub@latest search pdf `
  --registry https://skill.xfyun.cn --limit 5
Enter fullscreen mode Exit fullscreen mode

The command returned live skills from the public registry. The successful install was also performed against that public registry from an authenticated session and written to a dedicated directory:

npx @astron-team/skillhub@latest install `
  financial-filing-risk-insight `
  --registry https://skill.xfyun.cn `
  --dir ./runtime/installed-skills --force

 npx @astron-team/skillhub@latest list `
  --dir ./runtime/installed-skills
Enter fullscreen mode Exit fullscreen mode

The final inventory reported global/financial-filing-risk-insight@1.0.0 with status ok.

3. Switch to the local registry explicitly

A second search pointed the same CLI at the self-hosted instance:

npx @astron-team/skillhub@latest search agent `
  --registry http://localhost:8088 --limit 5
Enter fullscreen mode Exit fullscreen mode

That local search returned global/agentguard 1.1. An anonymous install against the local registry then returned an authentication-required response and suggested skillhub login. That is the expected security boundary, not a failed tutorial.

This distinction matters:

Operation Registry Authentication observed Result
Public search https://skill.xfyun.cn not required for search live results
Public install https://skill.xfyun.cn authenticated session installed and listed
Local search http://localhost:8088 not required for search global/agentguard
Local install http://localhost:8088 anonymous login required

Why the explicit registry flag helps

The safest mental model is that the CLI is a client and the registry is a target. A local Compose deployment does not silently replace the public service. When moving between development, team, and public environments, choose the target deliberately, keep installation directories isolated, and verify the result with list.

For a team deployment, also add environment-specific secrets, TLS, access controls, backups, image pinning, monitoring, and upgrade testing before treating the local tutorial as production guidance.

Watch the bilingual tutorials

Sources

Top comments (0)