Multi-Agent Orchestration
A carefully prepared scene — a tense standoff, a delicate political negotiation, a slow-burn romance — can still be spoiled by the reply: it skips your last beat, forgets a rule you established two scenes ago, breaks character to summarize, or rushes to a resolution you did not want. This is not because the model is weak; it is because a single pass can only focus on one thing at a time, while you are asking it to handle several at once: stay in character, recall context, respect world rules, plan the next beat, and write good prose.
The Orchestrator solves this by running a team of agents before the main reply: extracting the important state from the recent chat, determining which world rules currently apply, planning what the turn should accomplish, reviewing the plan, and packaging the result into a short briefing. By the time the main model writes its reply, it has received that briefing (and only that briefing), so its budget can go to the prose rather than to bookkeeping.
The orchestrator ships with a working default Spec workflow, so no design work is required to begin. Enable it and it runs. When a different shape is needed later, every execution mode has its own dedicated editor.
When does it run?
The Orchestrator triggers on the normal, continue, regenerate, swipe, and impersonate generation types. It runs after World Info parsing and before the main reply. The Run Panel is kept in memory only — it's cleared when you switch chats.
5-Minute Walkthrough (using the default workflow)
No mode selection or workflow authoring is required first — the default Spec is already configured. This section only enables it so its behavior can be observed.
Step 0 — Prerequisites
- Your main chat already replies normally with a Chat Completion API.
- The current chat has several turns of dialogue (so there's something for the workflow to plan against).
Step 1 — Enable Orchestrator
Open the Extensions drawer (top bar) and find the Multi-Agent Orchestration section. Toggle Enable on.

Step 2 — Pick a model for the agents
Scroll within the same panel to LLM Node API Preset and AI Generation API Preset. These tell the orchestrator agents which API and which Chat Completion preset to use.
Save money here
The orchestrator calls the LLM once per node. If the main chat uses an expensive model such as Claude Opus, point the orchestrator at a cheaper one — Haiku or Gemini Flash — to cut the cost substantially. If higher quality is needed, route different nodes to different models (each node has its own API/preset override).
Step 3 — Just send a message
Send a message in the chat — no other settings are needed. Before the main model replies, the default Spec workflow runs in the background. The first run is slower than usual (the agents run in sequence); subsequent runs are faster.
Step 4 — See what it did for you
As soon as a run starts, the Run Panel slides in beside the chat (or rises from the bottom on narrow screens). It updates in real time: rounds are collapsible cards; expand one to see what the model thought, which tools it called, and what they returned.

As the model streams output, the panel updates in place — no flicker, no chat reflow:

Expand any tool call to see its inputs and outputs:

On narrow screens, the panel becomes a bottom drawer you can drag up or dismiss:

The panel is kept in memory only. Switching chats or refreshing clears it; the chat thread keeps only the final reply, preserved verbatim. The following actions are also available:
- Stop the run while it is in progress
- Copy the raw content of any section
- Export the full run as JSON (useful for bug reports)
- Collapse all to fold every card at once
This is what "the AI thinks before replying" means in practice. If the reply is poor, open the panel and locate exactly where the problem entered.
The orchestrator is now active. From here, pick a direction depending on what is needed:
- The default Spec is not sufficient and needs customization (manual or AI-assisted) → Spec mode
- The flow must adapt to the situation and cannot be pre-written as a DAG → Agenda mode
- A single agent should call tools (memory, lorebook, …) until it declares completion → Loop mode
Whichever mode you pick, customization starts here
AI Iteration Studio is the orchestrator's primary customization tool — describe the goal in one sentence, the AI returns a proposal, and each change is approved individually. Spec, Agenda, Loop and Director all share it, and it is usually preferable to manual editing.
Pick your execution mode
| Mode | What it is | When to use | Skills | Detailed docs |
|---|---|---|---|---|
| Spec (default) | A fixed Stage → Node DAG | Default. You want a predictable pipeline | Catalog injected per node; per-node skills.visible overrides | Spec mode |
| Single Agent | A Spec with exactly one node | Low cost, high speed. No multi-agent coordination needed | Catalog injected on the single node | Single Agent mode |
| Agenda | A Planner agent dispatches other agents via tool calls | Flow needs to decide who runs based on what's happening, like an agent loop | Catalog injected on planner + each dispatched worker | Agenda mode |
| Loop | One agent calls tools in a single conversation until finalize | Balances speed and quality; exploratory research, dynamic decisions | Catalog injected on the loop agent | Loop mode |
| Director | A main agent + sub-agent team explores the context and drafts the message body | Takeover mode for high-quality long-form RP; ships with bundled skills pre-bound | Catalog injected on the main agent and sub-agent dispatches | Director mode |
Switch modes from the Execution mode dropdown in the extension drawer. Spec and Agenda can convert into each other from the editor (best-effort); Loop has a different structure, for which no analogous conversion exists.
Want to customize? Start with the Studio
After switching to any mode, the AI Iteration Studio is the first stop. Spec and Agenda present diffs for approval; Loop patches the profile directly. Both use the same panel and workflow.
Skills column
All modes use the same skills policy shape (skills.visible / skills.deny at the mode level, optional +-inheritance overrides per agent). For the full model, see Orchestrator integration. Director is the only mode with pre-bound default skills in its bundled profile; other modes start with visible: ["*"] (every installed skill is visible).
Common configuration
These settings are shared across modes.
Result injection
The orchestrator's final output (the "capsule") is injected into the prompt sent to the main model.
| Setting | Default | Description |
|---|---|---|
| Injection Position | atDepth | Where in the prompt to insert the capsule |
| Injection Depth | 0 | Depth at the chosen position |
| Injection Role | SYSTEM | One of SYSTEM / USER / ASSISTANT |
| Custom Instruction Prefix | (a default sentence) | Prepended to the capsule text |
The capsule is bound to the user-message floor that triggered orchestration. When you swipe on the same floor, the orchestrator reuses the existing capsule instead of re-running. When you change the configuration, the system reapplies the latest result.
Character card binding
Orchestration configurations can be bound to a character card. When bound:
- The configuration exports with the card. Anyone importing the card gets the recommended workflow automatically.
- Card creators can ship a workflow that's tuned for their character.
- Switching to the card auto-applies its workflow.
- The card can specify its own execution mode: Spec, Agenda, Loop, or Director.
- Selecting a preset in the card's dropdown switches that chat to it immediately; the card library is preserved either way.
- "Clear presets from this card" reverts to the global configuration.
- You can layer personal tweaks on top of a card-bound configuration.
Card presets work in every mode.
Import / Export
Spec and Agenda configurations export as JSON.
| Format | Identifier | For |
|---|---|---|
| V1 | luker_orchestrator_profile_v1 | Spec mode |
| V2 | luker_orchestrator_profile_v2 | Agenda mode |
Filenames look like luker-orchestrator-[agenda-][global|character-{name}].json. The exporter handles both global and per-card scope.
On import, the file's mode (Spec/Agenda) must match your current execution mode. You choose whether to apply to the global config or to a specific card.
Loop import/export
Loop mode does not yet provide file-level Profile import/export buttons. Use the AI Iteration Studio to reuse loop workflows.
Common configuration reference
The most common settings:
| Setting | Default |
|---|---|
| Execution Mode | spec |
| Injection Position | atDepth |
| Injection Depth | 0 |
| Injection Role | SYSTEM |
Full configuration reference
| Setting | Description |
|---|---|
| Execution Mode | Spec / Single Agent / Agenda / Loop |
| Injection Position | Where the capsule is inserted in the main prompt |
| Injection Depth | Depth of insertion |
| Injection Role | SYSTEM / USER / ASSISTANT |
| Custom Instruction Prefix | Prefix prepended to the capsule |
| Requests Per Minute Limit | Throttle for parallel nodes |
| Tool Call Retries | Retries for failed tool calls |
| Global API Preset | Default API connection preset |
| Global Chat Completion Preset | Default Chat Completion preset |
| Include World Info | Whether nodes see World Info |
<thought> Tag Stripping | Strip thinking tags from agent output |
| Message Folding Threshold | 1200 chars / 18 lines |
Mode-specific parameters (per-node, review, planner, loop tool toggles…) are documented in the per-mode pages.
Events and Plugin Integration
For other extensions and scripts
The Orchestrator dispatches a frontend event after a run, so other code can consume orchestration results without scraping the UI.
- Event:
luker.orchestrator.result - Channel:
getContext().eventSource - When: on
completed,reused,cancelled,failed
Payload:
| Field | Type | Description |
|---|---|---|
module | string | Always orchestrator |
event | string | Always luker.orchestrator.result |
status | string | completed / reused / cancelled / failed |
generationType | string | The triggering generation type |
chatKey | string | Current chat key |
at | string | ISO timestamp |
anchorPlayableFloor | number | Bound user turn floor (0 if unavailable) |
anchorHash | string | Anchor hash for validation |
capsuleText | string | Final injected guidance text |
stageOutputs | array | Compact stage outputs (completed / reused) |
reviewRerunCount | number | Review rerun count |
reason | string | Machine-readable reason for cancellation/failure |
note | string | Human-readable note |
error | string | Error message when failed |
Subscriber example:
const context = getContext();
context.eventSource.on('luker.orchestrator.result', (evt) => {
if (evt.status === 'completed' || evt.status === 'reused') {
console.log('Orchestrator capsule:', evt.capsuleText);
}
});Related
- AI Iteration Studio — the orchestrator's primary customization tool, shared across modes
- Spec mode — default DAG workflow
- Single Agent mode — degenerate Spec, single node
- Agenda mode — Planner-driven dynamic dispatch
- Loop mode — single-agent tool loop
- Director mode — multi-agent takeover; ships with bundled skills
- Skills overview — the knowledge-pack substrate shared across all modes
- Notes — author-side plot threads — agent-as-author thread tracker, scoped to the current chat
- Function Call Runtime — Agenda and Loop both rely on it
- Character Card Editor — shares the diff engine with Iteration Studio
- Card-Bound Presets and Personas — how the orchestration configuration is carried with character cards