Skip to main content

MemVault

A file-first memory engine. Everything you learn, say, or are told enters through one inbox, gets classified and filed into a vault of plain Markdown, and becomes retrievable by meaning instead of by recency.

Every memory is a file. Every automated change is a git diff you can read and revert.

How it works

SOURCES            INBOX           ENGINE                    VAULT
glasses ────┐                  ┌─ normalize                transcripts/
claude.ai ──┼──▶ inbox/ ──────▶├─ classify (LLM)   ──────▶ memory/
manual ─────┘    (git)         ├─ route                    repos/<name>/
                               ├─ distill                  index/vault.db
                               └─ index

Drop any text into inbox/ and commit — from a laptop, or from a phone with an iOS git client. The ingestion pass classifies it, files it into the vault with provenance, updates the search index, and commits. The inbox drains to empty; a non-empty inbox means work is pending.

A weekly pass reads what arrived, curates it into durable memory, and writes a digest. A /recall skill answers questions against the whole vault so sessions fetch depth on demand rather than loading memory in bulk at startup.

Engine and vault are separate

MemVault is the engine — code, no content. A vault is a separate git repo holding your Markdown. The engine reads a config naming your vault's paths and routes, so one install serves several vaults (for example, a personal one and a work one) with no code changes.

Install

uv tool install "memvault-cli[semantic]"    # recommended
uv tool install memvault-cli                # light: keyword search only

The semantic extra pulls fastembed and downloads a ~130MB multilingual model on first index. Without it everything still works and every file is still indexed — recall runs the keyword half alone and says so in its own output, so half a search never reads like a whole one. Adding the extra later is memvault index again.

Working on the engine itself instead? uv sync and prefix the commands below with uv run.

Commands

memvault init ~/my-vault   # scaffold a vault (or adopt notes you already keep) + config
memvault doctor            # vault health; exits non-zero on problems
memvault ingest            # drain the inbox into the vault, then commit
memvault index             # build or update the search index
memvault recall "query"    # hybrid keyword + semantic search
memvault reflect           # weekly curation pass over recent material
memvault mcp ~/my-vault    # serve the vault over MCP (Codex, opencode, Cursor, …)

memvault init prints the exact wiring line for each harness once your vault exists.

Ingest can also run itself a few quiet minutes after you stop working, instead of on a clock. A SessionStart hook runs memvault ingest --session-start <id> and a SessionEnd hook runs memvault ingest --enqueue; a plain memvault ingest from a scheduled job stays the safety net and services whatever the queue is still asking for. See debounce: in the example config.

--vault <name> picks a configured vault. Start with SETUP.md.

Status

Implemented and verified end to end, and in daily use. ruff and mypy --strict clean.

Verified against a real vault rather than only in tests — a dropped note was classified, filed with provenance, and committed with the inbox drained; a work-flavored drop produced a distilled note in the second vault with no verbatim sentence crossing; re-running produced no duplicate.

License

MIT — see LICENSE.

Metadata

Release files for memvault-cli 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for memvault-cli 0.1.0
File Size Uploaded
memvault_cli-0.1.0.tar.gz 432.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for memvault-cli 0.1.0
File Interpreter ABI Platform
memvault_cli-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 612.4 kB

Release files / memvault_cli-0.1.0.tar.gz

Download URL memvault_cli-0.1.0.tar.gz
Size 432.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2bc709b8d2bb74ccd51a0935d530743102728a74244303641b60996c78398632
BLAKE2b-256 checksum
How to use checksums
fae7568346ac9ac14685de8fcefeed32c450f1212d0896fec115052b3bf220c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / memvault_cli-0.1.0-py3-none-any.whl

Download URL memvault_cli-0.1.0-py3-none-any.whl
Size 180.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6b2ad3a26cb7985664fd13b662693992ccd20cbbaf6143df57a0ced1fb566bb2
BLAKE2b-256 checksum
How to use checksums
553b236ac1d7d843ed9bff2b1e7d3c8a7429033bcb847c5d697fbfce73f72bc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page