CortexDB · Customer Briefing
Building
on CortexDB.
A practitioner's guide to the API, the mental model, and the enterprise rollout — for the team that's about to build something on top of it.
cortexdb.ai · An event-sourced memory database for AI agents
v1 · Draft
What this deck is

One walkthrough — two altitudes.

Part I · Individuals

Alice and her agent

How one user's experiences become an interrogable, explainable memory. The five layers, the bi-temporal model, the "why" trail, and proportional forgetting. Read this first to learn the primitives.

Part II · Enterprises

Initech and its 3,000 humans

How the same primitives scale to a company: scope trees, four-tier authorization, workspaces, manager and exec views, a worked engineering RCA application, and a rollout playbook.

Source documents: API_DESIGN_V1.md and CORTEXDB_FOR_THE_ENTERPRISE.md. This deck distills both for someone building on top of the API.

Contents

The road map.

01
What CortexDB is, in one paragraph
10
The scope tree at enterprise scale
02
The five memory layers
11
The four-tier authorization stack
03
The four verbs of the API
12
User journeys at each org level
04
Alice's experience envelope
13
Workspaces are scopes
05
Three identities per call
14
Worked application — RCA-Copilot
06
Recall — the stratified pack
15
Other applications
07
"Why do you think that?"
16
Rollout playbook
08
Bi-temporal & as-of queries
17
What changes culturally
09
Forgetting, proportionally
18
Where to go next
01 · What CortexDB is

An event-sourced
memory database
for AI agents.

Agents submit experiences as they happen. CortexDB captures them losslessly, derives structured memory from them in five distinct layers, and lets the agent — or anyone with the right authorization — recall, explain, revise, and forget any of it later. With full bi-temporal history and a provenance trail back to the original events.

Not a vector store

Vector search is one signal of many. We rank with six.

Not chat history

Chat history is one modality of one layer.

A persistent substrate

An AI system that learns from its own experience over time.

Three sentences of philosophy

The whole API rests on these.

01

Events are immutable.

The write-ahead log is the source of truth. Every derived layer can be rebuilt by replay. No API mutates a stored event payload.

02

Memory is layered.

Five distinct, addressable layers: Events, Episodes, Facts, Beliefs, Understanding. Each has its own lifecycle. Each points back to the experiences that produced it.

03

Every claim has a trail.

When the system says "Acme is likely to renew," it can tell you why — which facts, which episodes, which raw events. Memory without an audit trail is gossip.

02 · The five layers

From raw experience to synthesized understanding.

EVENTS Lossless capture A WAL entry Immutable EPISODES Bounded causal chains A pursuit, an incident Sealed when done FACTS Triple-shaped assertions (subj, pred, obj, validity) Supersedable BELIEFS Probabilistic conclusions Confidence + interval Continuously revisable UNDERSTANDING Synthesized concepts Versioned concept nodes Never overwritten window extract rank · revise synthesize every derived record carries a supports[] field — the "why" trail, walkable in reverse
Why five and not three

Other systems collapse layers. We don't.

SystemWhat they haveWhat they can't answer
Mem0 Flat facts only — really, ranked sentences "Why did this result rank where it did?" — the derivation isn't stored.
Zep Facts + episodes, bi-temporal facts "What did we observe vs. what did we conclude?" — Belief folded into Fact.
Letta Tiered memory, archival passages No explicit Belief layer at all; no synthesized Understanding.
CortexDB Events · Episodes · Facts · Beliefs · Understanding "Why does the system think that?" — Beliefs cite Facts, Facts cite Episodes and Events, Understanding cites everything. The trail is always walkable.

The five layers are the minimum set that lets us answer every recall mode an enterprise will ask of a memory system.

The five-stage cycle

Only one stage blocks the client.

StageWhat happensSynchronous?Latency
CaptureEvent appended to the WALyes~5 ms
ExtractLLM pulls structured facts and entitiesno~200–500 ms after
IndexContent indexed for retrieval (BM25 + vector)no~50–100 ms after extract
ReconcileConflicting facts supersede; beliefs reviseno~100–300 ms after extract
ConsolidateEpisodes seal; understanding nodes updatenobackground, periodic

A high-volume agent can fire hundreds of events a minute because Capture is the only synchronous guarantee. The lifecycle stream surfaces the rest as SSE events — clients that need read-after-write can opt into ?wait=indexed or ?wait=consolidated.

03 · The API surface in four verbs

Most days, you'll only call four endpoints.

WRITE

POST /v1/experience

Submit a structured experience envelope. Returns 202 with an event ID and a lifecycle stream URL. Triggers the async pipeline.

+ /v1/experience/bulk · /v1/blobs

READ

POST /v1/recall

Returns the stratified pack — facts, beliefs, episodes side-by-side with a synthesized prose context block and full provenance trail.

+ layer reads: /v1/events · /v1/episodes · /v1/facts · /v1/beliefs · /v1/understanding

QUESTION

POST /v1/answer

Recall composed with an LLM call. Same provenance contract. The LLM selects from the pack — it cannot invent citations.

+ /v1/beliefs/why — explainability graph

FORGET

POST /v1/forget

Proportional removal. Default keeps events, drops derived layers. GDPR-grade erasure lives at /v1/erasures with preview, manifest, and audit.

+ /v1/erasures/preview · /v1/erasures/{id}

Everything else is read-only introspection: /v1/lifecycle/stream (SSE), /v1/audit, /v1/scopes, /v1/admin/*.

Part I

Individuals.

One user. One agent. One week. Every primitive in motion.

04 · Monday 9:14am · the experience lands

Meet Alice.

Alice is a sales rep at Initech. She uses an AI agent — support_bot — for note-taking, follow-ups, and recall.

Alice doesn't talk to CortexDB. She talks to her agent. Her agent talks to CortexDB.

Alice · Mon 9:14am
"Just got off a call with Priya at Acme. She said they're impressed with the POC but the procurement team is dragging — she's worried about a Q3 close."

support_bot packages that single sentence as an experience envelope and submits it.

POST /v1/experience
Authorization: Bearer ***
X-Cortex-Actor: agent:support_bot

{
  "scope": "org:initech/dept:sales/team:enterprise/user:alice",
  "observed_actor": {"id":"user:alice", "type":"user"},
  "subject":        {"id":"user:alice", "type":"user"},
  "modality": "conversation",
  "content": {
    "kind": "message", "role": "user",
    "text":  "Just got off a call with Priya..."
  },
  "context": {
    "observed_at": "2026-05-08T13:14:00Z",
    "intent":     "deal_status_update",
    "labels":     ["acme", "sales", "q3-launch"]
  },
  "directives": { "extract": ["facts", "entities", "beliefs"] },
  "idempotency_key": "alice-chat-2026-05-08-001"
}
05 · The most important enterprise concept

Every envelope carries three distinct identities.

Collapsing them is the most common API design mistake in this space. CortexDB keeps them explicit.

caller

Who is making the API call

Derived from the token's sub claim. Used for policy, audit, and rate-limit attribution.

agent:support_bot

observed_actor

Who performed the experience

May differ from caller — delegated agents, import jobs, admin writes all break the moment you collapse this.

user:alice

subject

Who the memory is about

Often the same as observed_actor — but when Alice takes notes about Priya, subject becomes Priya.

user:alice

Examples of when the three diverge

  • Slack ingestion: caller = agent:ingester, observed_actor = user:alice, subject = user:alice
  • Admin correction: caller = user:admin_bob, observed_actor = user:admin_bob, subject = user:alice
  • Mem0 import: caller = service:importer_v1, observed_actor preserved from source, subject preserved from source
~400ms later · the layers form

One sentence → two entities, three facts, one belief.

Watched live over the lifecycle SSE stream. None of this existed before.

EVENTS

1 event

evt_01HX_msg_001

Raw message, immutable, in the WAL

EPISODES

1 opened

ep_01HX_acme_deal

"Acme Q3 deal pursuit" — chain begins

FACTS

3 extracted

(acme, primary_contact, priya)
(acme, deal_stage, poc_complete)
(acme, procurement_blocker, true)

BELIEFS

1 opened

will_close_q3 = uncertain @ 0.42

Mixed evidence — POC ✓, procurement ✗

UNDERSTANDING

1 seeded

B2B SaaS Sales Cycle

Partial — needs more episodes to firm up

event: captured        → evt_01HX_msg_001 · wal_offset 134892
event: extracted       → entities:[acme,priya]  facts:[a,b,c]  beliefs:[01HX_a]
event: indexed         → layers_indexed:[events,facts,beliefs]
event: consolidated    → beliefs_updated:1  episodes_touched:[ep_01HX_acme_deal]
06 · Day 13 · "What's the Acme deal status?"

Recall returns a stratified pack, not a blob.

POST /v1/recall
{
  "scope": "org:initech/.../user:alice",
  "view":  "holistic",
  "query": "What's the current status of the Acme deal?",
  "include": ["beliefs", "facts", "episodes"],
  "temporal": { "natural": "last 30 days" },
  "budgets": { "max_tokens": 2000,
               "per_layer_limits": {
                  "facts": 8,
                  "beliefs": 3,
                  "episodes": 2 } },
  "citation_mode": "inline_with_markers",
  "diagnostics":   "summary"
}
"context_block":
  "Acme Corp signed this afternoon for 200 seats [1].
   The deal stage went from poc_complete to signed
   at 3:42pm [2]. The will_close_q3 belief revised
   from uncertain (0.42) to supported (0.94) as a
   result [3]. Primary contact remains Priya..."

"layers": {
  "beliefs":  [/* will_close_q3 @ 0.94 */],
  "facts":    [/* deal_stage=signed, seats=200, ... */],
  "episodes": [/* ep_01HX_acme_deal */]
}

"provenance": {
  "trail": [/* ARIL → hybrid → score → mmr */],
  "citations": {
    "[1]": { "layer":"fact",    "id": "fact_seats_200" },
    "[2]": { "layer":"fact",    "id": "fact_signed"    },
    "[3]": { "layer":"belief",  "id": "belief_01HX_a" }
  } }

context_block goes into the LLM prompt. layers renders in the UI. provenance is what you show when someone asks "why?". The LLM cannot invent citations — it can only select from what recall returned.

07 · "Why does the bot think that?"

The explainability moat.

The sales manager presses harder: "Why did will_close_q3 jump from 0.42 to 0.94?"

GET /v1/beliefs/why?belief_id=belief_01HX_a

Returns a full support graph — nodes for the belief, the supporting facts and episodes, the events those came from. Each edge labeled. Each weight shown. Plus a natural-language narrative on top.

narrative: "Confidence rose from 0.42 to 0.94 because two new high-weight facts landed on May 13: deal_stage=signed (weight 0.45) and seat_count=200 (weight 0.30). The pre-existing procurement_blocker fact lost weight because its blocking condition is moot post-signature. Net evidence shift: +0.52, well above the 0.05 minimum delta in the revision policy."

BELIEF will_close_q3 @ 0.94 FACT · w 0.45 deal_stage=signed FACT · w 0.30 seat_count=200 FACT · w 0.10 procurement_blocker EPISODE · w 0.15 acme_deal pursuit EVENT "Priya just signed." EVENT "POC complete..."
08 · Asking about yesterday

Bi-temporal queries.

Every record carries two time intervals — when the claim was true in the world, and when CortexDB knew about it. That distinction is what makes time-travel queries possible.

Four time fields per record

valid_fromFirst moment the claim is true in the world
valid_toWhen it ceased being true (null = open)
recorded_fromFirst moment CortexDB learned the claim
recorded_toWhen CortexDB superseded its own record

The query "what did the system believe about Acme on April 15, when looked at from May 1?" needs both axes. Single-axis systems can only answer one or the other.

// Sarah, after the deal signed:
// "What did we believe about Acme
//  at lunch on May 12, before the signature?"

POST /v1/recall
{
  "scope":    "org:initech/.../user:alice",
  "view":     "holistic",
  "query":    "What did we know about Acme?",
  "include":  ["beliefs", "facts"],
  "temporal": { "as_of": "2026-05-12T12:00:00Z" }
}

// returns the pre-signature state:
//   deal_stage = poc_complete
//   will_close_q3 = uncertain @ 0.42
// Same data. Different temporal lens.
09 · Forget

Proportional. Auditable. Never silent.

Alice writes a Slack post about Acme that ends with "honestly I think Priya might leave the company soon." Her agent extracts a belief. That night she realizes she shouldn't have said it. She asks her agent to forget.

POST /v1/forget
{
  "scope":  "org:initech/.../user:alice",
  "layers": ["beliefs"],
  "selector": { "memory_ids": ["belief_01HX_b"] },
  "cascade": "derived_only",
  "audit_note": "User retracted speculation"
}

The belief is gone. The underlying event — Alice's Slack post — is not. That distinction is load-bearing.

Two weeks later, if Priya genuinely starts hinting at leaving, the new event + the retained old event might re-derive the belief. The system isn't pretending the past didn't happen — it's saying "the conclusion was premature."

Three modes, gated separately

ModeWhat staysWhat goes
derived_only
(default)
All eventsSelected facts, beliefs, episodes, understanding
redact_eventsEvent IDs and WAL slotsEvent content — replaced with [REDACTED]
forget.gdpr
(separate endpoint)
Cross-scope refs (redacted)True erasure where unreferenced

The GDPR design choice

Pure deletion would invalidate shared workspaces — facts colleagues rely on would lose citation anchors. Pure preservation would violate the right to erasure. Reference counting threads the needle.

Part II

Enterprises.

Same primitives. Different questions. 3,000 humans, one accumulating substrate.

A 3,000-person company

Meet Initech.

B2B SaaS. EU + US presence. Subject to GDPR. Five operators, five different relationships with the same database.

individual

Maya

Sales rep · enterprise team. Uses maya_bot. Asks about her pipeline.

manager

Sarah

Sales VP, enterprise. Reads across her team via view=descend. Coaches on patterns.

VP

Diego

VP Engineering. Tracks systems, not humans. Watches belief deltas.

C-suite

Priya

CTO. Doesn't query. Reads exec_brief_bot's morning summary.

DPO

Lana

Audits. Approves erasures. Owns GDPR. Reads policy, not content.

In every scenario: humans don't talk to CortexDB directly. Their agents do. Every API call carries the agent's signed token; every call also declares who the experience is about.

10 · The scope tree

One namespace primitive — hierarchical and ACL'd.

ORG ROOT org:initech DEPT dept:sales DEPT dept:engineering DEPT dept:cs DEPT ... TEAM team:enterprise USER maya USER bob MANAGER sarah TEAM team:platform USER diego USER ... — WORKSPACES (cross-functional, not under any dept) — WORKSPACE ws:acme-account WORKSPACE ws:incident-2027-01-15 WORKSPACE ws:q3-launch PROJECT project:soc2-renewal-2026 SYSTEM system:initech-policies ↑ holistic — reads walk UP Manager and exec queries aggregate from child scopes ↓ descend — admin-only DOWN walk Filtered by per-scope ACL at every node

Five rules to internalize

  1. Personal scopes are the default home. Every human and agent has one. Nothing else reads it without explicit grant.
  2. Shared work goes in workspaces. A workspace is just a scope. Maya writes to ws:acme-account, not "hoping" the CSM can read her personal scope.
  3. Reads walk up; writes go in. Sarah's recall view=descend aggregates her team's scopes. Sarah doesn't write into them.
  4. Scopes auto-register on first write. No "create database" step. Explicit POST /v1/scopes is for adding members or custom policy.
  5. GDPR is reference-counted. Personal-only events delete. Cross-scope-referenced events redact. Shared workspaces don't break.
11 · The four-tier authorization stack

Each tier can only narrow the tier above it.

TIER 1 · DEPLOYMENT What this CortexDB deployment allows TIER 2 · TENANT What Initech itself permits TIER 3 · SCOPE ACL Who is on this scope's member list TIER 4 · ACTOR TOKEN What this token is allowed broad narrow API request

How a request flows

Every API call is evaluated through all four tiers. Each can only restrict — none can re-expand.

  • Deployment — operator-set at startup. On-prem allows everything; cloud-multi-tenant denies cross-tenant by default.
  • Tenant — Initech's own config (Lana the DPO). E.g., "no employee reads another's personal scope without explicit grant."
  • Scope — set by the scope owner. ws:acme-account lists exactly six humans and three agents as members.
  • Actor — set per token at issue time. csm_bot is scoped to dept:cs/*, denied forget.gdpr.

No opaque 403s.

When denied, the response says which tier denied it and which capability would have allowed it.

X-Cortex-Policy: tier=scope; decision=deny;
                  capability=scope.read.holistic
12 · Five operators, five ways of using the same DB

Same primitives, different questions.

OperatorPrimary scopePrimary viewWhat they ask
Maya
individual
user:maya view=local "What's my pipeline?" · "What did Priya say about procurement?" · "Why does the bot think Acme will close?"
Sarah
manager
team:enterprise view=descend "Which deals slipped this week?" · "Belief deltas > 0.2 across my team" · "Top concepts in Understanding this quarter (coaching)"
Diego
VP eng
dept:engineering view=descend "What's our top operational risk?" · "What systems do we know less about than a month ago?" (staleness)
Priya
CTO
org:initech saved recalls in briefing "What did the company change its mind about today?" — top belief deltas, concept evolution, sealed episodes
Lana
DPO
/v1/audit + /v1/erasures audit, not content "Run DSR preview for departing employee" · "Anomalies in policy denials this quarter" · "Validate legal holds"
13 · How shared work happens

Workspaces are scopes.

A workspace like ws:acme-account is structurally identical to user:alice. It differs only in convention and membership:

  • Typically not nested under a user/org tree — its own top-level namespace
  • Usually has multiple members, declared via POST /v1/scopes
  • Often registers a custom consolidation policy

There is no API distinction. A scope is a scope. This single design choice is what lets multiple departments share a customer account, an incident war room, or a project workspace without inventing a separate "workspace" concept.

POST /v1/scopes
{
  "path": "ws:initech-acme-account",
  "members": [
    {"actor": "user:alice",           "role": "owner"},
    {"actor": "user:bob",             "role": "writer"},
    {"actor": "agent:support_bot",    "role": "writer"},
    {"actor": "agent:bob_bot",        "role": "writer"}
  ],
  "policies": {
    "consolidation":       "merge_compatible_beliefs",
    "conflict_resolution": "latest_wins_within_confidence_band",
    "inherit_from":        [],
    "audit":               "full"
  }
}

When Alice's agent and Bob's agent both submit beliefs about Acme into this workspace, the workspace's conflict_resolution policy — not the agents — decides how to merge. Each agent's submissions need not agree; the workspace presents a coherent view.

14 · A worked application

RCA-Copilot: incident response, end-to-end.

When an incident fires, the next four slides walk one war room through CortexDB at every API call.

What RCA-Copilot does

  1. Construct a timeline of what happened, as it happens
  2. Surface what the system already knew that might be relevant
  3. After resolution, write a structured postmortem — as memory, not as a Confluence page
  4. Update beliefs and understanding so the next incident is faster to resolve

Without CortexDB: dump Slack logs into Confluence, write a postmortem nobody re-reads, repeat. With CortexDB: the postmortem is a first-class memory that the next incident retrieves automatically.

Workspace setup

POST /v1/scopes
{
  "path": "ws:incident-2027-01-15-payments",
  "members": [
    {"actor": "user:diego",         "role": "owner"},
    {"actor": "user:on_call_alice", "role": "writer"},
    {"actor": "agent:oncall_bot",   "role": "writer"},
    {"actor": "agent:rca_copilot",  "role": "writer"}
  ],
  "policies": {
    "inherit_from": ["dept:engineering/team:sre"],
    "audit": "full"
  }
}

inherit_from is doing real work — it tells CortexDB that recalls against this fresh war room can also pull from the SRE team's accumulated knowledge. The room doesn't start from zero.

14 · The incident flow

From alert → resolved → institutional learning.

14:32 14:32 + 30s 14:32 → 14:59 (resolution) 18:00 (postmortem) ~2 months later → 1 · ALERT FIRES PagerDuty → workspace POST /v1/experience observed_actor: service:pagerduty subject: system:payments modality: alert subject = the SYSTEM, not the on-call. That single line lets a future payments incident find this postmortem. 2 · RCA-COPILOT RECALLS "What do we know?" POST /v1/recall view: holistic ← walks UP inherit_from Returns: • concept: payment_retry_storm (seen 2 prior incidents) • 2 prior episodes (sealed, postmortems linked) • 3 high-relevance facts incl. deploy 45m before alert • 1 active belief at 0.51 ("handles burst traffic") 3 · CONTINUOUS CAPTURE War room → events POST /v1/experience ×300 POST /v1/experience/bulk Each message → event Each event → facts derived Each fact → belief revised Episode chain grows live "deploy is the cause" belief climbs 0.4 → 0.9 as evidence accumulates Diego watches the live lifecycle stream from a dashboard. 4 · POSTMORTEM = MEMORY Structured experience submit POST /v1/experience modality: postmortem fields: { root_cause, trigger, blast, remediation, permanent_fix, preventive_belief } CortexDB then: • facts extracted • episode SEALED • concept v3 created — now references 3 episodes • new belief seeded: "backoff+jitter prevents storms"
14 · Two months later

The test.

It's March. A different team, a different service. notifications-api starts misbehaving. The on-call engineer is a new hire — three weeks in, has never seen the payments incident.

RCA-Copilot fires. Its very first recall against the new war-room workspace pulls in the payment_retry_storm concept. The concept's supported_by array now includes the January postmortem.

RCA-Copilot: "This may relate to the payment_retry_storm pattern. The org has seen three prior instances; the working hypothesis is that exponential backoff with jitter prevents it. Check the retry configuration of notifications-api first."

The new engineer skips ten minutes of confused debugging and goes straight to the retry config.

This is the value proposition.

Not "we store memories." Not "we have a vector database." It's:

Every postmortem is queryable, citable, and reachable by every future incident — automatically, with provenance, with confidence intervals, with cross-incident concept synthesis.

No incumbent tool ships this. Confluence has none of it. Mem0 has facts but no concepts. Zep has temporal facts but no Understanding layer.

Cost trail for one incident

~100 metric pings (bulk)trivial
300 war-room messages~$3 in LLM extraction
27 recalls + 6 answers~$0.05
1 structured postmortem~$0.10
Total per incident~$3.50

15 minutes saved on the next related incident = several orders of magnitude ROI.

15 · The pattern generalizes

Six other applications on the same primitives.

ApplicationWorkspaceWriter agentsThe "after" story
Customer 360 ws:customer-{id} csm, sales, support Every team that touches a customer sees one accumulating record. New CSM onboarding to an account: hours not weeks.
Roadmap memory ws:roadmap-{year} PM bots, design bots "Why did we deprioritize feature X in Q1?" — walk the belief trail to the user-research events that revised it.
Hiring decisions ws:hire-{req_id} recruiter, panelist bots Every signal is an event. Hire/no-hire is a belief with cited supports. Post-hire, the belief updates with 90-day outcome data — closing the calibration loop.
Vendor risk register ws:vendor-{name} security, procurement Every questionnaire, audit, breach notice is an event. "Vendor X is acceptable risk" is a continuously-revised belief. SOC2 becomes a query, not a fire drill.
Sales objection library dept:sales/concept-store all rep bots write up Understanding layer surfaces objection patterns no individual rep sees alone. The coaching content writes itself.
"Ask the company" search org:initech + descend company_search_bot "Has anyone here worked with vendor Y?" — recall across the whole org, filtered by what the asker is allowed to see. The intranet finally becomes useful.

The pattern: 1. pick a workspace scope and members → 2. wire writer agents → 3. build the UI around recall + answer + citations → 4. let Understanding accumulate. Institutional memory compounds over months.

16 · Rollout playbook

Four phases. The order matters.

PHASE 0

Operator setup

Week 0–1

  • Pick deployment mode (on-prem / cloud-dedicated / shared)
  • Define org + top departments
  • Tenant policy with DPO: GDPR mode, audit retention
  • Identify first 3 workspaces
PHASE 1

Two pilot teams

Weeks 2–6

  • One sales, one engineering — distinct enough to surface shared bugs
  • Wire one agent per team to /v1/experience
  • Build team-level dashboard (descend aggregations)
  • Refine entity vocab, predicates, labels
PHASE 2

Cross-functional

Weeks 6–12

  • First customer-account + incident-war-room workspaces
  • Connect pilot teams' agents to them
  • Ship the first exec briefing
  • Understanding coverage scores begin to climb
PHASE 3+

Org-wide → continuous

Months 4–12+

  • Departments onboard one at a time (same pilot pattern)
  • DPO begins quarterly audit reviews
  • "Ask the org" search ships internally
  • Importers backfill from Mem0/Zep/Confluence/Slack

The mistake to avoid

Trying to design the perfect scope tree before any team has actually used the system. Start with three teams and one workspace; let the tree grow organically; refactor once at month 3. Scope renames are safe — the WAL replays cleanly under a renamed scope.

17 · Beyond the technical

What changes about how the company thinks.

cultural shift 01

Postmortems become valuable.

Today: written, filed, forgotten. Read by maybe three people. Lost in Confluence within six months.

With CortexDB: the postmortem is a database mutation that the next incident surfaces automatically. Writing a good one is finally worth the engineer's time. Quality climbs within two quarters.

cultural shift 02

Beliefs become a unit of management.

Today: confidence shifts surface via a Slack message or board-prep doc — informal, undated, uncited.

With CortexDB: q4_revenue_target_met moving from 0.71 → 0.58 with full citation back to three specific deal events. The leading indicator is machine-readable. Forecasting accuracy climbs.

cultural shift 03

Forgetting becomes routine.

Today: GDPR deletion is a manual scramble. A 30-day project.

With CortexDB: a documented /v1/erasures job with preview, manifest, legal sign-off, permanent audit row. A 30-minute task. Compliance load drops; willingness to grant genuine erasure rights goes up.

The bet behind CortexDB is that an enterprise that can track its own knowledge, beliefs, and forgetting — with citations and audit — will eventually outperform one that can't, in the same way that companies with proper double-entry accounting eventually outperformed those that kept ad-hoc ledgers. CortexDB is the general ledger for what the company knows.
18 · Where to go from here

Building something on top? Here's the path.

Read

  • API_DESIGN_V1.md — narrative walkthrough (Alice, one week)
  • API_REFERENCE_V1.md — exact contract: endpoints, capabilities, errors
  • CORTEXDB_FOR_THE_ENTERPRISE.md — what this deck distills
  • schemas/ — normative JSON schemas; both docs are explanatory views
  • enterprise_runbooks.md — backup, PITR, SSE delivery, MFA

Build

  • SDKs: pip install cortexdbai · npm install cortexdbai
  • MCP server: cortexdb-mcp on PyPI — any MCP-capable agent gets memory tools without writing code
  • Connectors: Slack · GitHub · Jira · PagerDuty · Confluence — auto-ingest experiences
  • Importers: Mem0 · Zep · Letta · OpenAI memory · JSONL
  • Local-first: docker run -p 3141:3141 cortexdb/cortexdb — single-node, zero external deps

Three habits worth adopting on day one

  1. Always set subject explicitly. The default (subject = observed_actor) is usually wrong for ingestion and admin writes. Future you will thank you.
  2. Start with one workspace per real-world unit of shared work (account / incident / project) — not one workspace per team. Workspaces are where institutional memory accumulates.
  3. Build the "why?" UI early. /v1/beliefs/why is the killer feature; if your UI doesn't render the support graph, users won't trust the system.
In one sentence
Five layers. Four
tiers. One trail.

Three identities per call. Two time axes per record. One rule above all: every claim has a trail. Get those right and you can build everything in this deck.

The hard part isn't the API — the API is small enough to teach in a day. The hard part is the cultural one: convincing a company that its institutional memory deserves the same care it gives its accounting ledger.

cortexdb.ai · talk to us when you're ready to ship
Thank you.
← → · space · home/end · 'o' overview · 'p' print