Skip to content

Guide

Staying consistent across sessions.

An AI loses the thread once a long campaign overflows its context window. Then it guesses. Familiar's answer is structural: the adventure you imported and a searchable record of your campaign are what the AI reads from. Consistency lives in your prep, not the model's short-term memory.

Why AI campaigns drift

Every chat model has a context window: a finite amount of text it can hold at once. A one-shot fits. A campaign that runs for months does not. Once the early sessions fall out of the window, they are gone, and the model fills the gap with whatever sounds plausible. The duke's daughter gets a new name. The oath the party swore quietly changes. The NPC who died is back behind the bar.

This is not a prompt you got wrong. The problem is not reasoning, it is storage. The fix is to stop asking the model to remember and start giving it something to read.

Do not trust a context window to be your campaign's memory. It is not built to be. Give the AI a persistent record to read from instead, and the drift goes away.

Structure does the remembering

Familiar treats the imported adventure and your campaign's accumulated record as the source of truth, not the conversation history. Two things hold the campaign, and both live in your Foundry world. First, the adventure you imported. Its journals, NPCs, statblocks and maps are the authored spine, fixed before the session. The AI reads the plot from there, it does not author it. Second, a persistent record of what your table actually did, which carries forward as you play.

The AI reads from that store when a detail comes up, the same way you flip back through your notes, and keeps it current with a short wrap-up at the end of the night.

What carries between sessions

Three shipped capabilities do the carrying. None of them depend on the model holding the campaign in its head. The record and the search work the same on any Foundry system.

  • Full-text search across every journal, character, scene, item and recorded transcript. When a name or a promise from three sessions ago comes up, the AI searches for it and reads the actual entry, instead of reaching for whatever sounds right.
  • A persistent memory bank that holds the campaign facts that should survive between sessions, so what was true last week is still true tonight.
  • A continuously-rewritten plot summary the GM can read later: a short standing answer to "where are we", kept current as you play.
  • Knowledge & Memory
  • Journals & Notes
  • Live Transcription

The end-of-session loop

The store stays accurate because you keep it current, and that takes about two minutes at the end of a session. The pattern is the same one a careful GM already uses: log what happened, keep one place that says where you are, and write down how next time opens. Familiar does the drafting; you confirm it is right.

  1. Capture as you play

    Turn on live transcription and speak instead of type. It transcribes the session in real time and saves it to a Foundry journal, so every named NPC, every decision and every promise lands in a searchable record while it is fresh.

  2. Wrap up at the end

    Before you close down, ask Familiar to summarise the session and save it to a journal. That recap, plus the rewritten plot summary, becomes the single "where we are" entry you both pick up from next time.

  3. Pick up next time

    At the next session the AI reads the recap, the plot summary, and any detail you search for, so it opens from what is written, not from what it half-remembers.

When Familiar writes to memory

That wrap-up keeps the readable record current; the memory bank fills on a schedule of its own. Facts do not trickle into it as you talk. Three moments write them, and two happen without you asking.

  • The conversation fills up. At roughly three quarters of the model's context window, Familiar compacts the thread: older messages fold into the plot summary, and the durable facts inside them are lifted into the memory bank.
  • You start a new chat, or archive one. That same extraction runs first, before the old thread is set down, so closing out a game night the ordinary way is what banks its facts.
  • You say "remember this". The fact is written then and there, in the wording you gave it.

Closing the browser mid-session skips all three. The conversation is safe and picks up where you left it, but nothing has been extracted from it yet. End the night with a new chat, or say what you want kept.

Seeing what it remembers

The bank is not a black box, and it is not read-only either. The memory panel sits in the chat header: browse what Familiar has stored, search it, correct a fact that came out wrong, delete one that should never have been kept. Pin the facts you want in front of the model every time, and a pinned fact leads the list and skips the relevance filter that trims the rest.

The same facts sit in your sidebar as a journal, "[Familiar] Campaign Memory". Its Memory page lists every one of them. Its Plot page carries the running summary, and each rewrite leaves the version before it as a dated revision, so a summary that wandered has a restore point behind it.

The bank holds 300 facts. Past that, the lowest-scoring ones drop, weighed by how often a fact has come up again, how recently, and what kind of fact it is.

If you play over MCP

Everything above describes the built-in chat, which does the reading and the writing for you. Over MCP, with Claude, ChatGPT, or Gemini driving from your own client, the same bank sits in the same journal. What changes is that nothing is slipped into the conversation on your behalf.

Your client asks for it instead. get-campaign-memories reads the bank and save-campaign-memory writes a fact to it, both ordinary tools your assistant can call mid-session. Tell it to check campaign memory when a session opens and it starts from the record rather than a blank slate. The difference is that you asked for it.

How it reads at the table

The same record answers questions in the moment. Say a rival merchant, call her the broker, shorted the party on a contract two sessions back, and tonight they track her down. You do not need to hold the figure or the grudge in your head.

When the broker is mentioned, Familiar searches the journals and the memory bank, finds the contract and the amount owed, and the AI speaks her in the voice your prep gave her, holding to what is on the page rather than improvising a new history. And if a detail was never written down, the search comes back empty. That is the honest answer, not an invented one.

What this does and does not promise

This is not perfect memory, and Familiar does not claim it. A model can still misread or skip a detail, the same way a tired GM can. What changes is where the answer comes from: instead of inventing a plausible-sounding fact, the AI looks it up in a record you control and can correct. The quality of the recall is the quality of your notes, and Familiar makes those notes cheap to keep.

Be clear about what the AI is not doing. It runs the DM's side of the table, the lookups, the NPC voices, the recaps, from what you imported and recorded. It does not author your plot or keep secrets from you. The story stays yours; Familiar carries the bookkeeping.

Install Familiar in Foundry, import a published adventure so the AI has a spine to read, and adopt the end-of-session wrap-up as a habit. From the second session on, the AI reads from a source that is current rather than guessing from a window that has overflowed. Questions about structuring prep, the memory bank, or your own pickup routine are welcome in the Discord.

More in Run your game

New to Familiar? I'm Ryan, the person who built it. The Discord is small and brand new, so if you join now I'll help you get set up myself.