Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Manifest

Every hub package is a single TOML file with a required [package] section followed by one or more resource sections: [mcps.*], [agents.*], and [commands.*].

[package]
name = "my-package"
description = "Short description"
repository = "https://github.com/org/repo"

[mcps.my-server]
command = "npx"
args = ["-y", "my-mcp-server"]

[package]

Package metadata. The only required field is name.

FieldRequiredDefaultDescription
nameyesPackage name
descriptionno""Short description for hub display
logono""Logo URL for hub display
repositoryno""Source repository URL (required for skills and agents)
branchnorepo defaultBranch to clone
versionnoPackage version
authorsno[]Package authors
licensenoLicense identifier
keywordsno[]Searchable tags for hub discovery
setupnoPost-install setup (see below)

[package.setup]

Run after installation. Two variants — use one or the other, not both.

Bash script — runs from the cached repo directory. If the value ends with .sh, it is executed as a script file (bash setup.sh). Otherwise it is passed as inline script (bash -c '...'):

[package.setup]
script = "setup.sh"

Or inline:

[package.setup]
script = '''
npx playwright install chromium
echo "done"
'''

Inference prompt — sent to the daemon. If the value ends with .md, it is read as a file path relative to the repo root:

[package.setup]
prompt = "setup.md"

[mcps.*]

Registers an MCP server. The map key becomes the server identifier.

[mcps.notion]
command = "npx"
args = ["-y", "@notionhq/notion-mcp-server"]
env = { NOTION_TOKEN = "" }
FieldRequiredDefaultDescription
commandyes*""Executable to spawn (stdio transport)
argsno[]Command-line arguments
envno{}Environment variables
namenomap keyDisplay name
auto_restartnotrueAuto-restart on failure
urlnoHTTP URL for streamable HTTP transport

* Either command or url must be set. Use command for stdio transport, url for HTTP.

[agents.*]

Agent prompt bundles. Prompt files are discovered by convention from agents/<key>.md in the source repository, or specified explicitly via the prompt field.

[agents.garrytan]
description = "AI engineering workflow agent"
thinking = true
skills = ["agent-browser"]
FieldRequiredDefaultDescription
descriptionyesAgent description
promptno""Path to prompt .md file (relative to repo root)
skillsno[]Skill names this agent can access
modelnoModel override for this agent
thinkingnofalseEnable thinking/reasoning mode
mcpsno[]MCP server names this agent can access

[commands.*]

Rust crate commands. Auto-installed via cargo install during hub install.

[commands.search]
description = "Meta-search aggregator"
crate = "crabtalk-search"
FieldRequiredDescription
descriptionyesHuman-readable description
crateyesCrate name on crates.io (installed via cargo install)

Installed commands are managed via crabtalk <command> start|stop|run|logs.