Documentation Index Fetch the complete documentation index at: https://curia.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Curia’s knowledge graph stores all long-term memory in Postgres as typed nodes and edges with temporal metadata. This page documents the data model.
Node types
Every node in the knowledge graph has a type field from this fixed set:
Type Description Examples personAn individual CEO, board members, contacts organizationA company, team, or institution Acme Corp, Finance team projectA project or initiative Q3 Fundraising, Website Redesign decisionA decision that was made ”Hired Alice as CFO”, “Moved to weekly standups” eventA meeting, conference, or occurrence Board meeting, Series A close conceptAn abstract idea or topic Machine learning, Compliance policy factA 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_inGeneral relationships between entities Personal spouse, parent, child, siblingFamily relationships Professional reports_to, manages, collaborates_with, advises, representsOrganizational hierarchy and work relationships Organizational member_of, founded, invested_inMembership and investment relationships
relates_to is the generic fallback — use it when no specific type fits.
Every node and edge carries temporal metadata:
interface TemporalMetadata {
createdAt : Date ; // when first recorded
lastConfirmedAt : Date ; // last time evidence reinforced this
confidence : number ; // 0–1 scale, decays over time
decayClass : DecayClass ; // how fast confidence decays
source : string ; // provenance: "agent:coordinator/task:abc/channel:cli"
}
Decay classes
Class Half-life Behavior Examples permanentNever 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
Confidence decays using a half-life model: 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 publicNo restrictions Freely exportable internalDefault for most facts Exportable with standard authorization confidentialSensitive business information Requires elevated authorization restrictedHighest sensitivity Bulk export blocked
Sensitivity is immutable after creation — changing it requires a manual data migration. Skills can provide an explicit sensitivity override when storing facts, or let the system auto-classify using keyword analysis.
Node schema
interface KgNode {
id : string ; // UUID
type : NodeType ; // person, organization, project, etc.
label : string ; // display name
properties : Record < string , unknown >; // arbitrary key-value data
embedding ?: number []; // VECTOR(1536) for semantic search
temporal : TemporalMetadata ;
sensitivity : Sensitivity ;
}
Edge schema
interface KgEdge {
id : string ; // UUID
sourceNodeId : string ; // UUID of the source node
targetNodeId : string ; // UUID of the target node
type : EdgeType ; // works_on, reports_to, etc.
properties : Record < string , unknown >; // arbitrary key-value data
temporal : TemporalMetadata ;
}
Storing facts
When storing a new fact via the memory-store skill:
interface StoreFactOptions {
entityNodeId : string ; // the entity this fact is about
label : string ; // the fact text
properties ?: Record < string , unknown >;
confidence ?: number ; // default: 0.7
decayClass ?: DecayClass ; // default: "slow_decay"
source : string ; // provenance string
sensitivity ?: Sensitivity ; // override auto-classification
sensitivityCategory ?: string ; // hint for auto-classifier
}
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.