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
- 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.
- 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.
- 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.