Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.ixo.world/llms.txt

Use this file to discover all available pages before exploring further.

The runtime bundles 15 plugins. They load by default; opt out per plugin via the features map on createOracleApp.

At a glance

NameVisibilityDefault stateRequired envDepends on
memoryalwaysAuto-detectMEMORY_MCP_URL, MEMORY_ENGINE_URL
portalon-demandOn
firecrawlon-demandAuto-detectFIRECRAWL_MCP_URL
domain-indexeralwaysOn
composioon-demandAuto-detectCOMPOSIO_API_KEY
sandboxalwaysAuto-detectSANDBOX_MCP_URL
skillsalwaysOnsandbox
editoron-demandOn (needs Matrix client)
aguion-demandOn
slacksilentAuto-detectSLACK_BOT_OAUTH_TOKEN
tasks(stub)Auto-detect (stub)REDIS_URL
creditssilentOn unless DISABLE_CREDITS=true
calls(stub)On (stub)
user-preferencesalwaysOn
matrix-group-chatson-demandOn
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.
  • (stub) — placeholder entry in BUNDLED_PLUGINS so feature toggles work; full implementation deferred.

How to use features

const app = await createOracleApp({
  config,
  features: {
    composio: false,            // never load even if COMPOSIO_API_KEY is set
    slack: true,                // force load even if SLACK_BOT_OAUTH_TOKEN is missing (will fail env validation)
    'domain-indexer': 'auto',   // explicit auto (same as omitting)
  },
});
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.

slack

Slack bot transport.

tasks

Background jobs (stub — deferred).

credits

Per-user credit enforcement and claim settlement.

calls

LiveKit call integration (stub — deferred).

user-preferences

Tone / format / language preferences.

matrix-group-chats

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

Wiring custom-constructed plugins

Two plugins need constructor args for production behaviour. Pass them via the plugins array (the loader dedupes by name, so your instance overrides the bundled default):
import { createOracleApp, EditorPlugin, CreditsPlugin } from '@ixo/oracle-runtime';
import * as sdk from 'matrix-js-sdk';
import Redis from 'ioredis';

const matrixClient = sdk.createClient({ /* ... */ });
const redis = process.env.REDIS_URL ? new Redis(process.env.REDIS_URL) : null;

const app = await createOracleApp({
  config,
  plugins: [
    new EditorPlugin({ matrixClient }),
    ...(redis ? [new CreditsPlugin({ redis, network: 'devnet' })] : []),
  ],
});
The bundled editorPlugin and creditsPlugin singletons in BUNDLED_PLUGINS work in stub form for tests; for real behaviour, instantiate explicitly.

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.