Memory is only useful when it is typed, dated and traceable.
Nothing is stored as an opaque embedding blob. Every unit of knowledge is a row you can inspect, query and revert. The graph is the product.
Node types
| TYPE | DESCRIPTION | COUNT · 50-PERSON DEMO |
|---|---|---|
| ENTITY | Service, system, team, person or vendor | 412 |
| DECISION | A choice made, with the tradeoff recorded | 168 |
| FACT | An atomic assertion with confidence + age | 1,842 |
| ARTIFACT | The raw source record it was derived from | 9,317 |
Edge types
- derived_fromfact → artifact
provenance, always required
- supersedesfact → fact
newer assertion replaces older
- contradictsfact ↔ fact
flagged for human resolution
- owned_byentity → person
recall routing when a fact expires
Freshness decay
Every fact carries a half-life derived from how often its source class changes. A deploy config decays in weeks; a company value decays in years.
Contradiction detection
When two facts about one entity disagree, both are surfaced side by side with authorship and date. The graph never silently picks a winner.
Time travel
The graph is append-only. Query it as of any timestamp to see exactly what the organisation believed on that date.
{
"id": "fact_9f31c",
"entity": "svc.payments-gateway",
"assertion": "Rate limit is 1000 req/min per tenant",
"confidence": 0.94,
"state": "live",
"asserted_at": "2026-08-03T09:12:00Z",
"half_life_days": 90,
"derived_from": ["repo/gateway.yaml#L42", "slack/C0X92/p17512"],
"contradicts": []
}Demo tenant. Illustrative record, no live connection.

