A plugin references other plugins byDocumentation Index
Fetch the complete documentation index at: https://docs.ixo.world/llms.txt
Use this file to discover all available pages before exploring further.
name. dependsOn is hard (boot fails on miss). softDependsOn is soft (plugin loads either way and branches on ctx.availablePlugins).
Declare hard dependencies via dependsOn
Use this when the plugin literally cannot function without the other. The runtime topologically sorts plugins by Missing dep:
dependsOn and aborts boot on missing deps or cycles.[boot-error] Plugin 'skills' depends on 'sandbox', which is not loaded. Add 'sandbox' to features, or remove 'skills'. Canonical source: oracle-plugin.ts.Declare soft dependencies via softDependsOn
Use this when the plugin enriches its behaviour when the other is present but stands alone without it. The runtime loads your plugin either way and logs one line per missing soft dep at boot.See plugin-loader.ts for the resolver.
Branch on availablePlugins at boot or request time
PluginContext.availablePlugins and RuntimeContext.availablePlugins are ReadonlySet<string> of every plugin that survived boot resolution.Force-toggle dependencies from the host
Forks override Disabling a plugin that another plugin hard-requires fails boot — that’s the point of
autoDetect and dependency resolution via the features map. 'auto' (default) defers to the plugin’s autoDetect.dependsOn. See plugin-loader.ts.What to know before shipping
- Names are kebab-case plugin identifiers, not titles.
'memory', not'Memory'. - The topo sort order drives middleware ordering and tool ordering in the prompt — encode ordering via
dependsOnwhen it matters. - Cycles in
dependsOnfail boot with a clear error. Soft deps don’t participate in the cycle check. - Dependencies don’t introspect what the other plugin contributes — only that it loaded. Check for specific tools at request time.
- There’s no version constraint and no late-arriving plugins. Plugin resolution is a single boot-time step.
Where to read next
Share state
Pair
softDependsOn with ctx.shared to read another plugin’s data.Plugin catalog
See which bundled plugins use
dependsOn / softDependsOn.