Portable project memory for coding agents across Codex, Claude Code, Cursor, OpenCode, and MCP clients.
Project description
Vibe Memory
Vibe Memory stores shared project memory in a neutral .memory/
directory and serves it through both a CLI and an MCP server. The canonical source
of truth is a set of Markdown cards with YAML frontmatter. Agent-specific files are
generated views under .memory/dist/. End-of-task memory maintenance happens
through proposal batches under .memory/proposals/.
Requires Python 3.11 or newer.
Install once globally, then use it in any repository root, similar to how you use git.
The target repository does not need to be a Python project.
Why
- Keep architecture notes, patterns, commands, pitfalls, and conventions portable.
- Generate Codex, Claude Code, Cursor, and OpenCode-friendly outputs from one model.
- Offer a read-only MCP surface for tools that can fetch context dynamically.
Canonical Layout
.memory/
memory.yaml
cards/
architecture.md
...
index.sqlite
proposals/
dist/
Each card is a Markdown document with YAML frontmatter:
---
id: architecture-overview
title: Architecture overview
kind: architecture
summary: High-level system shape
paths: []
tags: [architecture, backend]
priority: 100
updated_at: 2026-03-07T00:00:00Z
targets: [codex, claude, cursor, opencode, generic]
status: active
supersedes: []
---
The API server is the source of truth for writes.
Commands
memory init
memory bootstrap --workspace-id my-project
memory add "Architecture overview" --kind architecture --summary "High-level notes" --body "..."
memory validate
memory list
memory search architecture
memory render codex
memory render claude --format dist
memory suggest-updates --changed-paths "src/api/routes.py" --task-summary "API validation" --implementation-summary "Validate before DB writes"
memory proposals list
memory proposals show <proposal-id>
memory proposals apply <proposal-id>
memory proposals reject <proposal-id>
memory curate --changed-paths "src/api/routes.py" --task-summary "API validation" --implementation-summary "Validate before DB writes" --confirm-apply
memory serve-mcp
memory doctor
Install And Use
Global install is the primary workflow:
pipx install vibe-memory
or:
uv tool install vibe-memory
Then in any repository:
cd /path/to/any-repo
memory init --workspace-id my-project
This works for:
- Python projects
- Node/TypeScript projects
- Go/Rust/Java projects
- mixed or non-Python repos
The only requirement is that the machine running memory has Python available,
because distribution is still Python-package based today.
Project-local install is still supported when a team wants per-repo version pinning:
cd /path/to/repo
uv add vibe-memory
uv run memory init --workspace-id my-project
For MCP clients:
- if
vibe-memoryis installed in the current project, registeruv run --project "$PROJECT_ROOT" memory serve-mcp --root "$PROJECT_ROOT" - if
vibe-memoryis installed globally, registermemory serve-mcp --root "$PROJECT_ROOT" - do not register a repo-local launcher script unless that script exists in the target project
Indexed Query Model
The official indexed query surfaces are:
- CLI:
memory search,memory list,memory show - MCP:
memory.search,memory.list_cards,memory.get_card,memory.get_context
These use .memory/index.sqlite as a derived query engine for fast retrieval.
The canonical durable memory still lives in .memory/cards/*.md.
Examples:
memory search "validation"
memory search "database" --paths "src/api/routes.py"
memory list --path "src/api/routes.py"
memory show architecture-overview
MCP examples:
memory.search(query="validation", paths=["src/api/routes.py"])memory.list_cards(path="src/api/routes.py", view="short")memory.get_card(card_id="architecture-overview")memory.get_context(paths=["src/api/routes.py"])
Release Automation
GitHub Actions workflows live under .github/workflows/:
ci.ymlruns tests and builds distributions on pushes tomainand pull requests.publish-testpypi.ymlpublishes to TestPyPI when triggered manually from GitHub Actions.publish-pypi.ymlpublishes to PyPI when a GitHub Release is published.
These publish workflows are configured for trusted publishing. Before the first
release, register this GitHub repository as a trusted publisher in both PyPI and
TestPyPI for the vibe-memory project and create matching GitHub Environments named
pypi and testpypi.
Notes
.memory/index.sqliteis rebuildable and should not be treated as source of truth..memory/index.sqliteis the derived search/query index used by both CLI and MCP retrieval surfaces..memory/proposals/*.yamlstores pending/applied/rejected/expired proposal batches.- Native files such as
AGENTS.md,CLAUDE.md, and Cursor rules should stay thin and procedural. They should tell agents when to fetch memory, not duplicate the full memory corpus. - Use
memory initfor a new/blank project andmemory bootstrapfor an existing repo with docs or agent rule files. - v1 writes generated outputs only under
.memory/dist/. - Root files like
AGENTS.md,CLAUDE.md,.cursor/rules, and.opencode/*are never modified automatically. - Deprecated cards remain in canonical memory for history but are hidden from search, list, and render output by default.
- Proposal application now includes revision checks, so stale approvals cannot overwrite cards that changed after proposal creation.
- See
docs/DESIGN_CRITIQUE.mdfor the recommended precedence model between native tool files, MCP retrieval, and canonical cards.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vibe_memory-0.1.2.tar.gz.
File metadata
- Download URL: vibe_memory-0.1.2.tar.gz
- Upload date:
- Size: 81.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c830867a82f52721c963e6801d5d2756b3eabbad8c5c08abe7c5905abea44217
|
|
| MD5 |
dec9e3dfcc58b1fcdab6c2b96ab170ae
|
|
| BLAKE2b-256 |
51ac99a5d0cc70c6a0ae0131427086741cd56d8f383ea9940e6b5748822a0920
|
Provenance
The following attestation bundles were made for vibe_memory-0.1.2.tar.gz:
Publisher:
publish-pypi.yml on abhinav-18max/vibe-memory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibe_memory-0.1.2.tar.gz -
Subject digest:
c830867a82f52721c963e6801d5d2756b3eabbad8c5c08abe7c5905abea44217 - Sigstore transparency entry: 1057417792
- Sigstore integration time:
-
Permalink:
abhinav-18max/vibe-memory@e9eb1f4bd67024e0962c92f5e8a3f932ab255ceb -
Branch / Tag:
refs/tags/preview - Owner: https://github.com/abhinav-18max
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e9eb1f4bd67024e0962c92f5e8a3f932ab255ceb -
Trigger Event:
release
-
Statement type:
File details
Details for the file vibe_memory-0.1.2-py3-none-any.whl.
File metadata
- Download URL: vibe_memory-0.1.2-py3-none-any.whl
- Upload date:
- Size: 30.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
088a13e2740fe341e8739144f4d0d857cdc792e5496f384e285340b8f2023511
|
|
| MD5 |
2080e826fd773f5d5c62962572d2be77
|
|
| BLAKE2b-256 |
503b6814edadfae2f97240454b80d0cae981598e5d7d937d475dd3c1759044ad
|
Provenance
The following attestation bundles were made for vibe_memory-0.1.2-py3-none-any.whl:
Publisher:
publish-pypi.yml on abhinav-18max/vibe-memory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibe_memory-0.1.2-py3-none-any.whl -
Subject digest:
088a13e2740fe341e8739144f4d0d857cdc792e5496f384e285340b8f2023511 - Sigstore transparency entry: 1057417795
- Sigstore integration time:
-
Permalink:
abhinav-18max/vibe-memory@e9eb1f4bd67024e0962c92f5e8a3f932ab255ceb -
Branch / Tag:
refs/tags/preview - Owner: https://github.com/abhinav-18max
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e9eb1f4bd67024e0962c92f5e8a3f932ab255ceb -
Trigger Event:
release
-
Statement type: