GC
6 min read·Updated 2026-04-13

Memory

Memory lets the bot remember facts across conversations. Pick one of seven presets in Settings — coding_balanced is the right default for most operators.

What memory does

Memory is what lets GolemCore carry knowledge between conversations. When you tell the bot something useful — a project fact, a fix for a bug, a preference — it can save that note and pull it back the next time the same topic comes up. Without memory, every chat starts from a blank slate.

Think of memory as the bot's notebook. Each note has a title, a body, and a category. The bot decides what is worth writing down, what to update when something changes, and what to throw away when a note becomes stale. You do not have to manage it by hand — but you do pick a preset that tells the bot how aggressively to write and how much of the notebook to read at the start of each turn.

How the bot reads its notebook

A naive bot would dump every past message into the next prompt. That burns through the model's context window in minutes and makes answers worse, not better. GolemCore avoids this by loading short summaries at the start of a turn and pulling full notes on demand only when the agent decides a note is relevant to what you just asked.

The result: the bot remembers a lot, but each turn starts with a tight, focused context.

Where notes live

Notes live in four buckets, sorted by how durable they are. You will see these names in the dashboard and in the glossary — they are useful when you want to know where a note ended up.

Right now

Notes about the current task. Cleared when the task ends. Used as scratch space within a session.

Working

What happened

Dated events: what happened in a past session. Stored by day. The bot uses these to remember context, like "you fixed this bug last Tuesday."

Episodic

What is true

Stable facts about your project, your tools, your preferences. The most durable bucket — these survive across many sessions.

Semantic

How to do it

How-to notes: a fix that worked, a command that did the job, a recipe the bot wants to reuse. Drawn on for similar problems later.

Procedural

Inside each bucket, the bot tags notes with a category: decision, constraint, failure, fix, preference, project_fact, task_state, or command_result. You will see these tags if you inspect the notebook directly, but you do not configure them — the bot picks the right one when it writes the note.

The seven presets

Open Settings → Memory in the dashboard. The first thing you see is a preset picker. Pick one that matches how you use the bot — you can change it later without losing anything.

Coding, fast

Lightweight — small token budget, only the top few notes per bucket. Use this for short chats where the bot does not need much context.

coding_fast

Coding, balanced

The default. Sensible budget, all four buckets active, promotes important episodic notes into long-term memory. Pick this if you are not sure.

coding_balanced

Coding, deep

Larger budget, deeper recall. Use this for long autonomous sessions where the bot needs to keep track of a lot of moving parts.

coding_deep

General chat

Minimal footprint. Skips procedural and most episodic notes. Use this for casual Q&A where memory just gets in the way.

general_chat

Research analyst

Tuned for research and writing. Heavy on semantic facts, light on procedural fixes. Good when you mostly accumulate knowledge, not commands.

research_analyst

Ops support

Tuned for incident response. Heavy on procedural notes (fixes, command results) so the bot can replay what worked last time.

ops_support

Disabled

Memory is fully off. Nothing is written, nothing is recalled. Pick this if you cannot store any cross-session data for privacy reasons.

disabled

Which preset to pick

Use coding_balanced if you are enabling memory for the first time. It is the default for a reason: it writes carefully (so the notebook does not fill up with noise), reads enough at the start of each turn to be useful, and lets the bot pull more detail when it needs it.

Switch to coding_deep only if you notice the bot forgetting things mid-session that it should still know. Switch to coding_fast if the bot feels sluggish or you mostly run short, throwaway chats. Switch to research_analyst or ops_support when your work fits one of those shapes — they trade some general usefulness for being better at one thing.

Tuning a preset by hand

Most operators never need to leave the preset picker. If you do, every parameter — token budgets, per-bucket top-K, promotion, decay, disclosure, reranking — is documented on its own page with the values each preset uses, so you can copy from the closest one and adjust.

See Memory Tuning for the full reference and a side-by-side preset comparison table.

LightRAG is optional

The built-in memory tool stands on its own. LightRAG is a separate plugin that adds a second, knowledge-graph-style way of searching across long documents — useful only when you have a large corpus to index. Turn it on under Settings → Plugins if you need it. Most users do not.

Where notes are stored on disk

Notes are saved as JSON Lines (.jsonl) files — one JSON object per line, appended over time. They live under the memory directory inside the workspace volume. The directory name is memory/ by default and can be overridden in Settings → Memory.

Notes that are not tied to a specific session, goal, or task — the “global” scope — live at the top of that directory. Notes attached to a session, goal, or task live in parallel trees under scopes/, each with the same items/… layout inside.

workspace/memory/ layout
text
memory/
├── items/                              # global scope
│   ├── semantic.jsonl                  # long-term facts
│   ├── procedural.jsonl                # how-to notes
│   └── episodic/
│       └── <YYYY-MM-DD>.jsonl          # dated events, one file per day
└── scopes/
    ├── session/<channel>/<sessionId>/
    │   └── items/…                     # same three files, scoped to one session
    ├── goal/<…>/
    │   └── items/…                     # scoped to one goal
    └── task/<taskId>/
        └── items/…                     # scoped to one task

Back up the whole memory directory

When you back up your notes, copy the entire workspace/memory/ tree, not just items/. If you only grab items/, you lose every session- and goal-scoped note under scopes/ — which is usually where most of your real history lives.

Restoring a notebook is a file copy: drop the directory back in place. The bot reads notes lazily on each turn through memory recall, so new files are picked up the next time memory is queried — no restart required.

What to do next