Best Companions AI

Creators

AI Character Memory Setup

To set up memory for an AI character, split what it must always know (permanent fields), what it needs only sometimes (lorebook or journal entries) and what changes during the story (pins, chat memory and summaries). Below are the memory fields and documented limits on SpicyChat, Kindroid, Nomi, Character.AI, Janitor AI, CrushOn.AI and Replika.

Checked October 20, 2026Updated October 20, 2026How we review

Quick answer

  • Three buckets: always (permanent fields), sometimes (lorebook or journal entries) and changing (pins, chat memory, summaries).
  • Permanent text competes with the chat. SpicyChat advises 900 to 1,100 tokens for a whole character, CrushOn.AI about 1,500, and Janitor AI under 2,500.
  • Keyword entries load on demand: SpicyChat checks the last 4 messages and caps lore at about 20% of context; Kindroid journal entries take up to 8 keyphrases and 20 to 500 characters; Character.AI's Lorebook is in beta.
  • Creators control less than they expect. Character.AI says pins and chat memories are user-managed, and a shared Kindroid does not carry long-term memory or journals.
  • Write facts, not scenes: short statements, one tense, third person.

"Memory" on these platforms is several separate mechanisms. Our explainer on how AI companion memory works covers the mechanics and the ranking of AI companions with memory compares the apps. This page, part of our AI character creation section, is for building a character's memory on purpose, using one adult example: Nell Okafor, 38, a bookshop owner.

What You Control and What the User Controls

Character.AI's guide is blunt: its memory tools are "mostly user-side", with pins, a 400-character Chat Memories field and, for c.ai+ subscribers, auto-memories. What a creator controls is how well the character holds together when that context arrives. Other platforms split the work the same way:

PlatformYou write (creator)User or automatic toolsPublished numbers
SpicyChatPersonality; Lorebook entriesMemory Manager (paid), Semantic Memory 2.0Personality 5,000 characters; entries 2,000 characters, up to 5,000 per Lorebook; Memory Manager entries 250 characters; context 4K, 8K or up to 32K tokens
Character.AIDefinition; Lorebook (beta)Pins, Chat Memories, Facts (c.ai+)Definition 32,000 characters; 15 pins free, 30 paid; Chat Memories 400 characters
Janitor AIPersonality; scripts and lorebooks (beta)Chat Memory fieldUnder about 2,500 permanent tokens; context about 8K to 9K
KindroidPersonality, Key Memories, journalLong-term memory; Learned Context and cascaded memory (subscribers)Journal 20 to 500 characters, 8 keyphrases, 500 entries; Learned Context 800, 1,200 and 800 characters
NomiBackstory+ notesMind Map 2.0, Identity CoreEntries up to 10,000 characters; 50 per category eligible for recall, up to 10 high priority
CrushOn.AIDescription (permanent memory)Pins, Save Memories, Auto-SummarizationAbout 1,500 tokens advised; pins 800 characters recommended; 8K, 16K or 24K memory by plan
ReplikaBackstoryMemory tab: add, edit, deleteNo limits documented

Lorebooks and Journals: Memory That Loads on Demand

A lorebook entry has keywords and content. When a keyword appears in the recent chat, the content is added to the model's context. Character.AI's launch post describes the point: the lore "stays out of the way until the story calls for it", and one Lorebook can be attached to many Characters so a cast shares one canon.

SpicyChat documents the mechanics most fully. A keyword in the last 4 messages loads the entry, which stays active for about 2 turns, and loaded lore is limited to about 20% of the context, roughly 740 tokens on the free plan, 1,600 on True Supporter and 3,080 on I'm All In. Entries cannot trigger one another, since only chat messages are checked, and a * wildcard matches parts of words. Kindroid's journal works on keyphrases from your messages only, matched case-insensitively and verbatim, with individual and global entries; only a limited number can be recalled per message, and each recalled entry uses room that chat history could have used.

Rules that follow from these docs:

  1. One idea per entry, in 2 to 5 sentences, as SpicyChat suggests.
  2. Distinct keywords. Kindroid recommends unique keyphrases that are not too short, because generic ones recall irrelevant entries.
  3. Keep identity out of the lorebook. Who the character is belongs in the permanent fields.
  4. Treat public lore as public. SpicyChat says other users can read a public Lorebook's name, description, tags and all entries, though your chats are never shared.

Two sample entries for Nell:

The Lantern Room. Keywords: lantern room, back room, locked shelf. Content: The Lantern Room is the shop's back room, lit by paper lanterns Nell hung herself. It holds the books she will not sell. She lets in only people she trusts.

Harbor Press. Keywords: harbor press, small press, publishing. Content: Nell ran Harbor Press for nine years and closed it when the funding ended. She is proud of the work and sore about the ending, and she brings it up only when she chooses.

Pinned Memories, Chat Memory and Summaries

User-side fields hold what changes during the story. Janitor AI's help center suggests a short template for its Chat Memory: Environment, Relationship Dynamic, Current Plot Points, {{char}} notes, {{user}} notes and Important Past Events, as bullet points. Its tips: list facts, not scenes ("{{user}} was injured in the last fight"), stick to one tense, avoid vague fluff, and treat memory "like your best set of post-it notes, not a giant wiki".

Automatic summaries help long stories. Janitor AI suggests asking the model for a recap out of character and pasting it into memory, CrushOn.AI offers Auto-Summarization into long-term memory, and SpicyChat's Semantic Memory 2.0 summarizes chats for True Supporter and above. On Kindroid, Learned Context drops the least important older items when an area fills up, so its docs say to put a detail you want kept for good in Key Memories or a journal entry. For a temporary scene, Nomi's Current Roleplay field is meant to be updated or cleared as the roleplay changes.

A Memory Budget Worked Example

  • Always (permanent fields): Nell's age, the shop, her three habits, one line about the press, and that the user is a regular. Keep it near 900 to 1,100 tokens on SpicyChat, or well under 1,500 on Janitor AI.
  • Sometimes (lorebook or journal): the Lantern Room, the story of Harbor Press, Petra the baker next door, the shop cat. Each is a short entry with its own keywords.
  • Changing (user-side): what the user said last week, promises made, the current plot. Pins, chat memory or a recap.

Testing Memory

Test the buried detail on purpose. Character.AI's guide says to ask about a fact you placed at the bottom and to add context to test chats the way a user would, removing messages that sent a test sideways. Kindroid shows what was recalled: tapping a reply and choosing Long term memory lists the memories and journal entries used, and you can deprioritize an unhelpful one. For lorebooks, mention each keyword once in a fresh chat. If a fact still fails, Janitor AI's checklist applies: was it phrased clearly, buried under fluff, or already pushed out of the context window?

Memory text is data about you, so keep private details out of fields you may share. A Kindroid share excludes long-term memory, journals and chat history, but a public SpicyChat Lorebook is fully readable. See our guide to whether AI girlfriend apps store your chats, and the glossary entry on the context window for the limit behind all of this. Next, try the result with AI roleplay prompts.

FAQ

What is the difference between a lorebook and memory?

A lorebook is a set of keyword-triggered notes you write, loaded only when the chat mentions the keyword. Memory in the wider sense also includes pins, summaries and the recent conversation itself.

Do lorebooks give a character more memory?

They add facts when triggered but do not enlarge the context window. SpicyChat caps loaded lore at about 20% of context.

How big should a lorebook entry be?

Small. SpicyChat suggests 2 to 5 sentences and allows 2,000 characters; Kindroid journal entries run 20 to 500 characters.

Can creators edit what users' chats remember?

Not on Character.AI, where the guide calls its memory tools user-managed. Creators shape the starting text and lore; users keep the pins and chat memory.

Sources

Official pages and store listings we read for this page (last check October 20, 2026).

  1. docs.spicychat.ai
  2. docs.spicychat.ai
  3. docs.spicychat.ai
  4. docs.spicychat.ai: Context and reply limits by tier
  5. kindroid.ai: Help center: memory
  6. kindroid.ai: Help center: character creation
  7. kindroid.ai
  8. wiki.nomi.ai
  9. wiki.nomi.ai
  10. blog.character.ai: Lorebook beta 2026-07-24
  11. blog.character.ai: Memory features 2026-05-21
  12. support.character.ai
  13. help.janitorai.com: Memory / context window
  14. help.janitorai.com: Character creation fields
  15. aiwiki.crushon.ai
  16. aiwiki.crushon.ai: Official wiki: auto-summarization and memory
  17. help.replika.com

Menu

App reviews

Nomi logoNomiKindroid logoKindroidReplika logoReplikaSpicyChat logoSpicyChatCandy AI logoCandy AIJanitor AI logoJanitor AICrushOn.AI logoCrushOn.AINastia AI logoNastia AI

Up and down to move, Enter to open, Esc to close.