Node types
Every node in the knowledge graph has atype field from this fixed set:
| Type | Description | Examples |
|---|---|---|
person | An individual | CEO, board members, contacts |
organization | A company, team, or institution | Acme Corp, Finance team |
project | A project or initiative | Q3 Fundraising, Website Redesign |
decision | A decision that was made | ”Hired Alice as CFO”, “Moved to weekly standups” |
event | A meeting, conference, or occurrence | Board meeting, Series A close |
concept | An abstract idea or topic | Machine learning, Compliance policy |
fact | A specific piece of information about an entity | ”Prefers morning meetings”, “Lives in Toronto” |
Edge types
Edges represent typed relationships between nodes:| Category | Types | Description |
|---|---|---|
| Structural | works_on, decided, attended, relates_to, belongs_to, authored, mentioned_in | General relationships between entities |
| Personal | spouse, parent, child, sibling | Family relationships |
| Professional | reports_to, manages, collaborates_with, advises, represents | Organizational hierarchy and work relationships |
| Organizational | member_of, founded, invested_in | Membership and investment relationships |
relates_to is the generic fallback — use it when no specific type fits.
Temporal metadata
Every node and edge carries temporal metadata:Decay classes
| Class | Half-life | Behavior | Examples |
|---|---|---|---|
permanent | Never | Confidence never decreases | Legal name, date of birth |
slow_decay | ~180 days | Halves every 6 months | Employer, city of residence |
fast_decay | ~21 days | Halves every 3 weeks | Coffee preference, current project focus |
new_confidence = current × 0.5^(days / half_life). See Dreaming for how the decay pass works.
Sensitivity levels
Every node has a sensitivity classification assigned at creation time:| Level | Description | Export behavior |
|---|---|---|
public | No restrictions | Freely exportable |
internal | Default for most facts | Exportable with standard authorization |
confidential | Sensitive business information | Requires elevated authorization |
restricted | Highest sensitivity | Bulk export blocked |
Node schema
Edge schema
Storing facts
When storing a new fact via thememory-store skill:
A contact’s canonical attributes (title, organization, primary email/phone, timezone, location, pronouns, and similar — see contacts) are not stored as facts.
memory-store detects a write that maps to one of these and redirects it to the contact record instead of creating a fact node, so there’s a single source of truth for them. The knowledge graph still holds richer, narrative facts about a person.Validation
Before creating a new fact, the memory validator checks:| Check | Outcome |
|---|---|
| Deduplication (cosine similarity > 0.92) | Updates lastConfirmedAt and merges properties instead of creating a duplicate |
| Contradiction (conflicting fact exists) | Higher confidence wins; lower is archived with previous values preserved |
| Equal confidence conflict | Flagged for CEO review via alert channel |
| Write rate limit (50 per task) | Excess writes dropped with audit log warning |
Memory and the knowledge graph
Conceptual overview of the four memory tiers and how they work.
Dreaming
How the decay pass processes temporal metadata overnight.