Summary
Create the plugin infrastructure in pkg/catalog/plugin/ that allows different catalog types (models, datasets, MCP tools, etc.) to register themselves and be managed by a unified server.
Motivation
With the core primitives from Phase 1 providing generic building blocks, we need a standardized way for catalog implementations to plug in. The plugin system provides a standard interface, a global registry, and config routing — so new catalog types can be added with minimal boilerplate and zero changes to the core.
Scope
- Define the Plugin Interface that every catalog type must implement
- Implement a global plugin registry supporting self-registration via
init()
- Define a plugin config structure that routes the correct section of
sources.yaml to each plugin
- Define the plugin lifecycle hooks (init, start, stop, health check)
Acceptance Criteria
Dependencies
References
Summary
Create the plugin infrastructure in
pkg/catalog/plugin/that allows different catalog types (models, datasets, MCP tools, etc.) to register themselves and be managed by a unified server.Motivation
With the core primitives from Phase 1 providing generic building blocks, we need a standardized way for catalog implementations to plug in. The plugin system provides a standard interface, a global registry, and config routing — so new catalog types can be added with minimal boilerplate and zero changes to the core.
Scope
init()sources.yamlto each pluginAcceptance Criteria
pkg/catalog/plugin/contains thePlugininterface with clearly documented methodsinit()and be discovered at startupsources.yamlsections to their respective pluginsmake build && make test && make lintpassDependencies
basecatalog#2527References