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.

How env validation works

The runtime composes one big Zod schema at boot: the Tier-0 base schema (always required) plus every loaded plugin’s configSchema. process.env is validated against the merged schema. Missing required vars fail boot with [boot-error] Plugin '<name>' env validation failed for '<field>'. Disabling a plugin (via features or autoDetect) removes its env requirements automatically.

Tier-0 (core)

Always required by the runtime. Source: packages/oracle-runtime/src/config/base-env-schema.ts.

Runtime

VariableTypeDefaultNotes
NODE_ENV'development' | 'production' | 'test''development'
PORTnumber (coerced)3000Override at app.listen(port) if needed.
ORACLE_NAMEstringRequired.
CORS_ORIGINstring'*'Wildcard disables credentials.
NETWORK'mainnet' | 'testnet' | 'devnet'Required.

Matrix

VariableTypeDefaultNotes
MATRIX_BASE_URLstringRequired.
MATRIX_RECOVERY_PHRASEstringRequired.
MATRIX_STORE_PATHstring'./matrix-storage'Must persist across restarts.
MATRIX_ORACLE_ADMIN_USER_IDstringRequired.
MATRIX_ORACLE_ADMIN_PASSWORDstringRequired.
MATRIX_ORACLE_ADMIN_ACCESS_TOKENstringRequired.
MATRIX_ACCOUNT_ROOM_IDstringRequired.
MATRIX_VALUE_PINstringRequired.

Storage

VariableTypeDefaultNotes
SQLITE_DATABASE_PATHstringRequired. Must persist across restarts.

Blocksync / chain

VariableTypeDefaultNotes
BLOCKSYNC_GRAPHQL_URLstringRequired.
ORACLE_DIDstringRequired. The oracle’s own DID (did:ixo:ixo1...) used as signer identity.
ORACLE_ENTITY_DIDstringRequired. The oracle’s on-chain entity record.
SECP_MNEMONICstringRequired.
RPC_URLstringRequired.

LLM

VariableTypeDefaultNotes
LLM_PROVIDER'openrouter' | 'nebius''openrouter'
OPENAI_API_KEYstringOptional.
OPEN_ROUTER_API_KEYstringRequired if LLM_PROVIDER=openrouter.
NEBIUS_API_KEYstringRequired if LLM_PROVIDER=nebius.
Cross-field: the API key for the selected LLM_PROVIDER must be present; otherwise boot fails with a named-field error.

Misc

VariableTypeDefaultNotes
ORACLE_SECRETSstring''Comma-separated KEY=value pairs surfaced as x-os-* headers to capabilities.
LIVE_AGENT_AUTH_API_KEYstring''Optional.

LangSmith tracing (optional)

VariableTypeDefaultNotes
LANGSMITH_TRACINGstringSet to 'true' to enable.
LANGSMITH_API_KEYstring
LANGSMITH_PROJECTstring
LANGSMITH_ENDPOINTstringOptional override of the LangSmith API URL.
Declared in the base schema so they show up in qiforge env output. LangChain auto-wires when these are present in process.env; the runtime never reads them directly.

Per-plugin

Only required when the named plugin is loaded.
PluginVariableRequiredNotes
memoryMEMORY_MCP_URLYesMust be a valid HTTP(S) URL.
memoryMEMORY_ENGINE_URLYesMust be a valid HTTP(S) URL.
firecrawlFIRECRAWL_MCP_URLYesMust be a valid HTTP(S) URL.
domain-indexerDOMAIN_INDEXER_URLNoURL override; otherwise resolved from NETWORK.
composioCOMPOSIO_API_KEYYes (when loaded)
composioCOMPOSIO_BASE_URLNoDefaults to https://composio.ixo.earth.
sandboxSANDBOX_MCP_URLYesMust be a valid URL.
skillsSKILLS_CAPSULES_BASE_URLNoDefaults to bundled URL.
slackSLACK_BOT_OAUTH_TOKENYesTriggers autoDetect.
slackSLACK_APP_TOKENNo
slackSLACK_USE_SOCKET_MODENoDefaults to 'true'.
slackSLACK_MAX_RECONNECT_ATTEMPTSNoCoerced to number; default 10.
slackSLACK_RECONNECT_DELAY_MSNoCoerced to number; default 1000.
creditsSUBSCRIPTION_URLNoURL.
creditsSUBSCRIPTION_ORACLE_MCP_URLNoURL.
creditsDISABLE_CREDITSNoSet to 'true' to skip the plugin.
tasksREDIS_URLYes (when loaded)Triggers autoDetect.

Variables read but not owned

Some plugins read variables that live in another schema:
  • composio reads the core NETWORK and forwards it as x-ixo-network.
  • skills reads NETWORK and forwards as X-IXO-Network.
  • sandbox reads ORACLE_SECRETS (core) and SKILLS_CAPSULES_BASE_URL (owned by skills) and forwards them as headers.
These are declared in the plugin’s sibling schemas (typed optional()); a missing value just skips the matching header instead of failing the plugin build.

Generating an .env template

qiforge env (ships with TASK-33) generates a .env template for your installed plugin set. Until that lands, write the file by hand using this reference.