CONTEXT OS Claude Code mcp · transcripts Codex CLI cli plugin Cursor composer ext GitHub · GitLab commits · PRs Slack · Notion decisions · ADRs Sentry · CI runtime · build MCP · SDK · REST

Claude Code

Live

Claude Code talks to Statefulai over MCP from the moment you open a project. Sessions persist by branch — close the laptop, open it tomorrow, pick up the same thread with the same architectural memory.

  • Session continuation across machines and tabs
  • Full architectural recall — modules, contracts, ADRs
  • Accept/reject feedback retrains the reranker nightly
  • Tool to inspect what was retrieved (debuggable memory)
~/.claude/mcp.json
mcp
{
  "mcpServers": {
    "statefulai": {
      "command": "statefulai-mcp",
      "args": ["--workspace", "."],
      "env": { "CTX_API_KEY": "ctx_••••" }
    }
  }
}

Codex CLI

Live

A drop-in memory backend for the Codex CLI. Ambient tasks (cron, GitHub Actions, scheduled runs) get the same project memory humans do — perfect for nightly refactors and PR-bot workflows.

  • codex --with-context flag enables retrieval
  • Per-branch retrieval for trunk-based development
  • Workflow-shaped: the agent reads memory and writes back what it did
  • Compatible with self-hosted Codex deployments
~ shell · codex
cli
$ codex login statefulai
› signed in as @rena · workspace billing-prod

$ codex run "refactor billing.ts for usage api" \
    --with-context --branch feat/usage-meter

↳ retrieved 6 memories · 1.2k tokens
↳ applied @idempotent-writes · @zod-on-boundary
↳ diff: 3 files · 84 lines · suggested PR
ok session stored to episodic memory

Cursor

Live

A Cursor extension that augments Composer with cross-branch, cross-team retrieval. Your Composer chat reads the same memory layer as Claude Code and Codex — no more reintroducing the project to every agent.

  • Composer context augmentation, per-prompt
  • Inline tool: /memory show to inspect retrieval
  • "Pin" semantics — keep critical rules in the active window
  • Works alongside .cursorrules — procedural memory complements, doesn't replace
cursor · composer
extension
// .cursor/statefulai.json
{
  "workspace": "billing-prod",
  "branchScope": "current",
  "include": ["episodic", "semantic", "procedural"],
  "budget": 1200
}

MCP server

Live

Any agent that speaks the Model Context Protocol can read and write Statefulai memory. We ship a stdio / WebSocket server with a small, well-typed surface.

memory.retrieve

Hybrid search with budget & branch scope.

memory.store

Write episodic events from agent actions.

graph.expand

One-hop traversal from a symbol.

rules.list

Active procedural rules in current scope.

session.sync

Snapshot the active session for resume.

memory.cite

Return source for any retrieved memory.

mcp · transport
stdio/ws
# run the server, expose to any MCP client
$ statefulai mcp serve --transport stdio
› listening on stdio · workspace billing-prod

# or over websocket
$ statefulai mcp serve --transport ws --port 7700
› ws://127.0.0.1:7700/mcp

GitHub · GitLab

Live

Webhook ingest for commits, PRs, reviews, and merges. Statefulai replays the last 90 days on connect, then streams new events as they happen — your episodic memory is current by definition.

  • One-click GitHub app install / GitLab token
  • PR descriptions and review threads become first-class memory
  • Branch lifecycle tracked for branch-scoped recall
  • Optional: ingest commit message templates as procedural rules
webhook · github
live
[09:14:01] PR #482  merged  · feat/usage-meter
↳ episodic: 1 event · semantic: +3 nodes
↳ procedural: +1 rule (derived) @idempotent-writes
[09:14:02] PR #482  review thread captured (4 comments)
[09:14:02] ok      indexed 1.1s · branch main

Slack & Notion

Live

Whitelisted channels and pages feed episodic memory. A team-decision in #eng-billing gets captured, linked to the code that resulted from it, and surfaced when future agents ask "why."

  • Channel-scoped opt-in — only what you mark gets ingested
  • Bot mention to "remember" a thread as an ADR
  • Notion page imports preserve headings as ADR sections
  • Per-user redaction for PII before storage
#eng-billing · 04-12
slack
@rena  let's drop the queue here, run inline
@marko +1 — keep it idempotent though
@rena  yep, lock per invoice

@statefulai remember this as ADR
↳ captured as ADR-014 · billing.flush
↳ linked to: BillingService, InvoiceQueue
↳ derived rule: @idempotent-writes

SDK · TypeScript · Python · Go

Live

A small, typed surface for custom agents and bespoke tooling. Same calls as the MCP server; same memory store. Bring your own agent — the memory is portable.

  • retrieve(), store(), graph(), rules(), session()
  • Streaming retrieval for very large context budgets
  • Built-in telemetry hooks (OpenTelemetry-compatible)
  • Zero hidden network calls — every endpoint is documented
sdk · typescript
npm
import { Statefulai } from "@statefulai/sdk"

const ctx = new Statefulai({ apiKey: process.env.CTX_KEY })

const hits = await ctx.retrieve({
  query: "refactor billing.ts",
  branch: "feat/usage-meter",
  budget: 1200,
  include: ["episodic", "semantic", "procedural"]
})

JetBrains AI Assistant

Coming Q3

A native plug-in for IntelliJ, WebStorm, PyCharm, GoLand, and Rider. Same memory layer, exposed inside the IDE's built-in AI assistant pane. Sign up below and we'll let you know when the beta opens.

  • JetBrains-platform plug-in (single install across IDEs)
  • Inline retrieval at the caret — context flows into your prompt automatically
  • "Why is this here?" code-lens — surfaces episodic memory above functions
  • Branch-aware: re-derives memory when you switch git roots
Get notified at launch →
jetbrains · ide
beta wait
// preview · BillingService.ts
// 🧠 Statefulai · 3 memories pinned
//   ↳ ADR-014 · stripe usage switch (apr 12)
//   ↳ rule · @idempotent-writes
//   ↳ incident · double-flush · may 11

async flush(invoiceId: string) {
  // memory consulted before completion
}
Pick an agent · plug in

All your agents on the same page.

One memory layer. Three retrieval surfaces today, five tomorrow. Zero re-prompting.

Get early access Read the SDK docs