Plugins
Arcen has several plugin surfaces. General plugins use PluginManager, memory providers use the memory provider interface, and model providers use lazy ProviderProfile discovery.
General plugins
General plugins can register:
- Lifecycle hooks such as
pre_tool_call,post_tool_call,pre_llm_call, andpost_llm_call. - New tools with
ctx.register_tool(...). - CLI subcommands with
ctx.register_cli_command(...).
Discovery happens through arcen_cli/plugins.py and is triggered as a side effect of importing model_tools.py.
Memory plugins
Memory plugins implement MemoryProvider and are orchestrated by agent/memory_manager.py.
Built-in memory providers are closed to new in-tree additions. Publish new memory backends as standalone plugin repositories or pip entry points.
Model-provider plugins
Model providers live under plugins/model-providers/<name>. Each plugin registers a ProviderProfile.
Discovery order:
- Bundled providers in the repo.
- User providers under
$ARCEN_HOME/plugins/model-providers/<name>. - Legacy providers under
providers/<name>.py.
User plugins of the same name override bundled providers.