VokalityLumenDOCS

Extension development

Extensions add domain tools, state, and optional interactive cards. Lumen supplies desktop services and renders their UI. The underlying Ragdoll extension framework remains independent of Electron.

Choose the integration boundary

You needUse
Tools from an existing remote serviceAn MCP connection
Local domain behavior, persistent state, or a cardA Ragdoll extension
OS integration, credential storage, or app navigationA host capability or app-owned control

An extension can contribute tools without a card. A card can expose controls without duplicating every control as a tool. If the agent should perform an action, expose that action through a tool backed by the same domain operation as the UI.

Package contract

Export a named createExtension(config?) factory. Installed packages are loaded through that factory; a bare extension object is registered directly with a registry, not passed to the package loader.

Declare an object under package.json#ragdollExtension containing a stable ID, in-package entry, contributed capability types, and required and optional host capabilities. Add configuration and OAuth schemas when needed. Package metadata and runtime identity and capability declarations must agree.

Imports and ownership

Extensions must not import Electron, Lumen, another first-party extension, or React through core entrypoints. Hosts provide storage, OAuth, configuration, notifications, filesystem, and import adapters where supported.

Start with your first extension, then read about cards and host capabilities.

Search documentation