Skip to content

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.

Orchestrator enable toggle

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.

The Run Panel as a director run begins

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

Streaming progress: reasoning, text, and tool sections fill in real time

Expand any tool call to see its inputs and outputs:

A tool call expanded — arguments and results

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

Run Panel on a phone-sized viewport

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 ​

ModeWhat it isWhen to useSkillsDetailed docs
Spec (default)A fixed Stage → Node DAGDefault. You want a predictable pipelineCatalog injected per node; per-node skills.visible overridesSpec mode
Single AgentA Spec with exactly one nodeLow cost, high speed. No multi-agent coordination neededCatalog injected on the single nodeSingle Agent mode
AgendaA Planner agent dispatches other agents via tool callsFlow needs to decide who runs based on what's happening, like an agent loopCatalog injected on planner + each dispatched workerAgenda mode
LoopOne agent calls tools in a single conversation until finalizeBalances speed and quality; exploratory research, dynamic decisionsCatalog injected on the loop agentLoop mode
DirectorA main agent + sub-agent team explores the context and drafts the message bodyTakeover mode for high-quality long-form RP; ships with bundled skills pre-boundCatalog injected on the main agent and sub-agent dispatchesDirector 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.

SettingDefaultDescription
Injection PositionatDepthWhere in the prompt to insert the capsule
Injection Depth0Depth at the chosen position
Injection RoleSYSTEMOne 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.

FormatIdentifierFor
V1luker_orchestrator_profile_v1Spec mode
V2luker_orchestrator_profile_v2Agenda 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:

SettingDefault
Execution Modespec
Injection PositionatDepth
Injection Depth0
Injection RoleSYSTEM
Full configuration reference
SettingDescription
Execution ModeSpec / Single Agent / Agenda / Loop
Injection PositionWhere the capsule is inserted in the main prompt
Injection DepthDepth of insertion
Injection RoleSYSTEM / USER / ASSISTANT
Custom Instruction PrefixPrefix prepended to the capsule
Requests Per Minute LimitThrottle for parallel nodes
Tool Call RetriesRetries for failed tool calls
Global API PresetDefault API connection preset
Global Chat Completion PresetDefault Chat Completion preset
Include World InfoWhether nodes see World Info
<thought> Tag StrippingStrip thinking tags from agent output
Message Folding Threshold1200 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:

FieldTypeDescription
modulestringAlways orchestrator
eventstringAlways luker.orchestrator.result
statusstringcompleted / reused / cancelled / failed
generationTypestringThe triggering generation type
chatKeystringCurrent chat key
atstringISO timestamp
anchorPlayableFloornumberBound user turn floor (0 if unavailable)
anchorHashstringAnchor hash for validation
capsuleTextstringFinal injected guidance text
stageOutputsarrayCompact stage outputs (completed / reused)
reviewRerunCountnumberReview rerun count
reasonstringMachine-readable reason for cancellation/failure
notestringHuman-readable note
errorstringError message when failed

Subscriber example:

js
const context = getContext();
context.eventSource.on('luker.orchestrator.result', (evt) => {
    if (evt.status === 'completed' || evt.status === 'reused') {
        console.log('Orchestrator capsule:', evt.capsuleText);
    }
});

Built upon SillyTavern