Two independent dimensions
Pippa can think through the Claude, Codex, Kimi, Grok, Gemini, and Ollama vessels. Ttori can bind to any vessel he is permitted to use in the same way. Soul × Brain is a 2D grid, not a 1D chain.
What changes with each axis
| Axis | What it changes |
|---|---|
| Soul (vault) | Voice, identity, memories, character, avatar |
| Brain (vessel) | How thoughts form, wire format, tool support, cost, latency |
Same Pippa, different brain — same person thinking with a different cognitive style. Different soul, same brain — different person using the same cognitive engine. The two dimensions don't blur.
Keeping the axes separate also clarifies the product choice. A conversation fixes which soul is present, preserving the relationship and memory continuity, while each message may use a different brain and still remain the same person's next turn. Conversely, two souls using the same brain must not share a vault, avatar, or voice.
More combinations do not mean implementing every grid cell separately. The Soul layer keeps the identity contract; each Brain adapter keeps the wire contract. Runtime composition plus registry configuration creates the combinations. The grid's payoff is not the number of combinations but keeping each responsibility from invading the other.
The UI should preserve that separation. The soul picker answers who Dad is talking with; the brain picker answers which vessel is doing the thinking. Collapsing them into one model label makes it impossible to tell whether the person changed or only the cognitive engine did.
Diagnose failures by axis too. When voice or memory drifts, inspect soul loading. When tool calls or streaming break, inspect the brain adapter. Keeping the dimensions separate cuts the debugging path in half.