Skip to content

Memory

Memory Types

Understand Origin's six canonical memory types, how agents choose them, and which legacy aliases still appear at API boundaries.

Qi-Xuan LuUpdated 5 min read

At a glance

01

Origin's current public taxonomy has six canonical memory types: identity, preference, decision, lesson, gotcha, and fact.

02

Corrections are still valid capture content, but correction is not a canonical memory_type value in the current wire taxonomy.

01

Canonical values

The daemon stores canonical memory_type values as lowercase strings. Claude Code skills pick one of these values in local memory mode; model-equipped daemon paths can classify on the daemon side.

Use the type that best explains why the memory should matter later, not merely the first label that seems plausible.

memory_type

identity     durable facts about the user
preference   habits, style choices, or user preferences
decision     a choice made with rationale
lesson       root cause, workaround, or technical insight
gotcha       sharp edge, warning, or negative learning
fact         durable knowledge about people, projects, or tools

02

How to choose

Use decision for a concrete choice with rationale. Use preference for a recurring user habit or style. Use lesson when the work produced a reusable insight.

Use gotcha for traps and warnings. Use fact for durable knowledge about people, projects, tools, or the work itself. Use identity only for durable facts about the user.

Read capture quality

03

Corrections and supersession

A correction is a kind of capture intent, not a canonical memory_type. When a fact changes, capture the corrected statement and include what it supersedes.

Origin can then surface revision or supersession behavior while keeping future recall pointed at the current fact.

Read review and trust

04

Stability tiers

Origin treats identity and preference as protected because they describe the user. Standard work memories can still be important, but they are easier to supersede when new work changes the current record.

Missing or invalid types are treated as ephemeral at the stability boundary. Good captures should avoid leaving the type ambiguous when the agent can classify confidently.

Stability

Protected: identity, preference
Standard:  decision, lesson, gotcha, fact
Ephemeral: missing or invalid memory_type

05

Aliases and compatibility

Some high-level or legacy labels can still appear at API boundaries. They exist for compatibility or classification flows, not as the six user-facing values agents should prefer.

For new captures, choose one of the canonical values unless the daemon or skill explicitly handles the alias.

Aliases

profile    classify into identity or preference
knowledge  classify into fact, lesson, or gotcha
goal       deprecated; folds into identity
correction/custom/recap  legacy compatibility; folds into fact

06

API usage

memory/store accepts memory_type as an optional field. If you provide it, use the canonical lowercase value.

If you are building a Rust local tool, prefer origin-types so invalid values fail visibly instead of drifting through untyped JSON.

Read typed clients

Next

Glossary

A quick map of Origin terms: memory, handoff, page, space, daemon, MCP, local index, provenance, and eval language.

Read next