Persistent memory
for Claude.

Claude forgets everything between sessions. CMK fixes that. Your preferences, decisions, and context persist across every conversation.

quickstart
# install
$ uv tool install claude-memory-kit
# connect to your account (get key at cmk.dev/dashboard/setup)
$ cmk init your-api-key
# or just run locally, no account needed
$ claude # CMK auto-activates as MCP server
you: I use tabs, not spaces. Deploy target is always Render.
claude: Noted. I'll remember both preferences.
── next session ──
you: Set up the project config.
claude: Done. Used tabs for indentation and added render.yaml.
5 memory gates
behavioral, relational, epistemic, promissory, correction
Local or cloud
SQLite locally, or sync across devices with an account
MCP native
works with any MCP-compatible client

Claude forgets everything

Every session starts from zero. Your preferences, your stack, your conventions.

Context windows expire

The 200k window is big, but temporary. None of it persists.

You repeat yourself

Retyping your setup instructions. Re-explaining your codebase. Again and again.

How it works

From conversation to persistent recall in five steps.

1

Claude

Generates a message or response

2

MCP

Intercepts via tool calls

3

Gates

Classifies the memory type

4

Storage

Embeds and persists locally

5

Recall

Retrieved on next session

Five memory gates

Every memory is classified through one of five gates, each with its own scope and decay behavior.

behavioral

Preferences, habits, and workflow patterns.

"I always use tabs over spaces."

userslow decay
relational

People, teams, and social context.

"Sarah is the lead on the auth service."

projectmedium decay
epistemic

Facts, knowledge, and technical details.

"Our API uses JWT with RS256 signing."

projectslow decay
promissory

Commitments and agreed-upon plans.

"We decided to migrate to Postgres next sprint."

projectfast decay
correction

Mistakes to avoid and corrections.

"Don't use the legacy endpoint, it's deprecated."

globalmedium decay

Recall in action

Ask a question. Claude pulls from stored memories and cites its sources.

Your query

What's my preferred database for new projects?

Claude's response

Based on your previous conversations, you prefer PostgreSQL for most projects. You mentioned that your team standardized on Postgres 16 after evaluating alternatives. For quick prototypes, you sometimes reach for SQLite instead.

Recall trace

behavioral

User prefers PostgreSQL for production databases.

vector94%
epistemic

Team standardized on Postgres 16 after evaluating CockroachDB and PlanetScale.

vector87%
behavioral

Uses SQLite for prototypes and local-first apps.

keyword72%

Your memories, your machine.

Choose the storage mode that fits your workflow. Switch anytime.

Recommended

Cloud

Sign up, add your API key, done. We handle everything else.

Sync memories across all devices
Managed vector search and embeddings
No infrastructure to set up
Just one API key to configure

Local

SQLite + local embeddings. Zero network calls. Full privacy.

Runs entirely on your machine
Bring your own keys
fastembed for local vectors
Single-device, full control
Migration is reversible. Export and import between modes at any time.

A living identity document

CMK builds a synthesis of who you are as a developer. Updated automatically, always editable.

ID

Identity synthesis

Last updated 2 hours ago

You are a senior TypeScript developer who works primarily with Next.js and PostgreSQL. You prefer functional patterns over class-based code and favor explicit types over inference when the type is not immediately obvious.

Your code style leans minimal: short variable names in tight scopes, descriptive names at module boundaries. You use Tailwind for styling and prefer inline styles with CSS variables for design tokens.

You work on a team of five. Sarah handles auth, Marcus owns the data pipeline, and you lead the frontend and API integration layer.

12 behavioral5 relational8 epistemic

Get started in seconds

One command to install. Three ways to integrate.

claude mcp add cmk --url https://mcp.cmk.dev/v1 \
  --header "Authorization: Bearer <your-api-key>"

Give Claude a memory.