MemoryLake
Back to all articles
Pain PointMay 22, 20268 min read

Why does Janitor AI forget character details?

You write a long interactive-fiction scene with a character you have built up over months — their scar, their accent, their backstory, the half-finished promise they made in chapter two. Thirty messages in, your character no longer remembers any of it. The accent slips. The scar disappears. The promise never happened. Worse, you have to keep rewriting the same character bible at the top of every fresh chat.

This is how Janitor AI is built, and there is a clean way to fix it.

The short answer

Janitor AI forgets character details because JLLM, its default model, has a working context window of roughly 8,000 to 9,000 tokens. After 25 to 30 messages of long-form writing, the earliest character notes get pushed out and the AI no longer sees them. A persistent character memory layer that re-injects the right details into every turn fixes this.

Why Janitor AI forgets character details

Janitor AI is a popular host for long-form interactive fiction, and the forgetting you see is a direct consequence of the model's context budget.

1. JLLM's context window is tight. JLLM, the platform's in-house model, runs on a context window of roughly 8,000 to 9,000 tokens — enough for short scenes, not enough for a multi-chapter project. As messages accumulate, the oldest content is the first to fall off.

2. The 25 to 30 message cliff. The Janitor AI help center and community guides both note that after 25 to 30 messages, the initial exchanges in a chat sit outside JLLM's working window. That is the moment characters "forget how we met", drop the scar, or revert to a generic voice — the early definition has literally left the prompt.

3. Character cards and personality fields are permanent tokens, but small. The character's Personality, Scenario, and any Advanced Prompts are reserved as permanent tokens that stay in every request. They are tightly capped. A detailed character bible cannot fit there without crowding out the writing itself.

The result is a model that can write your character beautifully for a chapter, then quietly start writing someone slightly different.

What you lose when Janitor AI forgets character details

For writers, novelists, and interactive-fiction designers, the forgetting hits where it hurts most — continuity:

  • Physical details drift. The scar, the limp, the prosthetic hand introduced in scene one quietly vanish by scene ten.
  • Voice flattens. The careful speech patterns, vocabulary, and accent you defined become generic narrator voice as the original character card leaves the window.
  • Plot promises evaporate. "I'll meet you at the lighthouse on the third day" becomes a forgotten line, because the message that contained it is no longer in the prompt.

The fix is not "write a longer character card". It is to keep the character's canonical bible outside the chat, then feed Janitor AI only the slice it needs each turn.

Janitor AI's built-in workarounds (and where each falls short)

Janitor AI ships features that partly address character drift. None of them solve it for long projects.

Chat Memory. The platform lets you write or auto-generate a summary of the chat so far, which is then included as permanent tokens with every request. This is the closest native answer. It is still bounded by the same 8K-9K window, summaries lose specificity (the scar becomes "has a distinguishing mark"), and you have to maintain Chat Memory by hand as the story grows. The Janitor AI Chat Memory & Context Management guide walks through the trade-offs.

Character Personality and Scenario fields. Reserved as permanent tokens, so they survive every turn. They are also short by design — long enough for a one-page card, not for a multi-novel canon.

Proxies to longer-context models. Many writers swap in a reverse proxy to use a non-JLLM model with a bigger window. This buys context room but introduces setup overhead, sometimes rate limits or extra cost, and still leaves character memory tied to one chat in one tool.

For a quick scene, the natives are fine. For a writer building a novel across many chats and many sessions, they are not.

Where Janitor AI's built-in memory falls short

The deeper issue is that character memory lives inside the chat, not above it. Start a new chat with the same character and you start almost from scratch. Move your project to Claude or ChatGPT for a heavy editing pass and the character bible has to be rebuilt by hand for those tools too.

Serious interactive-fiction writers, novelists, and game masters end up keeping a "true canon" doc on the side and pasting from it constantly. That doc is the real character memory — it just is not connected to the AI.

How MemoryLake fixes Janitor AI forgetting character details

MemoryLake is a cross-model memory layer that holds the character's canonical bible outside any single chat or tool. The bible lives in a Project. Janitor AI reads from it each turn instead of relying on what fits in the window.

  • A canonical character bible per project. Physical details, voice patterns, relationships, and plot promises live as structured entries in the MemoryLake Project. They never fall out of the 8K-9K window because they are injected on demand, not stuffed once.
  • 10,000× more character context than raw prompting. MemoryLake's retrieval engine can hold an entire series bible per project and feed Janitor AI only the relevant details per turn, so the scar reappears when the character takes off their coat, not when you remember to remind the model.
  • Portable to every other writing tool. The same character bible works in ChatGPT, Claude, Gemini, and Grok. When the writer moves the scene out of Janitor AI for an editing pass, the character travels with them.

MemoryLake scored 94.03% on the LoCoMo long-context benchmark, the top result published as of 2026, with millisecond retrieval and AES-256 end-to-end encryption.

Connect MemoryLake to Janitor AI in 3 steps

  1. Create a project and load your character bible. Sign in to MemoryLake, open Project Management, click Create Project, and name it after the work, e.g. "The Lighthouse — series bible". Upload existing character sheets, backstory docs, and reference imagery through the Document Drive — PDF, Word, Excel, PowerPoint, Markdown, and images are all supported. Add structured entries for each character's voice, scars, relationships, and promises in the Memories tab.
  2. Generate an MCP Server endpoint. Open the MCP Servers tab inside your project, click Add MCP Server, name it "Janitor AI integration", and click Generate. MemoryLake returns an API key ID, secret, and endpoint URL. Copy the secret immediately — it is shown only once.
  3. Connect Janitor AI. Janitor AI does not speak MCP natively, so use the REST API with your Bearer token to pull the relevant character memory at the start of every session and paste it into the character card or scenario prompt. For longer projects, run a small script that refreshes the character bible block whenever you open a new chat.

Frequently asked questions

Does Janitor AI have long-term memory?

Not really. Janitor AI keeps Personality, Scenario, and Chat Memory as permanent tokens, but everything else is bounded by JLLM's 8K-9K context window. After about 25 to 30 messages, the earliest exchanges fall outside that window and the AI no longer sees them.

How do I make Janitor AI remember my character details?

Keep the character bible outside Janitor AI in a persistent memory layer like MemoryLake, then inject the relevant slice into the character card or scenario at the start of every chat through the REST API. The model only sees what fits in the window, but what fits is always the right details.

What is the Janitor AI memory limit?

JLLM's working context is roughly 8,000 to 9,000 tokens. Character cards, Chat Memory, Advanced Prompts, and recent messages all share that budget, which is why long writing sessions begin to forget after 25 to 30 messages.

Can lorebooks fix character forgetting?

Lorebook-style entries help, but they still consume the same token budget. They surface relevant lore when triggered, which is useful, yet the underlying window does not grow.

Can I share the same character bible across Janitor AI, ChatGPT, and Claude?

Yes. MemoryLake stores the bible in a model-neutral format inside a Project, so the same canon works in Janitor AI, ChatGPT, Claude, Gemini, and Grok via REST or MCP.