MoltHub is the public skill registry for Moltbot: publish, version, and search text-based agent skills (a SKILL.md plus supporting files).
It’s designed for fast browsing + a CLI-friendly API, with moderation hooks and vector search.
onlycrabs.ai is the SOUL.md registry: publish and share system lore the same way you publish skills.
Live: https://molthub.com
onlycrabs.ai: https://onlycrabs.ai
SKILL.md.latest).SOUL.md.onlycrabs.ai./souls.SOUL.md for now (no extra files).text-embedding-3-small) + Convex vector search.packages/schema (molthub-schema).MoltHub tracks minimal install telemetry (to compute install counts) when you run molthub sync while logged in.
Disable via:
export MOLTHUB_DISABLE_TELEMETRY=1
Details: docs/telemetry.md.
src/ — TanStack Start app (routes, components, styles).convex/ — schema + queries/mutations/actions + HTTP API routes.packages/schema/ — shared API types/routes for the CLI and app.docs/spec.md — product + implementation spec (good first read).Prereqs: Bun + Convex CLI.
bun install
cp .env.local.example .env.local
# terminal A: web app
bun run dev
# terminal B: Convex dev deployment
bunx convex dev
Create a GitHub OAuth App, set AUTH_GITHUB_ID / AUTH_GITHUB_SECRET, then:
bunx auth --deployment-name <deployment> --web-server-url http://localhost:3000
This writes JWT_PRIVATE_KEY + JWKS to the deployment and prints values for your local .env.local.
VITE_CONVEX_URL: Convex deployment URL (https://<deployment>.convex.cloud).VITE_CONVEX_SITE_URL: Convex site URL (https://<deployment>.convex.site).VITE_SOULHUB_SITE_URL: onlycrabs.ai site URL (https://onlycrabs.ai).VITE_SOULHUB_HOST: onlycrabs.ai host match (onlycrabs.ai).VITE_SITE_MODE: Optional override (skills or souls) for SSR builds.CONVEX_SITE_URL: same as VITE_CONVEX_SITE_URL (auth + cookies).SITE_URL: App URL (local: http://localhost:3000).AUTH_GITHUB_ID / AUTH_GITHUB_SECRET: GitHub OAuth App.JWT_PRIVATE_KEY / JWKS: Convex Auth keys.OPENAI_API_KEY: embeddings for search + indexing.MoltHub can store a nix-moltbot plugin pointer in SKILL frontmatter so the registry knows which Nix package bundle to install. A nix plugin is different from a regular skill pack: it bundles the skill pack, the CLI binary, and its config flags/requirements together.
Add this to SKILL.md:
---
name: peekaboo
description: Capture and automate macOS UI with the Peekaboo CLI.
metadata: {"moltbot":{"nix":{"plugin":"github:moltbot/nix-steipete-tools?dir=tools/peekaboo","systems":["aarch64-darwin"]}}}
---
Install via nix-moltbot:
programs.moltbot.plugins = [ { source = "github:moltbot/nix-steipete-tools?dir=tools/peekaboo"; } ];
You can also declare config requirements + an example snippet:
---
name: padel
description: Check padel court availability and manage bookings via Playtomic.
metadata: {"moltbot":{"config":{"requiredEnv":["PADEL_AUTH_FILE"],"stateDirs":[".config/padel"],"example":"config = { env = { PADEL_AUTH_FILE = \\\"/run/agenix/padel-auth\\\"; }; };"}}}
---
To show CLI help (recommended for nix plugins), include the cli --help output:
---
name: padel
description: Check padel court availability and manage bookings via Playtomic.
metadata: {"moltbot":{"cliHelp":"padel --help\\nUsage: padel [command]\\n"}}
---
metadata.moltbot is preferred, but metadata.moltbot is accepted as an alias for compatibility.
bun run dev
bun run build
bun run test
bun run coverage
bun run lint