Open app
Moonborn — Developers

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