Kodo
Universal persistent memory for AI coding agents. Remember conventions, learn from mistakes, carry context across sessions. Works with Claude Code, Cursor, Kiro, Codex, and any MCP client.
Ask AI about Kodo
Powered by Claude Β· Grounded in docs
I know everything about Kodo. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
kΕdo (γ³γΌγ)
Universal persistent memory for AI coding agents.
Your AI coding agent forgets everything between sessions. You tell it "use ESM imports" β next session, it's back to
require(). You fix a bug caused by missing null checks β next session, same bug. kΕdo fixes that.
An agent-agnostic memory layer that stores structured memories β conventions, mistakes, decisions, preferences, patterns β in a local SQLite database, and makes them available to every agent you use. One memory store. Every agent. Zero cloud.
kodo add -t convention -c "Always use ESM imports, never require()"
kodo add -t mistake -c "Never use process.exit() in library code β throw instead"
kodo learn # auto-learn from git history
kodo export # sync to .claude/ .cursor/ .kiro/ .codex/
The Problem: AI's Amnesia
Every AI coding agent starts every session with a blank slate. This means:
| What happens | How it feels |
|---|---|
| You correct the agent's code style | It forgets next session |
| You explain your architecture decisions | Gone. Every. Time. |
| The agent makes a mistake you've seen before | Groundhog Day |
| You switch from Cursor to Claude Code | Start over from scratch |
| New team member onboards with an agent | Zero institutional knowledge |
kΕdo gives your AI agent a persistent, structured, searchable memory that works across every tool.
Live Demo
# Clone and run the demo β see it in action in 30 seconds
git clone https://github.com/Xuan-1998/kodo.git
cd kodo && npm install
bash demo/demo.sh
Demo Walkthrough
Session 1: You teach the agent your conventions.
$ kodo init
β kodo initialized at /your-project
Database: .kodo/memory.db (0 memories)
$ kodo add -t convention -c "Always use ESM imports (import/export), never require()"
β Remembered #1 [convention] Always use ESM imports (import/export), never require()
$ kodo add -t mistake -c "Never use process.exit() in library code β throw errors instead"
β Remembered #2 [mistake] Never use process.exit() in library code β throw errors instead
$ kodo add -t decision -c "We chose SQLite over Postgres for local-first zero-config storage"
β Remembered #3 [decision] We chose SQLite over Postgres for local-first zero-config storage
Session 2: New day. Agent starts fresh. But kΕdo remembers.
$ kodo search "import style"
#1 convention Always use ESM imports (import/export), never require() [javascript, imports]
$ kodo search "error handling"
#2 mistake Never use process.exit() in library code β throw errors instead [nodejs, error-handling]
Export to every agent β one command:
$ kodo export
β claude β .claude/settings/memory.md (6 memories)
β cursor β .cursor/rules/kodo-memory.md (6 memories)
β kiro β .kiro/steering/kodo-memory.md (6 memories)
β codex β .codex/memory.md (6 memories)
Your memories are now baked into every agent's context β even without the MCP server.
Why kΕdo?
| Existing tool | Limitation | kΕdo's answer |
|---|---|---|
claude-mem | Claude Code only | Works with Claude Code, Cursor, Kiro, Codex, any MCP client |
mem0 / OpenMemory | Generic memory, not coding-specific | Typed memories: convention, mistake, decision, preference, pattern, note |
byterover/cipher | MCP-only, no offline export | MCP server + CLI + native config file generation for 4+ agents |
Manual .cursorrules | One agent, manual maintenance | Auto-export to all agents from single source of truth |
| Nothing | Most people | kodo learn auto-extracts conventions from git history |
Install
npm install -g kodo-memory
Or run from source:
git clone https://github.com/Xuan-1998/kodo.git
cd kodo && npm install
node bin/kodo.js init
Memory Types
| Type | Use for | Example |
|---|---|---|
convention | Team/project standards | "Use Conventional Commits" |
mistake | Bugs to never repeat | "Don't forget to close DB connections in finally blocks" |
decision | Architecture choices | "Chose SQLite over Postgres for simplicity" |
preference | Coding style | "Prefer early returns over nested if/else" |
pattern | Reusable solutions | "All API handlers: validate β execute β respond" |
note | General context | "The payments module is being rewritten in Q2" |
MCP Server
kΕdo includes an MCP server so AI agents can read and write memories live during a session β the agent can kodo_remember a lesson it just learned, and kodo_recall relevant context before starting a task.
Claude Code
claude mcp add kodo -- node /path/to/kodo/src/mcp-server.js
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"kodo": {
"command": "node",
"args": ["/path/to/kodo/src/mcp-server.js"]
}
}
}
Kiro
Add to .kiro/settings/mcp.json:
{
"mcpServers": {
"kodo": {
"command": "node",
"args": ["/path/to/kodo/src/mcp-server.js"]
}
}
}
Any MCP Client
Same pattern β point your MCP config at node /path/to/kodo/src/mcp-server.js.
MCP Tools
| Tool | Description |
|---|---|
kodo_remember | Store a new memory (convention, mistake, decision, preference, pattern, note) |
kodo_recall | Search memories by query, type, or both β full-text search |
kodo_forget | Delete a memory by ID |
kodo_stats | Get memory statistics β total count, breakdown by type and project |
Agent Export
kodo export generates native config files for each agent β your memories work even without the MCP server:
| Agent | Output path | Format |
|---|---|---|
| Claude Code | .claude/settings/memory.md | Markdown |
| Cursor | .cursor/rules/kodo-memory.md | Markdown rule |
| Kiro | .kiro/steering/kodo-memory.md | Steering file (YAML frontmatter) |
| Codex | .codex/memory.md | Markdown |
# Export to all agents
kodo export
# Export to specific agents only
kodo export --agents claude,kiro
Git Learning
kodo learn analyzes your git history and automatically extracts:
- Commit conventions β detects Conventional Commits, prefixes, patterns
- Hotspots β areas with frequent fixes that need extra attention
- Project info β primary languages, frameworks, tooling detected from config files
$ kodo learn
β Learned 5 memories from git history
$ kodo search --type convention
#1 convention This project uses Conventional Commits (feat:, fix:, chore:, etc.) [git, commits]
$ kodo search --type mistake
#2 mistake Frequent fixes in "auth" (7 fix commits). This area may need extra attention. [git, hotspot, auth]
CLI Reference
kodo init Initialize kodo in current project
kodo add -t <type> -c <content> Add a memory (--tags "a,b" optional)
kodo search [query] Search memories (full-text)
kodo search --type convention Filter by type
kodo forget <id> Delete a memory
kodo stats Show memory statistics
kodo learn Auto-learn from git history
kodo export Export to all agent configs
kodo export --agents claude,kiro Export to specific agents
How It Works
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β You / AI ββββββΆβ kΕdo store ββββββΆβ Agent configs β
β (CLI/MCP) β β (SQLite + β β .claude/ β
β βββββββ FTS5) β β .cursor/rules/ β
β β β β β .kiro/steering/ β
βββββββββββββββ ββββββββββββββββ β .codex/ β
β² βββββββββββββββββββ
β
ββββββββ΄βββββββ
β git learn β
β (auto) β
βββββββββββββββ
Storage: Memories live in .kodo/memory.db β a SQLite database with WAL mode and FTS5 full-text search. Add .kodo/ to .gitignore for private memories, or commit it to share conventions with your team.
Roadmap
-
kodo importβ migrate from claude-mem / mem0 / JSONL -
kodo watchβ auto-learn from agent sessions in real-time -
kodo hubβ cross-terminal real-time knowledge sharing -
kodo pipeβ send long text to agent inbox without terminal lag -
kodo evolveβ self-evolving memory (prune/merge/promote) - Semantic similarity search (embeddings) as optional upgrade
-
kodo syncβ team memory sharing via git - VS Code extension with memory sidebar
- More agent exports (OpenCode, CodeBuddy)
Works Well With
| Tool | How |
|---|---|
| PUA Skill | PUA forces the agent to try harder; kΕdo ensures it remembers what it learned |
| claude-mem | claude-mem captures sessions; kΕdo structures and exports the knowledge |
| Any MCP client | kΕdo is a standard MCP server β plug it into anything |
Star History
Contributing
PRs welcome. The codebase is intentionally small β ~400 lines of JavaScript. That's a feature, not a limitation.
git clone https://github.com/Xuan-1998/kodo.git
cd kodo && npm install
node bin/kodo.js init
# hack away
License
MIT
