Everything is an event
Every memory is an append-only event with a ULID, a type, content, an importance score, a timestamp, access counters, and a tier. Events aren’t edited in place: an update appends a new event, and a removal either archives (soft delete) or purges (hard delete). That keeps history honest and recovery easy.Types of memory
PMB separates memory by type so the agent can treat each kind with the right weight.Facts that change: keyed facts
Some facts have exactly one current value - your city, your employer, a pet’s name.record_keyed_fact stores these as (subject, attribute, value) and
upserts: writing a new value archives the old one, so recall returns only the
current value while the history stays queryable.
Importance, pinning, and forgetting
Importance
Every event has a 0.0-1.0 score that drives ranking and decay. Defaults vary
by type - a fact starts higher than a routine activity.
Pin
Pinning locks a memory at max importance; a pinned memory is never
auto-archived.
Forgetting curve
A daily decay lowers importance over time; old, low-importance memory is
eventually archived. Tune with
decay.factor_per_day or run pmb decay.