NPCs that Remember

Characters that build trust, hold grudges, and gossip about your players.
Drop-in API for Unity, Unreal, and any game engine.

Memory Depth
200ms Response Time
1 API Call
Martha the Barkeep trust: 0.23
What do you know about the missing prince?
Martha Keep your voice down... I've heard things. But we barely know each other. Come back when I trust you more.
I helped defend your tavern last week.
Martha memory recalled Aye, I remember that. Perhaps you're not so bad after all... The prince isn't dead. He's hidden in the old monastery. secret unlocked

Your NPCs have Amnesia

Players save the world, and the blacksmith still says
"Looking to protect yourself?" for the 47th time.

The Status Quo static dialogue
Player "I saved your daughter yesterday."
NPC "Welcome, traveler!"
no memory
Player "I killed your brother."
NPC "Welcome, traveler!"
still no memory
With Verbum memory-driven
Player "Hello again."
NPC "You! Martha told me what you did. Get out."
gossip spread
Player "Please, I can explain—"
NPC "Explain it to someone who trusts you."
trust: 0.12

NPCs form a Connected Society

Characters have relationships, share gossip, and guard secrets.
Click any node to see how information flows.

Martha the Barkeep
Central hub of town gossip
Connections4
Knows Secrets3
Gossip Reach87%
Gossip
Secret
Strong
Weak
NPC Relationships

NPCs know each other.

Define who knows who, their opinions, and what triggers gossip between them. When a player insults the barkeep, her friend the blacksmith hears about it.

  • Define relationship types (friend, rival, family, employer)
  • Set private opinions that affect behavior
  • Configure gossip triggers by topic
  • Relationships affect trust ceilings
relationships.ts
// Martha knows Iron Tom - they're old friends
await verbum.npcs.addRelationship('valdoria', 'npc_barkeep', {
  target_id: 'npc_blacksmith',
  target_name: 'Iron Tom',
  relation: 'old friend',
  opinion: 'Trust him with my life',
  gossip_triggers: ['weapons', 'forge', 'trouble']
});

// She's suspicious of the merchant
await verbum.npcs.addRelationship('valdoria', 'npc_barkeep', {
  target_id: 'npc_merchant',
  target_name: 'Silken',
  relation: 'business acquaintance',
  opinion: 'Something off about him',
  gossip_triggers: ['gold', 'deals', 'secrets']
});
Engrams

Knowledge gated by trust.

Engrams are fragments of knowledge that NPCs can reveal. Each has a trust threshold— players must earn the right to learn secrets.

  • Define keywords that trigger the engram
  • Set trust thresholds (0.0 to 1.0)
  • World secrets vs personal secrets
  • Emotional weight affects how NPCs reveal them
engrams.ts
// A world secret - the prince's location
await verbum.engrams.create('valdoria', {
  id: 'eng_prince_location',
  keywords: ['prince', 'missing', 'heir', 'royal'],
  fragments: [
    'The prince isn\'t dead.',
    'He\'s hidden in the old monastery.',
    'The church helped him escape.'
  ],
  trust_required: 0.7,  // Need to be allies
  engram_type: 'world'
});

// Give this knowledge to the barkeep
await verbum.npcs.addKnowledge(
  'valdoria',
  'npc_barkeep',
  ['eng_prince_location']
);
Gossip System

Reputation spreads organically.

When players interact with NPCs, word spreads through the relationship network. Track who knows what about the player across your entire world.

  • Automatic reputation propagation
  • Track allies, enemies, and neutral NPCs
  • See who's heard what about the player
  • Gossip triggers based on conversation topics
intelligence.ts
// Get everything NPCs know about a player
const intel = await verbum.players.getIntelligence(
  'valdoria',
  'player_42'
);

console.log(intel.stats);
// {
//   total_npcs_met: 12,
//   allies: 3,
//   neutral: 7,
//   enemies: 2,
//   avg_trust: 0.45
// }

console.log(intel.reputation);
// [
//   {
//     from_npc_name: "Martha",
//     sentiment: "positive",
//     summary: "Helped defend the tavern",
//     heard_by: ["Iron Tom", "Old Sage"]
//   }
// ]
Tool Calling

NPCs that take action.

NPCs don't just talk—they interact with your game world. Define tools once, assign them to any NPC.

  • Register reusable tools with handlers
  • Assign different tools to different NPCs
  • Trust-gated actions (king won't declare war for strangers)
  • Handlers execute automatically on conversation
tools.ts
// Register a tool once
verbum.tools.register({
  name: 'grant_title',
  description: 'Grant noble title to player',
  handler: async (args, ctx) => {
    await game.player.setTitle(ctx.player_id, args.title);
  }
});

// Assign to NPCs
await verbum.npcs.create('valdoria', {
  name: 'King Aldric',
  tools: ['grant_title', 'declare_war'],
  tool_requirements: {
    'declare_war': { min_trust: 0.9 }
  }
});

Everything works together.

Trust, memory, gossip, and secrets form an interconnected system.

Trust

Builds over conversations. Each NPC has a max trust ceiling— some will never fully open up.

Episodes

Significant moments are remembered and recalled naturally in future conversations.

Personality

Inner worlds with beliefs, fears, desires. A paranoid NPC behaves differently than an optimist.

Memory Profiles

Configure attentiveness, retention, and self-absorption. Some NPCs forget quickly; others never do.

Time Awareness

NPCs respond differently based on time of day. The barkeep is friendlier at night.

Anti-Jailbreak

Built-in protection keeps NPCs in character. Players can't trick them into breaking role.

One API call to talk.

Send a message, get a response. Everything else happens automatically.

conversation.ts
import { VerbumClient } from '@verbum/sdk';

const verbum = new VerbumClient('https://api.verbum.dev');

// Have a conversation
const response = await verbum.converse('valdoria', {
  npc_id: 'npc_barkeep',
  player_id: 'player_42',
  message: 'What do you know about the prince?',
  hour: 22  // Late night
});

console.log(response);
// {
//   text: "Keep your voice down...",
//   trust: 0.23,
//   engram_hit: null  // Secret not unlocked yet
// }

TypeScript SDK

Full type safety with exported interfaces for all API types.

npm install @verbum/sdk

REST API

Use from any language. OpenAPI spec available.

POST /api/worlds/:id/converse

Game Engine Plugins

Unity and Unreal plugins in development.

Coming Q2 2025

Your players deserve characters that give a damn.

Join studios building the next generation of immersive game worlds.