memU
Memory framework
First committed by evan-ak
Published in NevaMind-AI/memU. Publisher page
14,613 GitHub stars
What it is
Personal memory across agents
AutoGineer overview, from the brain’s own files
memU is an agent-driven memory system designed to provide persistent knowledge across different AI agents, sessions, and devices. It functions as a sidecar to desktop coding agents, automatically mining session logs to extract reusable skills and workflows. These skills are stored as Markdown files, which the agent can then retrieve and apply to future tasks. The system is designed to be storage-agnostic, supporting local SQLite databases for single-device use or Postgres for concurrent access, and it integrates with various coding agents through dedicated host adapters.
How it works
Memory model: LLM wiki
AutoGineer overview, from the brain’s own files
memU operates by installing a scheduled background task that monitors agent session logs. It slices these logs into jobs, which the agent then processes to create or update Markdown-based skill files. These skills are indexed and stored in a configured backend. When an agent performs a task, it uses a standing instruction to trigger a retrieval process, which fetches relevant skills from the memory store and injects them into the agent's context.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 10 |
| assets | attachments | 24 |
| docs | docs | 25 |
| scripts | scripts | 1 |
| src | source-code | 190 |
| tests | tests | 69 |
| npm | folder | 3 |
The agent reads
- src/memu/database/postgres/migrations/ evidence: AGENTS.md
The agent writes
- src/memu/database/repositories/ evidence: AGENTS.md
- README.md evidence: AGENTS.md
- npm/README.md evidence: AGENTS.md
- docs/adr/ evidence: AGENTS.md
Requirements
Runtimes: Python >=3.11
Databases: PostgreSQL, SQLite
API keys (by name): MEMU_API_KEY, OPENAI_API_KEY
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
This brain runs code automatically: 4 scripts. Review Makefile, src/memu/hosts/claude_code/install.py, src/memu/hosts/codex/install.py, src/memu/hosts/pi/install.py before opening the folder in Claude Code. No step below turns a hook on for you.
Makefile:echo "🚀 Creating virtual environment using uv"; uv sync; uv run pre-commit installsrc/memu/hosts/claude_code/install.py:python src/memu/hosts/claude_code/install.pysrc/memu/hosts/codex/install.py:python src/memu/hosts/codex/install.pysrc/memu/hosts/pi/install.py:python src/memu/hosts/pi/install.py
- Not scanned by AutoGineerIts dependencies are installed by pip or uv when you run it and were not scanned by AutoGineer (7 declared). https://pypi.org/project/memu-cli/
First committed by evan-ak. Published in NevaMind-AI/memU. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Install memU via the provided CLI or agent-specific instructions.
- Configure the memory backend using a local SQLite file or a Postgres DSN.
- Allow the background task to automatically distill agent history into Markdown skills.
- Use the agent's integrated retrieval mechanism to access relevant past skills during new tasks.
- Manage memory settings and storage via the memU CLI or environment variables.
- Use the doctor command to verify the configuration and retrieval path.
- “memu-codex retrieve "What should I remember about this project?"”
- The system returns relevant memory hits containing text, descriptions, and paths from previous sessions.
- “memu-agent detect”
- The system probes the machine to identify the agent and reports if memorization and retrieval are supported.
Documentation by evan-ak
<div align="center">
memU
Personal memory, stored as Wiki
Across Sessions. Across Agents. Across Devices.
Image: PyPI version Image: License: Apache 2.0 Image: Python 3.11+ Image: Discord Image: Twitter
<a href="https://trendshift.io/repositories/17374" target="_blank"><img src="https://trendshift.io/api/badge/repositories/17374" alt="NevaMind-AI%2FmemU | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</div>
memU is a lightweight, agent-driven memory system that gives users a shared LLM wiki across sessions, agents, and devices. It automatically distills your own reusable skills from your agent history. Its core memory logic is only 500 lines — compact enough to inspect, understand, and adapt.
Quick start
memU works with Codex, Claude Code, Cursor, OpenClaw, Hermes, WorkBuddy, Cola, pi, and more. See Host adapters.
Cross-device · Free · Unlimited · View online
Get your API key from memu.so, then send this message to your agent:
Read https://memu.pro/SKILL.md, follow its instructions to install and configure memU, API Key is memu_•••••••••(get Api Key from memu.so).
Agent support
This matrix lists the currently tested memU integrations by operating system.
Memorize — capture useful session knowledge through a scheduled background task and turn it into reusable memory.
Retrieve — bring relevant memory into a future task.
⚠️ — supported with an important limitation; see the user note.
macOS
| Agent | Mode | Memorize | Retrieve | User note |
|---|---|---|---|---|
| ChatGPT | ChatGPT(Work mode), codex and VS Code extension | ✅ | ✅ | |
| ChatGPT | Chat | ❌ | ❌ | Chat mode is not currently supported. Please use Work mode. |
| Claude Code | Desktop and CLI | ✅ | ✅ | If the selected model declines the setup steps, retry with Opus or another model. Sonnet 5 can occasionally do this. |
| Claude | Chat and Cowork | ❌ | ❌ | |
| Cursor | — | ✅ | ✅ | |
| OpenClaw | — | ✅ | ✅ | Retrieve support has not yet been verified. |
| Hermes Agent | — | ✅ | ✅ | |
| WorkBuddy | — | ✅ | ✅ |
Windows
| Agent | Mode | Memorize | Retrieve | User note |
|---|---|---|---|---|
| ChatGPT | ChatGPT(Work mode), codex and VS Code extension | ✅ | ✅ | |
| ChatGPT | Chat | ❌ | ❌ | Chat mode is not currently supported. Please use Work mode. |
| Claude Code | Desktop and CLI | ✅ | ✅ | If the selected model declines the setup steps, retry with Opus or another model. Sonnet 5 can occasionally do this. |
| Claude | Chat and Cowork | ❌ | ❌ | |
| Cursor | — | ✅ | ✅ | |
| OpenClaw | — | ✅ | ✅ | |
| Hermes Agent | — | ✅ | ⚠️ | Use a memU version with Windows HERMES_HOME support; older versions may retrieve from the wrong files. |
| WorkBuddy | — | ✅ | ✅ | With Hy3, retrieval may fail. Retry with another model if this happens. |
Linux
| Agent | Mode | Memorize | Retrieve | User note |
|---|---|---|---|---|
| Codex | VS Code extension | ❌ | ✅ | |
| Claude Code | CLI | ✅ | ✅ | |
| OpenClaw | 4.23 / 7.1 | ✅ | ✅ |
Support status reflects the current release and may change as host integrations evolve.
How it works
Image: memU memory system architecture
Automatic skill extraction
Once the scheduled bridging task is installed, memU can turn useful agent history into reusable Markdown skills automatically.
Image: How memU turns agent history into reusable skills
Capture new sessions. The host adapter reads new session history, including messages and tool calls.
Prepare self-evolve jobs.
prepareslices each session into a self-contained job with the paths and context the agent needs.Let the agent decide. The agent reads related existing skills, then chooses to do nothing, patch an existing skill, or create a new one.
Write readable skill Markdown. Each skill has a name, description, and reusable workflow, including useful branches, edge cases, and pitfalls.
Commit and index.
commitsubmits changed skill files throughcommit_results; memU embeds the skill name and description and stores it under theskilltrack.Retrieve it later. On a similar future task, memU returns the relevant skill so any connected agent can use the learned workflow.
The judgment and synthesis stay inside the agent. MemoryService makes no LLM or chat calls; it stores, embeds, and retrieves the skill Markdown the agent prepared.
Self-hosted
Private · Single-device · Embedding key required
To run memU locally with your own storage and embedding provider, send this message to your agent:
Read https://raw.githubusercontent.com/NevaMind-AI/MemU/main/SKILL.md and follow it to install memU.
Uninstall
To uninstall memU, send this message to your agent:
Read https://memu.pro/SKILL.md and follow its instructions to uninstall memU.
By default, uninstalling removes the host integration and tooling while keeping your memory store and ~/.memu/config.env, so a later reinstall can resume where you left off. Memory is erased only when you explicitly ask for it.
Host adapters: memory for desktop coding agents
memU runs as a sidecar to a desktop agent, one binary per host. Each binds two seams:
record — a scheduled bridging task slices new session logs into self-contained job files; the agent itself distills them into memory/skill Markdown;
commitsubmits whatever the agent left on disk back throughcommit_results.inject — a standing instruction in the host's instruction file tells the agent to run
<binary> retrieve(→progressive_retrieve) before answering.
| Host | Binary | Session log it mines | Instruction file it patches |
|---|---|---|---|
| Codex | memu-codex | ~/.codex/sessions/**/*.jsonl | ~/.codex/AGENTS.md |
| Claude Code | memu-claude-code | ~/.claude/projects/<project>/<session>.jsonl | ~/.claude/CLAUDE.md |
| Cursor (Agent/CLI) | memu-cursor | ~/.cursor/projects/<project>/agent-transcripts/**.jsonl | ./AGENTS.md (per project) |
| OpenClaw | memu-openclaw | ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite (SQLite, read-only) + legacy <agentId>/sessions/*.jsonl | ~/.openclaw/workspace/AGENTS.md |
| Hermes Agent | memu-hermes | ~/.hermes/state.db (SQLite, read-only) | ~/.hermes/SOUL.md |
| WorkBuddy | memu-workbuddy | ~/.workbuddy/projects/<project>/<session>.jsonl | ~/.workbuddy/SOUL.md |
| Cola | memu-cola | ~/.cola/sessions/<scope>/<session>.jsonl | ~/.cola/memory-bank/MEMORY.md |
| pi | memu-pi | ~/.pi/agent/sessions/<encoded-cwd>/<session>.jsonl | ~/.pi/agent/AGENTS.md |
| any other agent | memu-agent | found by memu-agent detect (JSONL dialect sniffed) | found by detect (AGENTS.md / CLAUDE.md / SOUL.md / …) |
For agents without a dedicated binary, memu-agent detect probes the machine and reports per agent whether memorization works (a recognizable session log exists) and whether retrieval works (an instruction file exists to patch) — then the same verbs run against what it found.
All hosts share one configured memory backend via ~/.memu/config.env — local
or MemU Cloud. What one host's sessions taught memU, another host retrieves.
Installation is the one-message setup in Quick start or Self-hosted. SKILL.md is the routing skill it hands your agent: install the package, identify which host you are (falling back to memu-agent detect for anything without a dedicated adapter), print that host's packaged install guide (<binary> docs install), and follow it — configure the memory backend, register the scheduled bridging task, patch the instruction file, each step behind a verify gate — then report which seams (memorization / retrieval) are now active.
Afterwards <binary> doctor proves the whole loop resolves: config, selected
mode, and a live retrieval.
Adding another host means implementing one TranscriptSource (where its session logs live, how its records are shaped) plus a HostSpec-sized CLI — the pipeline, verbs, and instruction text are shared.
Developer integration
Use memu memorize to turn application-owned conversations into memory and skills.
CLI
With memU Cloud, sign in at memu.so to view your memory files. With a local installation, memory lives in the shared store configured by MEMU_DB in ~/.memu/config.env — typically ~/.memu/memu.sqlite3 for local SQLite, or a Postgres DSN.
Once installed, your agent retrieves relevant memory automatically before answering. To retrieve manually, run the adapter for your host:
memu-codex retrieve "What should I remember about this project?"
# or: memu-claude-code / memu-cursor / memu-openclaw / memu-hermes / memu-workbuddy / memu-cola / memu-pi / memu-agentFor pi, run memu-pi install to configure the memory backend and install the
extension, then run /reload or open a new session. Submitted prompts start
retrieval in the
background; results enter the model context and resume an idle agent. After the
user turn and pending retrieval settle, a background worker processes the saved
conversation into memory using the active session's model. Workers share a lock
and a 30-minute cooldown. Long prompts use an isolated, tool-free pi request to
extract a search query with the active provider/model; extraction has a 12-second
timeout and falls back to the original prefix. The installer registers and verifies
the extension. Run memu-pi uninstall and reload to remove it.
Host retrieval returns compact JSON with at most five self-contained hits plus independent resources. Each hit combines matched text with its source's description, track, and local mirror path (or inline content when no mirror is available). Its score describes the matched segment; created_at and updated_at describe the source file when available. Hits retain segment order, including excerpts whose source is missing; sources without matched excerpts remain source-only hits. Resources contain path, caption, and available scores/timestamps. Database IDs and scope metadata are omitted from the agent-facing output.
Install or invoke the CLI directly:
pip install memu-cli # library + memu + memu-codex CLIs
npx memu-cli --help # CLI via npm launcher (engine: PyPI package memu-cli)
uvx --from memu-cli memu # CLI via uv, no installConfiguration
Values resolve in order: process env → ~/.memu/config.env → default. memU
supports Local and Cloud memory backends, selected by MEMU_MEMORY_MODE; an
unset mode remains Local for backward compatibility.
For Local / self-hosted installations, every CLI flag has a matching variable:
| Setting | Env var | Default |
|---|---|---|
| Store | MEMU_DB | ./data/memu.sqlite3 (CLI); required for host adapters |
| Embedding provider | MEMU_EMBED_PROVIDER | openai (also: jina, voyage, doubao, openrouter); legacy MEMU_LLM_PROVIDER still read |
| API key | MEMU_API_KEY | the provider's env var, e.g. OPENAI_API_KEY |
| Embedding model | MEMU_EMBED_MODEL | the provider's default |
| Base URL | MEMU_BASE_URL | the provider's default |
Run <binary> doctor to display the resolved mode and verify the same retrieval
path the host uses.
Storage backends
| Provider | DSN | Vector search | Use for |
|---|---|---|---|
inmemory | — | brute-force cosine | tests, throwaway sessions |
sqlite | sqlite:///path.sqlite3 | brute-force cosine | local/default, single writer |
postgres | postgresql://... | pgvector | concurrent access, large stores (pip install "memu-cli[postgres]") |
service = MemoryService(
database_config={"metadata_store": {"provider": "postgres", "dsn": "postgresql://..."}},
embedding_profiles={"default": {"provider": "jina"}},
)Community contributions
Explore the community tasks (English / 简体中文) and claim a task in issue #790. Each task has a stable link, a difficulty rating, and acceptance criteria. See CONTRIBUTING.md for development and PR guidelines.
License
Apache-2.0
<sub>Partnership Community: <a href="https://linux.do">LINUX DO</a></sub>
CHANGELOG.md
Changelog
2.0.0-beta.0 (2026-07-23)
Features
blob: ingest rich documents (PDF/Office/HTML) via MarkItDown (#447) (1e16341)
Codex session-bridging pipeline and scheduled-task skill (#477) (1a8edb5)
doctor: diagnose proxy hijacking instead of printing a bare 502 (7c41eec)
env: config.env carries NO_PROXY; MEMU_HTTP_PROXY works from the file (5265945)
from memory item/category to tracked entry/file for workspace memorization (ADR 0006) (#456) (68877da)
hosts: add Claude Code, Cursor, OpenClaw, and Hermes host adapters (#494) (24d1b3b)
hosts: add memu-agent, a generic adapter for any other agent (#496) (e46a1f0)
hosts: agent-driven uninstall — remove-instruction, docs uninstall, per-host guides (#509) (f51673e)
hosts: install retrieval as a skill on Codex and Claude Code (#535) (2ed480e)
layered, track-aware workspace memorize & retrieve (#466) (094e22f)
llm,vlm: multi-provider LLM gateway, modular preprocessing, and VLM package (#442) (6f1b0bc)
memory_fs: workspace memorize + markdown memory file system (#439) (1b1ad61)
memu CLI, npm launcher, and agent skills for the workspace pair (#467) (c861974)
npm: point the launcher at the memu-cli PyPI channel (#483) (5056389)
preprocess: classify audio type and add an overview on ingest (#448) (f7601da)
vlm,preprocess: native whole-video understanding via OpenRouter (#450) (1de5784)
Bug Fixes
app: unpack the (vectors, raw_response) tuple embed() returns (#504) (9b2a70c)
bridging: advance the cursor and snapshot at commit, not prepare (#531) (0ceaa19)
ci: sort workbuddy cli imports so make check passes (#522) (151298c)
cli: force UTF-8 stdio so piped output survives non-UTF-8 Windows code pages (#513) (b521453)
codex: drop harness-injected user records from the conversation seam (#511) (c827157)
embedding: never route loopback embedding calls through a proxy (#519) (df6cfba)
handle multiple root-level XML elements from non-conformant LLMs (#409) (fed42b6)
hermes: escape the state.db path when building the SQLite URI (#503) (3135132)
llm/vlm: correct OpenAI token-limit param and simplify conversation preprocess (#449) (ff3c2be)
make lazyllm an optional dependency (fixes #373) (#402) (7652982)
memory_fs: restore LLM-free skill bypass and unify synthesis paths (#444) (bc13bd4)
openclaw: scan only main session transcripts, not trajectory/checkpoint sidecars (0245de9)
optimize category initialization to avoid unnecessary embedding (#388) (a92f266)
remove broken memu-server entry point (fixes #354) (#398) (0672b56)
remove duplicate document text from preprocess prompt (#420) (44aa5ff)
remove stale memu-server script entry point (fixes #393) (#403) (c5fe493)
resolve SQLite embedding TypeError by using sa_column=False (#401) (7e198f3)
return empty list for non-positive top_k in cosine_topk (#423) (39023a8)
tests: pin UTF-8 on test file I/O so the suite passes on non-UTF-8-locale Windows (#501) (dda515a)
Documentation
add ADR 0008 — trajectory as the source, hooks over API (#476) (ff90dac)
add INSTALL-LATEST.md and register the WorkBuddy adapter (#527) (4871c55)
add SKILL.md, one routing entry point for agent-driven install (#497) (bf7aaf3)
add the architecture image the README references (#492) (c07b905)
add under-construction notice, stabilizing ~July 15 (#472) (6426ff0)
ADR 0007 — drop the graph, retrieval is hybrid (embedding + BM25) (#464) (3dd7d5c)
ADR 0007 — invert L1/L2 (L1 = coarse doc, L2 = item slices) (#465) (0afbcc5)
ADR 0007 — replace the explicit item graph with entity linking (#463) (0bd3c77)
ADR 0007 — three independent memory lines on a layered wiki-graph kernel (#461) (a6cf62e)
align architecture.md and READMEs with ADR 0006 data model (#460) (8062b91)
consolidate agent skills into one memu SKILL.md, link it atop README (#469) (6f0ae82)
drop the API and CLI reference sections from the README (#489) (94a1111)
expand the README; rename provider var to MEMU_EMBED_PROVIDER (#486) (96da89b)
focus readme on workspace APIs (9241f31)
grok: fix MemoryService initialization example (#405) (96e693a)
highlight self-evolving skills in README and description (#452) (fb68d22)
hosts: bind the session cursor's lifecycle to the store's (75959a6)
hosts: correct the Claude Code multi-block claim and pin it with tests (#502) (5995e05)
hosts: name the OS system-wide proxy as a 502 source (#523) (2b79803)
hosts: no-key local fallback hint; default bridging schedule to cron (#508) (d155c48)
hosts: scheduled runs drain leftover jobs first; config repairs stay at the connection layer (9195d14)
hosts: the scheduler's PATH is not your shell's — fix and honest verify for the bridging guides (#530) (19302d2)
lead the README with the one-message agent-driven install (#498) (aae3d44)
make the workspace pair primary, mark memorize/retrieve as legacy (#470) (6f3c1be)
never fall back to legacy memorize/retrieve (#471) (28ee09d)
readme: reframe intro around MEMORY.md, SKILL.md, and INDEX.md (#434) (ca0c755)
readme: reframe README around file-system-as-memory narrative (#432) (cd8150a)
readme: reframe README around workspace-runtime narrative (#438) (7c104b1)
readme: sync translated READMEs to file-system-as-memory narrative (#433) (f4e82ce)
refine ADR 0007 with the L0/L1/L2 layer model (#462) (6456c35)
Refine OpenClaw reference and feature descriptions (#410) (707b80e)
refine README memory filesystem positioning (#429) (dda0374)
refine README positioning around personal memory as files (#455) (88982d3)
reframe README and description around personal-information memory (#451) (6b5b11c)
retitle around file-based memory and trim README (#453) (2c1cc86)
swap the tagline to lead with Across Agents (#490) (6e0fc06)
tagline across sessions/agents/devices, lowercase memU in banner alt (#515) (1f4f831)
Miscellaneous Chores
1.5.1 (2026-03-23)
Bug Fixes
1.5.0 (2026-03-17)
Features
Bug Fixes
Documentation
add pull request template to improve contribution quality (#261) (2256119)
update memU Bot section with GitHub reference and "Now open source" (#366) (dc6880a)
1.4.0 (2026-02-06)
Features
Add inline memory item references in category summaries (#202) (#205) (5213571)
Add salience-aware memory with reinforcement tracking (#186) (#206) (2bdbcce)
Add Tool Memory type with specialized metadata and statistics (#247) (4e8a035)
Bug Fixes
add chat() API and stop misusing summarize() (#208) (be0a5c7)
remove unused type: ignore comment and add lazyllm mypy override (#275) (0e490f7)
video: cleanup temp files on extraction failure (#295) (16b65e5)
Documentation
1.3.0 (2026-01-29)
Features
add happened at and extra fields to memory item (#262) (77938e9)
add Sealos support agent use case (Track G) (#255) (8fbdf3c)
integrate LazyLLM to provide more llm services (#265) (c03f639)
integrations: Add LangGraph Adapter for MemU (Track A) (#258) (50b5502)
Bug Fixes
Documentation
1.2.0 (2026-01-14)
Features
Bug Fixes
allow nullable resource_id in Postgres items (#232) (ae2ffbb)
correct coverage source to track memu package instead of tests (#220) (2460bbd)
correct typo in PromptBlock class label attribute (#231) (d69053c)
Documentation
1.1.2 (2026-01-08)
Bug Fixes
Documentation
1.1.1 (2026-01-07)
Bug Fixes
Documentation
1.1.0 (2026-01-07)
Features
Bug Fixes
Documentation
1.0.1 (2026-01-06)
Bug Fixes
1.0.0 (2026-01-05)
⚠ BREAKING CHANGES
v1.0.0 (#147)
Bug Fixes
Documentation
0.9.0 (2026-01-04)
Features
add GitHub issue templates (bug report, designer feedback, feat… (#132) (aee22ee)
add LLM wrapper and interceptors for LLM calls (#131) (416e102)
Bug Fixes
Documentation
0.8.0 (2025-12-24)
Features
add configurable batch_size for embedding API calls (#114) (060067a)
add workflow implementation and postgres store (#122) (a175811)
Bug Fixes
Documentation
0.7.0 (2025-12-05)
Features
Bug Fixes
Documentation
0.6.0 (2025-11-20)
Features
0.5.0 (2025-11-18)
Features
0.4.0 (2025-11-18)
Features
Bug Fixes
Documentation
revise README for clarity and roadmap inclusion (#86) (2235b09)
update images and refine punctuation in README (#88) (cc375e8)
0.3.0 (2025-11-17)
Features
Documentation
339 files · 329 not served here
- .github/ISSUE_TEMPLATE/bug_report.yml (not served here)
- .github/ISSUE_TEMPLATE/config.yml (not served here)
- .github/ISSUE_TEMPLATE/feature_request.yml (not served here)
- .github/ISSUE_TEMPLATE/hackathon_task.yml (not served here)
- .github/ISSUE_TEMPLATE/improvement_suggestion.yml (not served here)
- .github/PULL_REQUEST_TEMPLATE.md (not served here)
- .github/workflows/build.yml (not served here)
- .github/workflows/pr-title.yml (not served here)
- .github/workflows/publish-memu-cli.yml (not served here)
- .github/workflows/release-please.yml (not served here)
- .gitignore (not served here)
- .pre-commit-config.yaml (not served here)
- .python-version (not served here)
- AGENTS.md
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- CONTRIBUTING.md
- INSTALL-LATEST.md
- LICENSE.txt
- MANIFEST.in (not served here)
- Makefile (not served here)
- README.md
- SKILL.md
- assets/banner.png (not served here)
- assets/benchmark.png (not served here)
- assets/memUbot.png (not served here)
- assets/memorize.png (not served here)
- assets/partners/Clawdchat.png (not served here)
- assets/partners/LazyLLM.png (not served here)
- assets/partners/buddie.png (not served here)
- assets/partners/bytebase.png (not served here)
- assets/partners/jazz.png (not served here)
- assets/partners/openagents.png (not served here)
- assets/partners/xroute.png (not served here)
- assets/qrcode.png (not served here)
- assets/retrieve.png (not served here)
- assets/skill-extraction.png (not served here)
- assets/star.gif (not served here)
- assets/structure-v2.png (not served here)
- assets/structure.png (not served here)
- assets/usecase/ai_companion-0000.jpg (not served here)
- assets/usecase/ai_creation-0000.jpg (not served here)
- assets/usecase/ai_edu-0000.jpg (not served here)
- assets/usecase/ai_ip-0000.png (not served here)
- assets/usecase/ai_robot-0000.jpg (not served here)
- assets/usecase/ai_role_play-0000.jpg (not served here)
- assets/usecase/ai_therapy-0000.jpg (not served here)
- docs/adr/0001-workflow-pipeline-architecture.md (not served here)
- docs/adr/0002-pluggable-storage-and-vector-strategy.md (not served here)
- docs/adr/0003-user-scope-in-data-model.md (not served here)
- docs/adr/0004-workspace-memorize-and-memory-file-system.md (not served here)
- docs/adr/0005-dedicated-embedding-package.md (not served here)
- docs/adr/0006-from-memory-item-category-to-tracked-workspace-memorization.md (not served here)
- docs/adr/0007-three-independent-memory-lines-wiki-graph.md (not served here)
- docs/adr/0008-two-integration-surfaces-hooks-and-api.md (not served here)
- docs/adr/0009-codex-packaging-cli-and-config.md (not served here)
- docs/adr/0010-multi-host-adapters.md (not served here)
- docs/adr/0011-generic-host-adapter.md (not served here)
- docs/adr/0012-cloud-backed-agentic-backend.md (not served here)
- docs/adr/0013-self-updating-instruction-templates.md (not served here)
- docs/adr/0014-paginated-list-all-recall-files.md (not served here)
- docs/adr/0015-bridging-must-not-mine-its-own-run.md (not served here)
- docs/adr/0016-client-event-reporting.md (not served here)
- docs/adr/0017-config-env-as-a-command.md (not served here)
- docs/adr/0018-cowork-through-claude-code-bridge.md (not served here)
- docs/adr/0019-developer-run-workspaces.md (not served here)
- docs/adr/0020-self-contained-host-retrieval-hits.md (not served here)
- docs/adr/0021-pi-extension-hooks.md (not served here)
- docs/adr/README.md (not served here)
- docs/community/tasks.en.md (not served here)
- docs/community/tasks.md (not served here)
- docs/sqlite.md
- npm/README.md (not served here)
- npm/bin/memu.js (not served here)
- npm/package.json (not served here)
- pyproject.toml (not served here)
- scripts/db.py (not served here)
- setup.cfg (not served here)
- src/memu/__init__.py (not served here)
- src/memu/__main__.py (not served here)
- src/memu/agentic_backend.py (not served here)
- src/memu/app/__init__.py (not served here)
- src/memu/app/agentic.py (not served here)
- src/memu/app/client_pool.py (not served here)
- src/memu/app/memorize/__init__.py (not served here)
- src/memu/app/memorize/input.py (not served here)
- src/memu/app/memorize/lifecycle.py (not served here)
- src/memu/app/memorize/materialize.py (not served here)
- src/memu/app/service.py (not served here)
- src/memu/app/settings.py (not served here)
- src/memu/cli.py (not served here)
- src/memu/cloud.py (not served here)
- src/memu/config_file.py (not served here)
- src/memu/database/__init__.py (not served here)
- src/memu/database/factory.py (not served here)
- src/memu/database/inmemory/__init__.py (not served here)
- src/memu/database/inmemory/models.py (not served here)
- src/memu/database/inmemory/repo.py (not served here)
- src/memu/database/inmemory/repositories/__init__.py (not served here)
- src/memu/database/inmemory/repositories/filter.py (not served here)
- src/memu/database/inmemory/repositories/recall_file_repo.py (not served here)
- src/memu/database/inmemory/repositories/recall_file_segment_repo.py (not served here)
- src/memu/database/inmemory/repositories/resource_repo.py (not served here)
- src/memu/database/inmemory/state.py (not served here)
- src/memu/database/inmemory/vector.py (not served here)
- src/memu/database/interfaces.py (not served here)
- src/memu/database/models.py (not served here)
- src/memu/database/postgres/__init__.py (not served here)
- src/memu/database/postgres/migration.py (not served here)
- src/memu/database/postgres/migrations/__init__.py (not served here)
- src/memu/database/postgres/migrations/env.py (not served here)
- src/memu/database/postgres/migrations/script.py.mako (not served here)
- src/memu/database/postgres/migrations/versions/20260703_0001_initial_schema.py (not served here)
- src/memu/database/postgres/models.py (not served here)
- src/memu/database/postgres/postgres.py (not served here)
- src/memu/database/postgres/repositories/__init__.py (not served here)
- src/memu/database/postgres/repositories/base.py (not served here)
- src/memu/database/postgres/repositories/recall_file_repo.py (not served here)
- src/memu/database/postgres/repositories/recall_file_segment_repo.py (not served here)
- src/memu/database/postgres/repositories/resource_repo.py (not served here)
- src/memu/database/postgres/schema.py (not served here)
- src/memu/database/postgres/session.py (not served here)
- src/memu/database/repositories/__init__.py (not served here)
- src/memu/database/repositories/recall_file.py (not served here)
- src/memu/database/repositories/recall_file_segment.py (not served here)
- src/memu/database/repositories/resource.py (not served here)
- src/memu/database/sqlite/__init__.py (not served here)
- src/memu/database/sqlite/models.py (not served here)
- src/memu/database/sqlite/repositories/__init__.py (not served here)
- src/memu/database/sqlite/repositories/base.py (not served here)
- src/memu/database/sqlite/repositories/recall_file_repo.py (not served here)
- src/memu/database/sqlite/repositories/recall_file_segment_repo.py (not served here)
- src/memu/database/sqlite/repositories/resource_repo.py (not served here)
- src/memu/database/sqlite/schema.py (not served here)
- src/memu/database/sqlite/session.py (not served here)
- src/memu/database/sqlite/sqlite.py (not served here)
- src/memu/database/state.py (not served here)
- src/memu/embedding/__init__.py (not served here)
- src/memu/embedding/backends/__init__.py (not served here)
- src/memu/embedding/backends/base.py (not served here)
- src/memu/embedding/backends/doubao.py (not served here)
- src/memu/embedding/backends/jina.py (not served here)
- src/memu/embedding/backends/openai.py (not served here)
- src/memu/embedding/backends/openrouter.py (not served here)
- src/memu/embedding/backends/voyage.py (not served here)
- src/memu/embedding/base.py (not served here)
- src/memu/embedding/defaults.py (not served here)
- src/memu/embedding/gateway.py (not served here)
- src/memu/embedding/http_client.py (not served here)
- src/memu/embedding/openai_sdk.py (not served here)
- src/memu/env.py (not served here)
- src/memu/events.py (not served here)
- src/memu/hosts/__init__.py (not served here)
- src/memu/hosts/base.py (not served here)
- src/memu/hosts/bridging/__init__.py (not served here)
- src/memu/hosts/bridging/instructions.py (not served here)
- src/memu/hosts/bridging/layout.py (not served here)
- src/memu/hosts/bridging/manifest.py (not served here)
- src/memu/hosts/bridging/pipeline.py (not served here)
- src/memu/hosts/bridging/recall_files.py (not served here)
- src/memu/hosts/bridging/resources.py (not served here)
- src/memu/hosts/bridging/self_sessions.py (not served here)
- src/memu/hosts/bridging/transcripts.py (not served here)
- src/memu/hosts/claude_code/BRIDGING_TASK.md (not served here)
- src/memu/hosts/claude_code/INSTALL.md (not served here)
- src/memu/hosts/claude_code/UNINSTALL.md (not served here)
- src/memu/hosts/claude_code/__init__.py (not served here)
- src/memu/hosts/claude_code/auth.py (not served here)
- src/memu/hosts/claude_code/cli.py (not served here)
- src/memu/hosts/claude_code/cli_prepare.py (not served here)
- src/memu/hosts/claude_code/cowork_cmd.py (not served here)
- src/memu/hosts/claude_code/desktop_sessions.py (not served here)
- src/memu/hosts/claude_code/doctor.py (not served here)
- src/memu/hosts/claude_code/hook_install.py (not served here)
- src/memu/hosts/claude_code/install.py (not served here)
- src/memu/hosts/claude_code/memorize_hook.py (not served here)
- src/memu/hosts/claude_code/prompt_hook.py (not served here)
- src/memu/hosts/claude_code/query_extraction.py (not served here)
- src/memu/hosts/claude_code/sessions.py (not served here)
- src/memu/hosts/claude_code/submit.py (not served here)
- src/memu/hosts/claude_code/uninstall.py (not served here)
- src/memu/hosts/claude_records.py (not served here)
- src/memu/hosts/cli_install.py (not served here)
- src/memu/hosts/codex/BRIDGING_TASK.md (not served here)
- src/memu/hosts/codex/INSTALL.md (not served here)
- src/memu/hosts/codex/UNINSTALL.md (not served here)
- src/memu/hosts/codex/__init__.py (not served here)
- src/memu/hosts/codex/cli.py (not served here)
- src/memu/hosts/codex/cli_prepare.py (not served here)
- src/memu/hosts/codex/doctor.py (not served here)
- src/memu/hosts/codex/hook_status.py (not served here)
- src/memu/hosts/codex/install.py (not served here)
- src/memu/hosts/codex/memorize_hook.py (not served here)
- src/memu/hosts/codex/notify_console.py (not served here)
- src/memu/hosts/codex/prompt_hook.py (not served here)
- src/memu/hosts/codex/prompt_hook_install.py (not served here)
- src/memu/hosts/codex/query_extraction.py (not served here)
- src/memu/hosts/codex/sessions.py (not served here)
- src/memu/hosts/codex/uninstall.py (not served here)
- src/memu/hosts/cola/BRIDGING_TASK.md (not served here)
- src/memu/hosts/cola/INSTALL.md (not served here)
- src/memu/hosts/cola/UNINSTALL.md (not served here)
- src/memu/hosts/cola/__init__.py (not served here)
- src/memu/hosts/cola/cli.py (not served here)
- src/memu/hosts/cola/sessions.py (not served here)
- src/memu/hosts/config_cmd.py (not served here)
- src/memu/hosts/cowork/__init__.py (not served here)
- src/memu/hosts/cowork/sessions.py (not served here)
- src/memu/hosts/cursor/BRIDGING_TASK.md (not served here)
- src/memu/hosts/cursor/INSTALL.md (not served here)
- src/memu/hosts/cursor/UNINSTALL.md (not served here)
- src/memu/hosts/cursor/__init__.py (not served here)
- src/memu/hosts/cursor/cli.py (not served here)
- src/memu/hosts/cursor/sessions.py (not served here)
- src/memu/hosts/generic/BRIDGING_TASK.md (not served here)
- src/memu/hosts/generic/INSTALL.md (not served here)
- src/memu/hosts/generic/UNINSTALL.md (not served here)
- src/memu/hosts/generic/__init__.py (not served here)
- src/memu/hosts/generic/cli.py (not served here)
- src/memu/hosts/generic/detect.py (not served here)
- src/memu/hosts/generic/sessions.py (not served here)
- src/memu/hosts/hermes/BRIDGING_TASK.md (not served here)
- src/memu/hosts/hermes/INSTALL.md (not served here)
- src/memu/hosts/hermes/UNINSTALL.md (not served here)
- src/memu/hosts/hermes/__init__.py (not served here)
- src/memu/hosts/hermes/cli.py (not served here)
- src/memu/hosts/hermes/sessions.py (not served here)
- src/memu/hosts/hooks/__init__.py (not served here)
- src/memu/hosts/hooks/admission.py (not served here)
- src/memu/hosts/hooks/worker.py (not served here)
- src/memu/hosts/host_cli.py (not served here)
- src/memu/hosts/install_language.py (not served here)
- src/memu/hosts/installation.py (not served here)
- src/memu/hosts/instruction.py (not served here)
- src/memu/hosts/openclaw/BRIDGING_TASK.md (not served here)
- src/memu/hosts/openclaw/INSTALL.md (not served here)
- src/memu/hosts/openclaw/UNINSTALL.md (not served here)
- src/memu/hosts/openclaw/__init__.py (not served here)
- src/memu/hosts/openclaw/cli.py (not served here)
- src/memu/hosts/openclaw/cron_identity.py (not served here)
- src/memu/hosts/openclaw/sessions.py (not served here)
- src/memu/hosts/pi/BRIDGING_TASK.md (not served here)
- src/memu/hosts/pi/INSTALL.md (not served here)
- src/memu/hosts/pi/UNINSTALL.md (not served here)
- src/memu/hosts/pi/__init__.py (not served here)
- src/memu/hosts/pi/cli.py (not served here)
- src/memu/hosts/pi/hook_install.py (not served here)
- src/memu/hosts/pi/install.py (not served here)
- src/memu/hosts/pi/memorize_hook.py (not served here)
- src/memu/hosts/pi/prompt_hook.py (not served here)
- src/memu/hosts/pi/query_extraction.py (not served here)
- src/memu/hosts/pi/retrieval-extension.ts (not served here)
- src/memu/hosts/pi/sessions.py (not served here)
- src/memu/hosts/query_extraction.py (not served here)
- src/memu/hosts/retrieval.py (not served here)
- src/memu/hosts/scheduling/__init__.py (not served here)
- src/memu/hosts/scheduling/prompt.py (not served here)
- src/memu/hosts/scheduling/windows.py (not served here)
- src/memu/hosts/templates.py (not served here)
- src/memu/hosts/workbuddy/BRIDGING_TASK.md (not served here)
- src/memu/hosts/workbuddy/INSTALL.md (not served here)
- src/memu/hosts/workbuddy/UNINSTALL.md (not served here)
- src/memu/hosts/workbuddy/__init__.py (not served here)
- src/memu/hosts/workbuddy/cli.py (not served here)
- src/memu/hosts/workbuddy/sessions.py (not served here)
- src/memu/retry.py (not served here)
- src/memu/trust.py (not served here)
- src/memu/vector.py (not served here)
- tests/__init__.py (not served here)
- tests/conftest.py (not served here)
- tests/fixtures/cowork/audit.jsonl (not served here)
- tests/test_agentic.py (not served here)
- tests/test_bridging_promotion.py (not served here)
- tests/test_bridging_resources.py (not served here)
- tests/test_bridging_self_sessions.py (not served here)
- tests/test_cache_segment_duplicates.py (not served here)
- tests/test_claude_auth.py (not served here)
- tests/test_claude_cli_request.py (not served here)
- tests/test_claude_hook_encoding.py (not served here)
- tests/test_claude_install.py (not served here)
- tests/test_claude_memorize_hook.py (not served here)
- tests/test_claude_prompt_hook.py (not served here)
- tests/test_claude_query_extraction.py (not served here)
- tests/test_claude_submit.py (not served here)
- tests/test_cli.py (not served here)
- tests/test_cli_install_path.py (not served here)
- tests/test_cli_stdio.py (not served here)
- tests/test_cloud.py (not served here)
- tests/test_codex_cli_prepare.py (not served here)
- tests/test_codex_doctor.py (not served here)
- tests/test_codex_hook_status.py (not served here)
- tests/test_codex_install.py (not served here)
- tests/test_codex_memorize_context.py (not served here)
- tests/test_codex_memorize_cooldown.py (not served here)
- tests/test_codex_memorize_hook.py (not served here)
- tests/test_codex_prompt_hook.py (not served here)
- tests/test_codex_prompt_hook_install.py (not served here)
- tests/test_codex_query_extraction.py (not served here)
- tests/test_codex_query_limit.py (not served here)
- tests/test_codex_uninstall.py (not served here)
- tests/test_config_cmd.py (not served here)
- tests/test_cowork_sessions.py (not served here)
- tests/test_cowork_verify.py (not served here)
- tests/test_cursor_self_sessions.py (not served here)
- tests/test_doctor_proxy_hint.py (not served here)
- tests/test_embedding.py (not served here)
- tests/test_embedding_openrouter.py (not served here)
- tests/test_embedding_proxy.py (not served here)
- tests/test_env_passthrough.py (not served here)
- tests/test_events.py (not served here)
- tests/test_host_generic.py (not served here)
- tests/test_host_hook_admission.py (not served here)
- tests/test_host_hooks.py (not served here)
- tests/test_host_instruction.py (not served here)
- tests/test_host_retrieval.py (not served here)
- tests/test_host_sessions.py (not served here)
- tests/test_host_templates.py (not served here)
- tests/test_memorize_cli.py (not served here)
- tests/test_memorize_input.py (not served here)
- tests/test_memorize_lifecycle.py (not served here)
- tests/test_memorize_materialization.py (not served here)
- tests/test_memorize_runs.py (not served here)
- tests/test_openclaw_self_sessions.py (not served here)
- tests/test_pi_install.py (not served here)
- tests/test_pi_memorize_hook.py (not served here)
- tests/test_pi_memorize_live.py (not served here)
- tests/test_pi_prompt_hook.py (not served here)
- tests/test_pi_query_extraction.py (not served here)
- tests/test_postgres_migration_config.py (not served here)
- tests/test_recall_file_backfill.py (not served here)
- tests/test_scheduling_windows.py (not served here)
- tests/test_segment_vector_search.py (not served here)
- tests/test_sqlite_scope_roundtrip.py (not served here)
- tests/test_sqlite_segment_cache.py (not served here)
- tests/test_task_naming.py (not served here)
- tests/test_trust.py (not served here)
- tests/test_vector.py (not served here)
- uv.lock (not served here)
Advantages
- Automatically distills reusable skills from agent history without manual intervention. evidence: README.md
- Supports multiple storage backends including SQLite and Postgres for different deployment needs. evidence: README.md
Limitations
- Some agents require specific modes (e.g., Work mode) and do not support memory features in standard chat modes. evidence: README.md
- Certain models may decline setup steps, requiring a retry with a different model like Opus. evidence: README.md
Security
Risk level: Medium risk
This brain runs
Git hooks (2)
.pre-commit-config.yaml:pre-commit hooks from https://github.com/pre-commit/pre-commit-hooks at v6.0.0 (contributor tooling: runs only after pre-commit install)· uses the network.pre-commit-config.yaml:pre-commit hooks from https://github.com/astral-sh/ruff-pre-commit at v0.14.3 (contributor tooling: runs only after pre-commit install)· uses the network
Agent instructions that run or fetch something (14)
AGENTS.md:Setup: `make install`AGENTS.md:Run all tests: `make test`AGENTS.md:Run focused tests: `uv run python -m pytest tests/<target_test>.py`AGENTS.md:Full quality checks: `make check`SKILL.md:Each supported host has its own adapter binary carrying its own install guide.SKILL.md:Your job here is three steps: install the package, pick your binary, print and follow its guide.SKILL.md:it installs helper interfaces only and is harmless to run on a personal machine.SKILL.md:If you meet that error at any point, you are on a stale build: upgrade, then re-run the command that failed.SKILL.md:With uv this means `uv tool install --upgrade memu-cli`, **not** `uv pip install`: however it is installed, `memu-cli` is a cross-session bridging tool and must be callable everywhere, not scoped to one project venv.SKILL.md:Run:SKILL.md:If the user does not mention an API key, or would rather keep memory on this device, run bare `<your-binary> init` and Step 3's guide will set up local memory.SKILL.md:<your-binary> docs installSKILL.md:**Install in one pass;SKILL.md:Otherwise, after installation, run:
Install scripts (4)
Makefile(make install):echo "🚀 Creating virtual environment using uv"; uv sync; uv run pre-commit installsrc/memu/hosts/claude_code/install.py:python src/memu/hosts/claude_code/install.pysrc/memu/hosts/codex/install.py:python src/memu/hosts/codex/install.pysrc/memu/hosts/pi/install.py:python src/memu/hosts/pi/install.py
- Medium risk: runs-git-hook-remote-exec (.pre-commit-config.yaml:2)
- Medium risk: runs-git-hook-remote-exec (.pre-commit-config.yaml:15)
- Low risk: network-instructions (SKILL.md:33)
- Low risk: scripts-present (src/memu/hosts/claude_code/install.py)
- Low risk: scripts-present (src/memu/hosts/codex/install.py)
- Low risk: scripts-present (src/memu/hosts/pi/install.py)
Attribution and licence
- First committed by
evan-ak
- Declared authors
- MemU Team (declared in pyproject.toml)
- Publisher
- NevaMind AI (Community)
- Source
- NevaMind-AI/memU · commit fd86e38
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- sairin1202, xnne-bot, evan-ak, nevamind-agent, wutongyuonce
AutoGineer is not affiliated with or endorsed by evan-ak or NevaMind AI.
Install from source
329 of its files are not served here, so there is no ZIP. NevaMind-AI/memU at fd86e38