Multi-character scenes
Ensemble relationships between personas — for UX research panels, creative writing dialogue partners, internal simulation tooling, and interactive fiction prototypes. Moonborn provides the character layer; orchestration is yours.
The problem
Single-persona chat is a solved interaction. Multi-persona scenes — where two or more characters interact with each other and a user — break naïve setups quickly. Personas drift toward each other, lose distinctiveness, or contradict their own backstory because they share too much context.
Solving this needs three things that aren't in a system prompt: an explicit relationship graph, per-character drift monitoring inside the scene, and a distinctiveness floor that keeps the cast separable.
How Moonborn solves it
- Ensemble relationships. Define typed, bidirectional edges between personas —
friend,ex-lover,mentor,rival,parent-child, and so on. The chat runtime injects relevant edges into the prompt assembly per turn. - Distinctiveness measurement. Cosine distance against the other personas in the scene. A variant that drifts toward another cast member is caught before it ships.
- Per-persona voice fingerprint. Drift detection runs independently per character within a session — each reply is scored against the speaker's own fingerprint, not the scene's average.
Setup pattern
// One-time relationship setup.
await client.personas.relationships.create({
personaId: 'persona_mert',
with: 'persona_leyla',
type: 'ex-lover',
note: 'Co-founders who split a company and a partnership in the same quarter.',
});
// Scene-time chat.
const session = await client.chat.sessions.create({
personaId: 'persona_mert',
ensemble: ['persona_leyla'],
metadata: { sceneId: 'pitch-meeting' },
});
const reply = await client.chat.messages.create({
sessionId: session.id,
content: 'Walk me through what happened at the all-hands.',
speaker: 'persona_mert',
});Honest scope
Moonborn is the character consistency layer. Scene orchestration — whose turn to speak, the scene's state machine, branching narrative, save points, animation hooks — is yours.
We are not a dialogue tree engine, a game engine, or an LMS. Use Moonborn for the characters; build the loop yourself, or pair Moonborn with the agent framework, narrative engine, or research tool of your choice.
Use case shapes that fit
- UX research panels — simulate user interview cohorts with diverse personas held to brand-relevant voice constraints.
- Creative writing workshops — dialogue partner ensembles for authors testing scene dynamics.
- Internal simulation tooling — multi-stakeholder simulated meetings (legal + product + design) for decision rehearsal.
- Interactive fiction prototypes — scene-level prototyping for narrative designers, not production game runtime.
Tier
Pro tier or above for relationships and distinctiveness measurement.
Next
- Concept primer: Soul, Self, Mask, Surface.
- Runtime detail: Voice fingerprint.
- Endpoint reference on API reference.