Skip to main content

Namespacing & Navigation

Atlas uses a two-level isolation model: org namespace (from your API key) and session sub-namespace (from session_id).

How it works

API Key → org_namespace: acme_corp_a1b2c3 session_id → acme_corp_a1b2c3:user-456
  • Every API key maps to exactly one org namespace
  • user_id in request bodies is always overridden server-side from your key — clients cannot access another org’s data
  • Adding session_id creates an isolated sub-namespace within your org

Use cases for session_id

Use caseRecommended session_id
Per-user memory in a SaaS appuser-{uuid}
Per-conversation isolationconv-{uuid}
Per-agent in a multi-agent systemagent-{name}
Shared team memoryOmit session_id

Multi-tenant example

# Tenant A — completely isolated
brain_a = CognitiveBrain(
    api_key="atlas_...",
    user_id="any_value",       # overridden server-side
    session_id="tenant-acme",
)

# Tenant B — same API key, different namespace
brain_b = CognitiveBrain(
    api_key="atlas_...",
    session_id="tenant-globex",
)

# These two never see each other's memories
brain_a.add("Our CTO is Alice.")
brain_b.search("Who is the CTO?")   # Returns nothing

Clearing a namespace

# Clear all memories for one session
DELETE /brain/clear?session_id=tenant-acme&user_id=your_namespace

# Clear all memories for the entire org (irreversible)
DELETE /brain/clear?user_id=your_namespace
/brain/clear without session_id deletes all memories for your API key. This cannot be undone.