Skip to main content
Naming note: ExuluProvider is the runtime class you instantiate to define a model-backed agent. The term ExuluAgent still exists in the codebase but refers only to the TypeScript type for agent database rows — the records an administrator creates and saves through the platform UI. When you write code to define and register a model provider, you use ExuluProvider.
ExuluProvider declares a model factory, describes the agent’s modalities and capabilities, and exposes two generation methods: generateSync for non-streaming programmatic runs and generateStream for the live-chat flow. Providers you register on ExuluApp appear in the agent workbench alongside the 19 built-in defaults, where administrators can select them for their agents. See the Get Started guide for where providers fit in the platform.

What a provider gives you

AI-SDK LanguageModel factory

A model.create() function that returns a Vercel AI-SDK LanguageModel. IMP calls it with the resolved API key, user, role, project, and agent ID.

Capability declaration

Declare which modalities the model accepts: text, image types, document types, audio, and video.

Streaming and sync generation

generateStream powers the chat UI; generateSync is for background jobs, evaluations, and direct API calls.

Multi-agent tooling

tool() exports the provider as an ExuluTool an orchestrating agent can call — requires the multi-agent-tooling Enterprise Edition license.

Memory retrieval

When agent.memory is set to a context ID, both generate methods retrieve relevant chunks before building the system prompt.

Context budget guard

Both generate methods enforce a context-window occupancy check before calling the model, returning a structured error when the budget is exceeded so the UI can trigger compaction.

Minimal example

Register it on the app:

Streaming vs synchronous generation

Both methods load session history, apply context-budget guards, build the system prompt (including memory retrieval, skill listings, and citation instructions), convert tools via the AI-SDK pipeline, and call the configured model. The difference is only in the underlying AI-SDK call: streamText vs generateText.

Multi-agent tooling

provider.tool(instanceId, providers, contexts) exports the provider as a tool that an orchestrating agent can call. The tool accepts a prompt and an information field; the sub-agent runs generateSync and returns its text response.
tool() checks the multi-agent-tooling entitlement from your EXULU_ENTERPRISE_LICENSE. Without the license, the method logs a warning and still returns the tool — invocations fail at call time without the license. Add the license before relying on multi-agent flows.

Next steps

Configuration

Every constructor option: config.model, capabilities, workflows, maxContextLength.

API reference

generateSync, generateStream, tool(), and all public properties.

Agents in the IMP UI

How administrators register and configure providers in the platform workbench.