Loading lesson…
One Soul that does everything is a junior generalist. A team of Souls is closer to how real organizations work — but only if you design the handoff and the shared memory carefully. The fix is not a bigger model; it's specialization.
A single Soul carrying every responsibility — triage, drafting, deploying, customer support — eventually starts to sound like a junior generalist. The voice gets muddled, the memory stores collide, the refusal patterns conflict. The fix is not a bigger model; it's specialization. OpenClaw lets you spin up multiple Souls and hand work between them like an org chart.
| Symptom | Likely cause | Refactor |
|---|---|---|
| Voice drifts depending on the topic | One Soul carrying conflicting voice rules | Split: ops Soul vs writing Soul |
| Episodic memory mixes domains | All turns flow into one episodic store | Per-Soul private episodic, shared semantic |
| Refusal patterns contradict | Same Soul has both customer-facing and internal modes | Two Souls with explicit handoff protocol |
| Procedural store has dead workflows | Procedures from old roles never expired | Move retired procedures to a Soul that no longer ships work |
The most common multi-Soul shape is one router Soul plus N specialist Souls. The router has a thin Soul brief — its job is to read the request, classify it, and hand off to the right specialist. The router doesn't try to answer; it dispatches. The specialists carry the deep voice, memory, and procedures for their domain.
Handoffs fail when they pass too little or too much. Too little: the specialist re-asks questions the user already answered. Too much: the specialist drowns in irrelevant prior context and the voice doesn't switch cleanly. Define the payload shape explicitly.
// The handoff payload OpenClaw passes between Souls.
// Keep it small, structured, and free of router voice.
type Handoff = {
fromSoul: string;
toSoul: string;
reason: 'classified' | 'escalation' | 'fallback';
request: {
raw: string; // the user's original message, verbatim
intent: string; // the router's classification
entities: string[]; // people, systems, dates the router pulled out
};
context: {
recentTurns: number; // how many prior turns the specialist needs to read
sharedFacts: string[]; // semantic memory keys to preload
privateFacts?: never; // never share another Soul's private episodic
};
permissions: {
canRespondDirectly: boolean; // or must hand back to router
toolWhitelist: string[]; // narrower than the specialist's full kit
};
};The handoff is a typed payload, not a free-text 'pass it on.' Specialists trust the payload's shape; that's how voice and memory stay coherent.When you split into multiple Souls, the memory question gets harder. Some facts are organizational — every Soul should know them. Some are intimate to one Soul — a customer-success Soul shouldn't see the on-call Soul's incident notes. Decide the boundary deliberately.
| Memory | Sharing default | Why |
|---|---|---|
| Semantic facts about the org | Shared across Souls | All Souls need a consistent picture of reality |
| Episodic events | Private to the Soul that lived them | Voice and recall are tied to who was there |
| Procedural workflows | Shared by domain, private by Soul | Same procedure can be specialized per Soul |
| User preferences | Shared, but flagged by source Soul | All Souls benefit, but you want auditability |
| Sensitive context | Private, with explicit grant | Default-deny is the safe stance |
Users hate being asked the same question twice. The specialist Soul should know what the router already knows — but only what's relevant. The cleanest pattern is: router writes a one-paragraph summary of the conversation to date, hands it to the specialist as part of the payload, and the specialist treats it as a primer, not as full episodic context.
The big idea: multiple Souls work like an org chart with explicit handoffs. The wins come from specialization; the costs come from sloppy memory boundaries. Split when voice and memory genuinely diverge — and design the handoff before you wire it.
15 questions · take it digitally for instant feedback at tendril.neural-forge.io/learn/quiz/end-openclaw-souls-orchestration-creators
What is the core idea behind "Multi-Soul Orchestration: When To Split, How To Hand Off"?
Which term best describes a foundational idea in "Multi-Soul Orchestration: When To Split, How To Hand Off"?
A learner studying Multi-Soul Orchestration: When To Split, How To Hand Off would need to understand which concept?
Which of these is directly relevant to Multi-Soul Orchestration: When To Split, How To Hand Off?
Which of the following is a key point about Multi-Soul Orchestration: When To Split, How To Hand Off?
Which of these does NOT belong in a discussion of Multi-Soul Orchestration: When To Split, How To Hand Off?
Which statement is accurate regarding Multi-Soul Orchestration: When To Split, How To Hand Off?
Which of these does NOT belong in a discussion of Multi-Soul Orchestration: When To Split, How To Hand Off?
What is the key insight about "Don't share episodic by default" in the context of Multi-Soul Orchestration: When To Split, How To Hand Off?
What is the key insight about "From the community" in the context of Multi-Soul Orchestration: When To Split, How To Hand Off?
What is the recommended tip about "Evaluate systematically" in the context of Multi-Soul Orchestration: When To Split, How To Hand Off?
Which statement accurately describes an aspect of Multi-Soul Orchestration: When To Split, How To Hand Off?
What does working with Multi-Soul Orchestration: When To Split, How To Hand Off typically involve?
Which of the following is true about Multi-Soul Orchestration: When To Split, How To Hand Off?
Which best describes the scope of "Multi-Soul Orchestration: When To Split, How To Hand Off"?