Skip to main content
The runtime bundles 14 plugins that load by default; opt out per plugin via the features map on createOracleApp. Four more ship in the package but are not in the default set — credits, slack, calls, and flows — so you wire each one in explicitly via the plugins array. The authoritative list is BUNDLED_PLUGINS.

At a glance

Default state legend:
  • On — loaded by default; opt out with features: { name: false }.
  • Auto-detect — loaded when its env var is set; opt in by setting it, force on with features: { name: true }, force off with false.
  • Opt-in (not bundled) — absent from BUNDLED_PLUGINS, so features never reaches it. Construct it and pass it in plugins.
  • (stub) — placeholder entry; full implementation deferred.

How to use features

true forces on, false forces off, 'auto' runs the plugin’s autoDetect callback. Omitted keys default to 'auto'.

Browse

memory

Durable memory across conversations.

portal

Browser-side actions on the user’s Portal UI.

firecrawl

Web search and human-readable page scraping.

domain-indexer

IXO entity lookup — orgs, projects, DAOs, DIDs.

composio

SaaS tool catalog (Gmail, GitHub, Linear, …).

sandbox

Per-user Linux box for code execution.

skills

IXO skill capsule discovery.

editor

Read and edit BlockNote workspace pages.

agui

Render interactive UI components in the browser.

tasks

Schedule the agent to run on time-based triggers, in the background.

user-preferences

Tone / format / language preferences.

matrix-group-chats

Gate the bot + per-room compacted memory for Matrix group rooms.

vfs

Read, write, search, and share the user’s real files on their Virtual Filesystem.

oracle-payments

Sell services from the chat — contract on-chain, deliver work, get paid.

credits

Per-user credit enforcement and claim settlement (opt-in).

slack

Slack bot transport (opt-in).

calls

LiveKit call integration (opt-in stub — deferred).

flows

Author and inspect multi-step Qi Flow templates (opt-in).

Wiring custom-constructed plugins

Anything in the plugins array is always loaded — features never gates it, and the loader dedupes by name, so your instance overrides a bundled default of the same name. This is how you load the four opt-in plugins, and how you replace a bundled one with a custom-constructed instance. credits genuinely needs a Redis client. It is not in the bundled set, so nothing loads it unless you do. Without a Redis client the enforcement middleware loads in pass-through mode and the settlement cron is skipped, so production must construct it explicitly:
editor works from env on its own. The bundled editorPlugin is fully functional: when no matrixClient is passed it lazily builds an internal Matrix client from the MATRIX_* admin env vars. Pass matrixClient only to reuse a client your app already keeps synced:

Plugin vs Skill

Why skills + sandbox are paired in the catalog.

Using bundled plugins

features patterns in depth.

Environment variables

All env vars in one table.

Manifest schema

Every field a plugin manifest declares.