Skill registry — manifest-indexed multi-skill mount for Orrery-style apps.
ASkillRegistrystores skills by name, mounts each via
use_skill() onto one app (aggregated /mcp),
exposes a discovery route that lists frozen manifests, and bridges
ToolEventBus into a live invocation-log EventStream.
When anEnvKeystoreis passed to
mount() / mount_skills(), the host-level
key-status tool is registered for the union of skill provider_keys
(presence only — secret values never enter the MCP response).
Console UI lives inchirp.skill.console (mount_console). This
module owns registry + discovery + the live-log SSE bridge.
skill.registry
| Name | Type | Default | Description |
|---|---|---|---|
type
|
|
— | |
qualified_name
|
|
— | |
element_type
|
|
— | |
description
|
|
— | |
source_file
|
|
— | |
line_number
|
|
— | |
is_autodoc
|
|
— | |
autodoc_element
|
|
— | |
_autodoc_template
|
|
— | |
_autodoc_url_path
|
|
— | |
_autodoc_page_type
|
|
— | |
title
|
|
— | |
doc_content_hash
|
|
— |
Symbols on this page
Manifest-indexed store of skills to mount onto a single Chirp app.
Setup-only mutation (add) until mount() / mount_skills() runs; afterwards…
Mount skills ontoappand expose discovery + live invocation log.
Accepts either a pre-builtSkillRegistryor an iterable of
Skillinstances. Each skill…
SkillRegistry
class
Manifest-indexed store of skills to mount onto a single Chirp app.
Setup-only mutation (add) until mount() / mount_skills()
runs; afterwards the registry is read-only. Thread-safe for concurrent
setup registration (free-threading).
After the app freezes,manifests() returns the immutable content-
digested manifests finalized by each skill's freeze-time domain hook.
mount_skills
function
def mount_skills(app: App, skills: SkillRegistry | Iterable[Skill], *, discovery_path: str = DEFAULT_DISCOVERY_PATH, invocation_log_path: str | None = DEFAULT_INVOCATION_LOG_PATH, keystore: EnvKeystore | None = None) -> SkillRegistry
Mount skills ontoappand expose discovery + live invocation log.
Accepts either a pre-builtSkillRegistryor an iterable of
Skillinstances. Each skill is mounted via
use_skill() onto the same app — Chirp's existing
MCP surface then serves one aggregated/mcpwith all tools.
The discovery route (default/skills) returns a JSON document of
skill manifests so agents can list what the host mounts. The invocation
log route (default/invocations/live) streams ToolCallEvent
fragments over SSE; passinvocation_log_path=Noneto skip it.
Whenkeystore is an EnvKeystore, also
registers the host-levelkey-statustool for declared provider key
names (presence only; secret values never enter the response).
Returns theSkillRegistry(creating one when given an iterable).
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
app
|
App
|
— | |
skills
|
SkillRegistry | Iterable[Skill]
|
— | |
discovery_path
|
str
|
DEFAULT_DISCOVERY_PATH
|
|
invocation_log_path
|
str | None
|
DEFAULT_INVOCATION_LOG_PATH
|
|
keystore
|
EnvKeystore | None
|
None
|
View source · /home/runner/work/chirp/chirp/site/../src/chirp/skill/registry.py:1