| Binding | What it’s bound to | Example |
|---|---|---|
private | the forming agent only (the default — unchanged behavior) | “Front desk WiFi rotates weekly” |
anchored | a specific anchor (a subject: customer/guest/patient/case) | “Guest 42 is vegetarian” |
session | one conversation (short-term, decays after the session) | “On this call, asked for a Goa quote” |
canon | tenant-shared, authoritative knowledge (policies, catalog) | “Gold members get free late checkout” |
Binding is derived server-side from the ids you pass (
anchor_external_id → anchored, session_id → session, neither → private). canon is the one explicit exception, written through its own admin endpoint. A caller that passes only agent_id gets exactly today’s behavior — nothing changes until you reach for a subject.Anchors — who a memory is about
An anchor is a subject your agent acts on behalf of. You don’t pre-register them — pass your own id asanchor_external_id and Engram creates the anchor on first use, tenant-scoped so it’s shared across all of your agents.
Recall is isolated per subject
Pass the anchor on recall and you get only that subject’s memory (plus the agent’s private notes and tenant canon) — never another subject’s:Sessions — one conversation
A session is a single conversation/run. Session memory is short-term: it decays after the session ends (a fast0.20 decay rate), so “what happened on the last call” stays available for days, then fades — without polluting the subject’s durable profile.
Composed recall
Passanchor_external_id and session_id and Engram composes multiple scopes into one ranked result — the subject’s durable profile + this conversation’s recent context + tenant canon — in a single call:
session to anchored — short-term trivia graduating into the durable profile.
Canon — shared org knowledge
Canon is tenant-wide authoritative knowledge every agent and subject inherits: policies, catalog, rules. It’s curated, so it bypasses belief logic (no reinforcement/contradiction — your policy won’t get demoted by some agent’s private note) and gets a sticky0.01 decay rate. Writes are admin-scoped; reads are open to any authenticated caller and idempotent on identical content.
Endpoints
| Method | Path | Purpose |
|---|---|---|
POST | /v1/memories | store — accepts anchor_external_id / anchor_id / session_id |
GET | /v1/memories/recall | recall — same params; composes scopes |
POST | /v1/agents/{id}/conversations/ingest | ingest — accepts anchor_external_id / session_id |
POST GET | /v1/anchors · /v1/anchors/{id} | create / list / get a subject |
GET | /v1/anchors/{id}/memories | a subject’s full durable profile |
DELETE | /v1/anchors/{id}?purge=true | GDPR hard-erase — deletes the subject and all its traces |
POST GET | /v1/sessions · /v1/sessions/{id} · /v1/sessions/{id}/end | session lifecycle |
POST GET DELETE | /v1/canon · /v1/canon/{id} | canon (writes admin-scoped) |
Compliance: per-subject erasure
Subject-scoped recall plus the existing mutation audit trail give per-subject data boundaries — the HIPAA/GDPR story. A purge hard-deletes the subject and every trace bound to it, scoped to just that subject:The architecture behind this
Anchors reuse Engram’s entity graph; bindings layer onto the existing confidence, decay, and contradiction engine — applied per scope.