Kraddie chats and memory
Chats that belong to a Kraddie, the digests chats leave behind, and which memory each chat may read.
A Kraddie remembers two kinds of things: its keepsakes, short lines it carries into every run, and chat digests, the facts and decisions its chats leave behind. Ordinary chats, those of no Kraddie, leave digests too, in one shared book. Which of all that a chat may read is its memory reach, decided on every read.
Kraddie chats
A Kraddie chat is a chat session that belongs to a Kraddie. It starts with the Kraddie's harness, model, effort and permissions, its identity, compass and keepsakes, and carries the Kraddie's avatar in the session lists. It is reopened, renamed and closed like any session.
A Kraddie chat opens in the Kraddie's working folder when it has one, otherwise in the group you are in. Set it in Chats and memory › Working folder: Use the open group, or Let each chat pick. Its automations work in the same folder.
If the Kraddie's agent cannot open a chat, the app asks you to pick another one in Tuning.
Chat digests
A chat digest is the short list of facts and decisions a chat leaves behind.
- When. The app writes one when a chat ends, or once it has rested for 10 minutes, and only when at least two messages are new since the last digest of that chat.
- Who writes it. The chat's own harness, in a background request of its own in plan mode, asked to list up to 12 lasting facts: choices made and why, conventions, commands that work, names of things and open questions. It is told to leave out chit-chat, code listings, file contents and anything secret, and not to use any tool.
- Secrets. Keys, tokens and passwords are redacted from the conversation before it is handed over.
- Size. Up to 12 facts per digest, 300 characters per fact; a book keeps up to 400 digests, dropping the oldest.
- Skipped while the chat is working, when spending is near its budget and when the digests of that Kraddie are off.
Only structured chats leave digests, not the terminal view of a harness.
Where they are kept
| Chat | Digests go to |
|---|---|
| A Kraddie chat | That Kraddie's own book, kraddies/<id>/digests.json |
| An ordinary chat | The shared book, chat-memory/digests.json |
Both live in the config folder.
Read, edit and forget
On a Kraddie's page, Chats and memory lists what its chats left behind. Each digest has Edit and Forget. A digest you edited is yours: later digests of that chat add new facts to it instead of replacing it.
Under Memory and reach, Write a digest when a chat ends or rests turns a Kraddie's automatic digests on and off. They are on by default.
Memory reach
Memory reach is which memory a chat may read. It is applied to the memory pack a chat starts with and to every memory_search and memory_read call.
- Every chat may read the digests of ordinary chats.
- A Kraddie chat reads its own Kraddie's keepsakes and digests.
- It also reads the memory of every Kraddie its Kraddie can read.
- Any chat reads a Kraddie you mentioned in it with
$. - Nothing else.
Sharing has a direction
On a Kraddie's page, Memory and reach › Can read memory of lists the Kraddies it reads, and Read by lists those that read it. The setting sits on the reader, and it is one way: it reads them, they do not read it back. It is not passed on either: if Owl reads Fox and Fox reads Kit, Owl does not read Kit.
krad kraddie share owl fox # Owl reads Fox
krad kraddie unshare owl fox # Owl stops reading FoxVisibility matrix
With Owl reading Fox, and Fox reading Kit:
| Chat | Ordinary digests | Owl | Fox | Kit |
|---|---|---|---|---|
| An ordinary chat | Yes | No | No | No |
An ordinary chat where you wrote $Owl | Yes | Yes | No | No |
| A chat of Owl | Yes | Yes | Yes | No |
| A chat of Fox | Yes | No | Yes | Yes |
| A chat of Kit | Yes | No | No | Yes |
A chat of Kit where you wrote $Owl | Yes | Yes | No | Yes |
"Owl" stands for Owl's keepsakes and digests.
Examples
- In a chat of Fox,
memory_searchfor "staging" can return a digest of an ordinary chat, a keepsake of Fox and a digest of Kit, never one of Owl. - In a chat of Owl,
memory_readofkraddie/kit/keepsake/1is refused: Kit is out of Owl's reach, since reading is not passed on through Fox. - Mention
$Kitin that chat of Owl, and Kit's memory is in reach for the rest of that chat.
Mentions with $
Type $ in the composer and pick a Kraddie by name. The mention shows as a chip; removing it leaves that Kraddie's memory out. When the message is sent, the named Kraddie's own memory pack is attached to it, and the Kraddie stays in that chat's reach.
The memory pack
When a chat starts, the app hands its harness a memory pack: the memory within its reach, ranked by relevance and recency and cut to a token budget. Keepsakes and the chat's own Kraddie rank higher.
| Pack | Budget |
|---|---|
| At the start of a chat | About 1,500 tokens |
Attached by a $ mention | About 800 tokens |
The pack tells the agent it can ask for more with the memory tools.
Memory tools
The app's MCP server, krad mcp (server name krad-code), offers chats two read-only tools. They make the MemorySearch and MemoryRead requests under the same reach, and are listed only while there is a Kraddie or an ordinary chat digest to read.
| Tool | Arguments | Returns |
|---|---|---|
memory_search | query, and limit from 1 to 30 (8 by default) | Memory ids with short excerpts |
memory_read | id | One memory in full |
Memory ids name their owner and kind:
kraddie/<id>/keepsake/<n> a keepsake, numbered from 1
kraddie/<id>/digest/<n> a digest of a Kraddie chat
chats/digest/<n> a digest of an ordinary chatFrom the CLI
| Command | What it does |
|---|---|
krad kraddie memory <name> | The keepsakes it carries and how many it may keep |
krad kraddie memory list <name> | Its keepsakes, digests, the Kraddies it reads and whether its digests are automatic |
krad kraddie memory show <name> | The same, with every fact |
krad kraddie remember <name> <text> | Hands it a keepsake |
krad kraddie share <reader> <read-from> | Lets the reader read the other's memory |
krad kraddie unshare <reader> <read-from> | Stops it |
krad kraddie chat new <name> | Opens a new chat of that Kraddie |
Only you change memory
remember, share and unshare sent from a chat are refused with forbidden. They work from your own terminal and in the app. Reading a Kraddie out of a chat's reach is refused with out_of_reach.
See the krad CLI for every command.