Aleph
Concepts

ClawHub

Historical reference for ClawHub (clawhub.ai), the OpenClaw skill registry whose HTTP client has since been retired from Aleph.

Status (2026-07): ClawHub is no longer reachable as a first-class source. The dedicated src/clawhub/ module has been retired; the Settings tab that pointed at it was removed and folded into Settings → Advanced. Browsing, searching, and installing ClawHub content now happens through the unified Extensions Store, which fronts the aleph-hub catalog (https://hub.heyaleph.com/catalog.json) plus the Claude / Aleph plugin marketplaces, the Official MCP Registry, and the Docker MCP Catalog. The only place clawhub appears in current source is as a via provenance label on a HubCatalog entry (when an artifact traces back to its original OpenClaw upstream) and as the OpenClaw ClawHub SKILL.md metadata namespace that the markdown-skill loader still recognises for backward-compatible installs. This page is kept as historical reference only.

Design Philosophy (historical)

The ClawHub integration, when it shipped, followed two principles:

  1. Read-only access — The client fetched skills from the registry; it never uploaded or modified registry contents. Public API access did not require authentication.
  2. Clean type separation — Raw API types were converted to internal unified types via From implementations, keeping the HTTP layer decoupled from domain logic.

Historical HTTP Client

The retired clawhub module exposed an HTTP client and type definitions for interacting with the ClawHub skill registry at https://clawhub.ai. It has since been removed from src/; the snippets below reflect the historical API and are kept for archival reference.

ClawHubClient (historical)

pub struct ClawHubClient {
    base_url: String,
    client: reqwest::Client,
}

impl ClawHubClient {
    pub fn new() -> Self { /* ... */ }

    pub async fn browse(
        &self,
        category: Option<String>,
    ) -> Result<Vec<SkillSummary>, ClawHubError> { /* ... */ }

    pub async fn search(
        &self,
        query: &str,
    ) -> Result<Vec<SkillSummary>, ClawHubError> { /* ... */ }

    pub async fn download(
        &self,
        slug: &str,
    ) -> Result<Vec<u8>, ClawHubError> { /* ... */ }
}

Historical behaviors:

  • browse falls back to search when the browse endpoint returns empty.
  • download sanitises the slug (replacing / with -) before using it in temp filenames.
  • All methods used ? or map_err for error propagation.

Historical Types

pub struct SkillSummary {
    pub slug: String,           // "owner/skill" format
    pub name: String,
    pub description: String,
    pub version: String,
    pub downloads: u64,
}

pub struct SkillDetail {
    pub summary: SkillSummary,
    pub readme: String,
    pub manifest: SkillManifest,
}

Historical API Operations

Browse

Lists skills by category. Falls back to search when the category endpoint returns empty.

Full-text search across the registry.

Download

Fetches a skill package as a ZIP archive.


Historical Utility Functions

URL Encoding

pub fn encode_slug_path(slug: &str) -> String

Per-segment percent-encoding for use in URLs.

Version Comparison

pub fn is_newer_version(current: &str, latest: &str) -> bool

Compares two semantic version strings. Falls back to string comparison for non-semver inputs.

Timestamp Conversion

pub fn unix_ms_to_rfc3339(ts: i64) -> String

Converts Unix milliseconds to RFC 3339 format. Returns empty string for invalid timestamps.


Historical Error Handling

The client used reqwest for HTTP and returned Result<T, ClawHubError> from all operations. Errors covered:

  • Network failures
  • HTTP non-2xx status codes
  • Invalid response parsing
  • Filesystem errors during download

Where ClawHub Appears in Current Code

LocationRole
src/hub/catalog_client.rs"via": "clawhub" provenance label on HubCatalog entries whose upstream traces back to OpenClaw; the label is purely informational and never triggers a network fetch.
src/hub/types.rsvia field on ExtensionEntry; same informational role.
src/tools/markdown_skill/spec.rsThe OpenClaw metadata namespace (ClawHub SKILL.md compatibility) — the loader still parses legacy ClawHub-style SKILL.md frontmatter so existing skills keep installing.
src/skill/guard.rsSkips .clawhub.json sidecars when scanning skill directories.

The ClawHub HTTP client itself is not present in src/; there are no clawhub.* gateway RPCs and no installer that talks to clawhub.ai.


Code Location

  • Historical module: src/clawhub/ (removed) — client.rs, types.rs
  • Current appearances: src/hub/catalog_client.rs, src/hub/types.rs, src/tools/markdown_skill/spec.rs, src/skill/guard.rs

See Also

  • Extensions Store — The replacement: unified catalog covering Skills, Plugins, and MCP servers from the official Aleph Hub, plugin marketplaces, the MCP registry, and Docker MCP Catalog.
  • Skills — How skills work within Aleph
  • Extensions — Plugin architecture for adding capabilities

On this page