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
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:8088returned HTTP 200. -
http://localhost:18081returned HTTP 200 with{"status":"UP"}.
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
returned SkillHub CLI 0.1.9 in the captured run. The tutorial then executed real search, install, and inventory commands.
The public-registry search was explicit:
npx @astron-team/skillhub@latest search pdf `
--registry https://skill.xfyun.cn --limit 5
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
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
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
- Chinese: 60秒跑通 SkillHub:本地 Docker Compose + CLI Registry
- English: Run SkillHub in 60 Seconds: Local Compose + CLI Registries


Top comments (0)