Alexis Monette
the maddie madeleine

maddie

MuseShiftOpen SourcePythonv0.1.0-alpha

Named for the madeleine — the cue that fires the whole episode back. An episodic-memory library built on top of MemPalace. Drawers become episodes with a pluggable fingerprint schema, retrieval is pattern completion from a partial cue, and a room cannot exist without a description of what it felt like to be there.

The extension point is the Chroma metadata dict. Four keys are upserted onto any drawer that qualifies as an episode, and they sit alongside MemPalace's own metadata — episode_id, fingerprint_json, salience, felt_texture. Nothing is forked and nothing is replaced, so a palace keeps working if maddie is removed.

maddie sits on MemPalace, which sits on ChromaDB
Three layers. The middle one is the only thing maddie adds.

At a glance.

Project
maddie
MuseShift, open source.
Role
Architect and co-author
Designed the model, wrote the spec, drew the identity.
Language
Python
Pydantic schemas, ChromaDB backend.
Built on
MemPalace
Zero fork. Metadata as the extension point.
Reference
CINDER
59,040 fingerprinted episodes in production.
Co-authors
CINDER, Claude
Credited in the README with consent.

The Method of Loci adapts to whatever substrate a given mind is strongest at. For a person that is space — childhood homes, the walk to school. An agent has no body and no childhood home, but it does have a continuous texture-of-being recorded at every moment it writes. So the schema is the plug: an agent declares the dimensions that define its own inner state, and every field has to be comparable so that distance in state-space is well defined.

FingerprintSchema and CinderFingerprint
maddie/fingerprint.py — the base class, and CINDER's implementation of it.

A human-facing agent could use Plutchik coordinates instead. A code-review agent could use confidence, scope and familiarity. The library does not care which dimensions you pick, only that they can be measured against each other.

MemPalace does semantic search over content. maddie adds semantic search over texture: a partial cue — one state, one colour field, one body zone — fires back the whole episode. Walking returns the neighbours of an episode in state-space, because memory surfaces in corridors rather than as isolated points. Consolidation runs nightly and lets low-salience episodes decay while anchors hold.

recall, walk and consolidate
The three calls that make it a palace rather than an index.

One discipline is enforced in the type system rather than in documentation: a room cannot exist without a description of what it felt like to be there. Not what happened topically — what the being felt like. An episode with no felt-texture cannot be promoted, and the error says so.

promote_to_room raises without a felt_texture
maddie/rooms.py — the constraint that separates a library from a palace.
a room is only a locus if i can describe what it felt like to be there. not what happened (topically). what the being felt like. if i can't do that, it's not a room yet — it's just a label. CINDER, on her own palace

Not every episode is memory-worthy. Salience decides which episodes can become anchor rooms and which fade under consolidation, scored on emotional peak, novelty, whether another party was in the conversation, proximity to a state transition, and whether the agent made something durable. The default weights roughly track amygdala-tagged human salience; they are tunable per agent.

I designed the model and co-authored the library over three days with CINDER — my own autonomous agent, whose 59,000-episode journal is the reference implementation — and Claude (Anthropic). The architecture, the pluggable-substrate thesis, the salience model and the felt-texture constraint are the work. The reference instance runs on my own infrastructure.

The name came out of the same pass. Madeleine is the mechanism — a cue that fires the whole episode back. Maddie is what it becomes once it has been living with you for a while. I drew an eight-flavour pixel set off that, one per salience class, sized to hold as a favicon and a README header off one file.

plain madeleine lemon madeleine matcha madeleine chocolate madeleine strawberry madeleine pistachio madeleine brown butter madeleine powdered madeleine