← Back to journal
Concepts / June 4, 2026

Five Memory Types That Keep Coding Agents From Repeating Themselves

Not all memories are the same. Termyte sorts every memory into one of five types so the right knowledge shows up at the right time.

Why types matter

A memory that says "the auth module uses JWT" and a memory that says "don't add a semicolon to .d.ts files" are useful in very different situations. If they're all stored as generic text, you can't filter or trust them differently.

Termyte classifies every memory into one of five types. Search results show the type, and you can filter with <code>termyte search --type warning</code>.

The five types

Bugfix — a real defect was diagnosed and fixed. Example: "Session-resume crashes when the SQLite file is missing — fixed with an upsert on insert and a clearer error."

Convention — a coding, testing, or tooling pattern the codebase follows. Example: "TypeScript imports use .js extensions even for .ts sources (NodeStart)."

Warning — a gotcha the agent should not repeat. Example: "Don't add a semicolon at the end of .d.ts files; tsx prints a parse error."

Procedure — a repeatable, multi-step recipe. Example: "To bump the schema: add a migration, write a test, update runMigrations, run npm test."

Fact — a general statement that doesn't fit the other types. Example: "The MCP server's stdio transport is JSON-RPC 2.0."

How the LLM picks

During synthesis, the LLM is prompted to assign a type to each observation and memory. The five types are deliberately broad — specific enough to be useful for filtering, broad enough that the LLM almost always finds a fit.

Use it in search

# Only warnings
termyte search "imports" --type warning

# Only procedures
termyte search "schema" --type procedure

The type shows up next to every search result, so you can tell at a glance whether a memory is a "don't do this" or a "here's how".