Modules
Feature packages with models, YAML UI, actions, commands, tools, agents, skills, locales, and assets.
Extensibility
Applications grow by adding modules, engines, extractors, tools, agents, skills, and commands. Each extension type has a specific boundary and lifecycle.
Extension types
Keeping these categories separate makes the runtime easier to reason about and easier to replace piece by piece.
Feature packages with models, YAML UI, actions, commands, tools, agents, skills, locales, and assets.
Installable model providers for chat, embedding, speech, vision, and local or remote runtimes.
Installable processors that turn uploaded files into markdown, chunks, metadata, and ingestion requests.
Operational boundary
Extensions describe what they provide. The core decides how those capabilities are discovered, authorized, and invoked.
Decorators and manifests describe what an extension provides. The loader discovers extension files during module loading.
Extension code uses SDK contracts instead of importing private runtime internals.
A provider can be swapped when its public objective and runtime method contracts stay compatible.
Developer workflow
A module developer should be able to validate behavior through real actions, tools, providers, and rendered UI rather than disconnected mocks.
Expose administrative or module-level operations without tying them to one page.
Give model orchestration controlled capabilities that run inside the owning module context.
Package reusable instructions and workflows for agents without hardcoding that behavior in UI actions.
Next
Use these pages to move from the concept to adjacent parts of the runtime.