app.create() takes a single options object: the components you want to register plus a config object of type ExuluConfig. This page documents every option, verified against the current @exulu/backend source.
create() options
Platform configuration.
workers and MCP are required fields inside it; everything else is optional. See the full reference below.Map of context key to
ExuluContext instance. IMP merges its built-in contexts (currently transcriptions) after yours, so a built-in wins on key collision — a warning is logged if you define a context under the key transcriptions.Custom model providers, appended after the 19 built-in defaults. See ExuluProvider.
Code-defined agents. Agents can also be created in the database through the platform UI;
app.agent() and app.agents() read from both. Code-defined agents without an explicit RBAC block default to public access.Custom tools, registered ahead of the built-in todo, question, Perplexity, email, and image-generation tools. See ExuluTool.
Custom evaluations, merged with the built-in LLM-as-judge eval. Evals require Redis (
REDIS_HOST + REDIS_PORT); without it, no evals are registered — including the ones you pass here.ExuluConfig reference
workers and MCP are required top-level fields. All others are optional.
Workers
Declare whether this deployment runs a worker process. The workers themselves start only when you call
app.bullmq.workers.create() in a separate process.Winston transports used by the worker process. Falls back to
logger.winston.transports, and finally to a built-in console transport (colorized with timestamps in development, JSON in production).Enable OpenTelemetry tracing and log forwarding in the worker process. Independent of the server-side
telemetry.enabled.Workers require Redis (
REDIS_HOST / REDIS_PORT) and an Enterprise Edition license (EXULU_ENTERPRISE_LICENSE). app.bullmq.workers.create() throws if the license is absent or invalid.MCP
When
true, app.express.init() mounts a Model Context Protocol server on the Express application. Each agent becomes reachable as a streamable-HTTP MCP endpoint at /mcp/:agent, so external MCP clients can call your agents with their registered tools and contexts.Telemetry
Enable OpenTelemetry tracing for the Express server. Traces and logs are exported to the collector configured through your OTEL environment variables.
Logging
Winston transports for the server process. When omitted, IMP uses a console transport: colorized with
HH:mm:ss timestamps in development, JSON in production. Log messages longer than 50 lines are truncated with a (… more lines omitted) marker.IMP routes
console.log, console.info, console.warn, console.error, and console.debug through the configured Winston logger, so all output — including from your own code — flows through your transports.File uploads
S3-compatible object storage for chat attachments, knowledge files, and generated images. All four core fields are required together.Region of the bucket, for example
us-east-1.Access key ID.
Secret access key.
Bucket name.
Custom endpoint URL for S3-compatible services such as MinIO. Omit for AWS S3.
Key prefix applied to uploaded objects.
The image-generation widget tool is only registered when both LiteLLM (
EXULU_USE_LITELLM=true) and this fileUploads block are configured, because generated images are stored in S3.Privacy
Controls whether user-specific personalization is injected into agent system prompts. When disabled, all users receive the same system prompts.
System dependencies
IMP probes for the
pandoc, soffice (LibreOffice), and pdftoppm (Poppler) binaries and the globally installed docx npm package — all needed by the built-in document skills. By default (unset or true), create() throws when any is missing, so misconfigured production images fail fast. Set to false to log a warning instead; skills that need the missing dependency then fail at use time.Complete example
Next steps
API reference
Every public method and property of ExuluApp.
ExuluContext
Define knowledge contexts to register on the app.