Skip to main content

Persistent memory system for Kimi Code CLI โ€” remember context across sessions

Project description

๐Ÿง  kimi-mem

PyPI Python License Tests

Persistent memory system for Kimi Code CLI.
Remember context across sessions. Never repeat yourself.

Inspired by claude-mem, built for the Kimi ecosystem.


โœจ Features

  • ๐Ÿ” Persistent Memory โ€” Context survives across Kimi sessions
  • ๐Ÿช Native Hooks โ€” Uses Kimi CLI's built-in lifecycle hooks (SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd)
  • ๐Ÿค– MCP Tools โ€” 6 auto-search tools the agent can invoke during conversations
  • ๐Ÿ” Full-Text + Semantic Search โ€” SQLite FTS5 + sqlite-vec for hybrid retrieval
  • ๐ŸŽฏ Progressive Disclosure โ€” 3-layer retrieval: index โ†’ timeline โ†’ get
  • ๐Ÿง  AI Summarization โ€” Automatically compresses sessions into actionable memories via Moonshot API
  • ๐Ÿท๏ธ Tagged & Typed โ€” Memories categorized as pattern, decision, bugfix, architecture, note
  • ๐Ÿ”’ Privacy Tags โ€” <private> blocks are automatically excluded from search/storage
  • ๐ŸŒ Web Viewer โ€” Local dashboard at http://localhost:37777
  • ๐ŸŒ™ Token-Efficient โ€” Injects only the most relevant memories, respects context limits
  • โšก Zero External Services โ€” SQLite is all you need; vector search included

๐Ÿ“ฆ Installation

1. Install the package

pip install kimi-mem

# With web viewer support
pip install "kimi-mem[web]"

Or from source:

git clone https://github.com/theretech/kimi-mem.git
cd kimi-mem
pip install -e ".[web]"

2. Install hooks into Kimi CLI

Make sure kimi-mem is available in your PATH:

# If installed in a virtual environment, link the binary:
ln -s "$(pwd)/.venv/bin/kimi-mem" ~/.local/bin/kimi-mem

# Or install globally
pip install kimi-mem

Then install the hooks:

kimi-mem install

This appends hook entries to your ~/.kimi/config.toml.

๐Ÿ”„ Restart Kimi Code CLI for the hooks to take effect.

3. Install MCP server (optional, for auto-search)

kimi-mem mcp-install

This registers the kimi-mem MCP server so the agent can search memories automatically during conversations.

๐Ÿ”„ Restart Kimi Code CLI after installing MCP.

4. Set your API key (optional, for AI summarization)

export KIMI_API_KEY="your-moonshot-api-key"

If not set, kimi-mem still works โ€” it just won't auto-summarize sessions with AI.


๐Ÿš€ Quick Start

Let it run automatically

Once installed, kimi-mem works in the background:

  1. Start a Kimi session โ†’ relevant memories are injected into context via additionalContext
  2. Type a prompt โ†’ your question is saved to the session history
  3. Use tools (ReadFile, Shell, etc.) โ†’ observations are captured silently
  4. End the session โ†’ session is summarized with AI and memories are stored

The agent can also search memories on its own by calling MCP tools:

"What was that JWT fix we did last week?" โ†’ Agent auto-invokes kimi_mem_search

CLI Commands

# Search your memory (full-text)
kimi-mem search "authentication bug"

# Semantic search (vector)
kimi-mem search "how to handle jwt errors" --semantic

# Progressive disclosure
kimi-mem index "database migration"           # Layer 1: compact index
kimi-mem timeline <id>                        # Layer 2: chronological context
kimi-mem get <id>                             # Layer 3: full detail

# Recent memories
kimi-mem recent --limit 5

# Add a memory manually
kimi-mem add "Use jwt.ParseWithClaims for custom claims" \
  --type pattern --tag go --tag jwt

# Start web viewer
kimi-mem serve

# Check status
kimi-mem status

# MCP server (stdio transport)
kimi-mem mcp

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Kimi CLI   โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚   Hooks     โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚  kimi-mem core  โ”‚
โ”‚  (session)  โ”‚     โ”‚ (stdin JSON)โ”‚     โ”‚  (Python + SQLite)โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                                            โ”‚
       โ”‚         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                โ”‚
       โ”‚         โ”‚  MCP Server     โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚         โ”‚  (6 tools)      โ”‚
       โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚
       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  SQLite + FTS5  โ”‚
โ”‚  + sqlite-vec   โ”‚
โ”‚  (sessions +    โ”‚
โ”‚   prompts +     โ”‚
โ”‚   observations +โ”‚
โ”‚   memories)     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Hooks used

Event What it does
SessionStart Creates session in DB + retrieves relevant memories โ†’ injects via additionalContext
UserPromptSubmit Saves the user's prompt to the session history
PostToolUse Captures tool calls/outputs as observations (skips low-value tools)
Stop / SessionEnd Summarizes session with AI โ†’ stores compressed memories

MCP Tools

Tool Purpose
kimi_mem_search Full-text or semantic search over memories
kimi_mem_index Layer 1: compact index (~50 tokens/result)
kimi_mem_timeline Layer 2: chronological context around a memory ID
kimi_mem_get Layer 3: full memory detail by ID
kimi_mem_recent List recent memories
kimi_mem_add Manually add a memory

Progressive Disclosure (3 layers)

Inspired by claude-mem, kimi-mem uses token-efficient layered retrieval:

Layer Command Tokens Purpose
L1 kimi-mem index <query> ~50-100/result Compact preview with IDs
L2 kimi-mem timeline <id> ~200-500/result Chronological context around a memory
L3 kimi-mem get <id> ~500-1000/result Full content + metadata

๐Ÿ”’ Privacy

kimi-mem respects your privacy:

  • <private>...</private> tags in any content are automatically detected and excluded from search, vector index, and session injection
  • Private memories are still stored (for your reference) but never retrieved automatically
  • Heuristics detect secrets, passwords, and API keys in observations (without blocking library names like jsonwebtoken)
  • Use --include-private to explicitly search private memories

โš™๏ธ Configuration

Environment variables:

Variable Description Default
KIMI_API_KEY Moonshot API key for summarization โ€”
KIMI_MEM_DATA_DIR Where to store the SQLite DB ~/.kimi-mem
KIMI_MEM_DB_PATH Direct path to SQLite file ~/.kimi-mem/memory.db
KIMI_MEM_MODEL Model for summarization moonshot-v1-8k
KIMI_MEM_EMBEDDING_MODEL Model for embeddings moonshot-v1-embedding
KIMI_MEM_EMBEDDING_DIM Embedding dimension 1024

๐Ÿ› ๏ธ Development

# Setup
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,web]"

# Run tests
pytest

# Lint
ruff check .

# Format
ruff format .

๐Ÿ“‹ Roadmap

  • SQLite + FTS5 persistent storage
  • Native Kimi CLI hooks (5 lifecycle hooks)
  • AI-powered session summarization
  • Semantic vector search (sqlite-vec)
  • Progressive disclosure (3-layer retrieval)
  • Web viewer dashboard
  • Privacy tags (<private> exclusion)
  • MCP server for auto agent search
  • PyPI publication
  • Cross-project memory linking
  • Memory import/export
  • Team/shared memory

๐Ÿค Contributing

This is an early alpha built by the community for the community.
PRs, issues, and ideas are welcome!

  1. Fork the repo
  2. Create a feature branch
  3. Make your changes
  4. Submit a PR

๐Ÿ“„ License

MIT โ€” see LICENSE for details.


โ˜• Support

If you find kimi-mem useful, consider supporting the project:

Buy Me A Coffee

PIX (Brazil):
54802231000148 โ€” THE RETECH LTDA - EPP


Built with ๐ŸŒ™ by The Retech and friends.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kimi_mem-0.2.3.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kimi_mem-0.2.3-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file kimi_mem-0.2.3.tar.gz.

File metadata

  • Download URL: kimi_mem-0.2.3.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kimi_mem-0.2.3.tar.gz
Algorithm Hash digest
SHA256 996e2d706eb474cbaef7c3c494bda3c4d941f52d2520022739ddfc0322e983c2
MD5 828dead808de3a68e06779228779ab9a
BLAKE2b-256 c3e5c17ea9b3b5d4383e50f7eccf6aa613c33481e3f2b3883b64919970c29e95

See more details on using hashes here.

File details

Details for the file kimi_mem-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: kimi_mem-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kimi_mem-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 659eaa58178a98b1ab497269bac4eddf4ba02eff27adcf4efa9cacf862237783
MD5 603c2ea07a373a7e6b1a773fd03abc14
BLAKE2b-256 a09aef916cc6c894794d8cafd556833c3e1ce26be717ad8fb00ac2bbce255c74

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page