| title | Basic Memory v0.19.0: Search That Understands What You Mean |
|---|---|
| description | Semantic search, schema validation, per-project cloud routing, and more — the biggest Basic Memory release yet. |
We just shipped v0.19.0 — the biggest release since we launched. Sixty-six commits, three months of work, and a fundamental change in how your AI finds what it knows.
Here's what matters.
Until now, Basic Memory searched your notes the way grep does: match the words, return the results. It works. It's fast. And it completely fails when you search for "login security improvements" but your notes say "authentication hardening."
v0.19.0 adds semantic search — hybrid by default, combining keyword matching with meaning-based retrieval. It ships enabled out of the box. No configuration. No separate embedding service. No API keys. Install, and it works.
search_notes("how do I speed up the app")
That query now finds your note about "performance optimization strategies" even though you never used the word "speed." The embedding model runs locally, your data never leaves your machine, and the results are ranked by a fusion of exact matches and semantic similarity.
Three modes if you want control:
- hybrid (default) — best of both worlds
- text — keyword-only, like before
- vector — pure semantic similarity
For most people: just search normally. It got smarter.
Knowledge bases grow organically. You write thirty person notes and realize half say [name], a quarter say [full_name], and a few just put the name in the title. Relation types drift — works_at, employed_by, employer — all meaning the same thing.
The new schema system lets you define what "consistent" means, then validate against it. But here's the key design decision: schemas are just notes.
---
title: Person
type: schema
entity: person
schema:
name: string, full name
role?: string, job title
works_at?: Organization, employer
---That's a regular markdown file in your knowledge base. Your AI reads it, uses it as a guide when creating new notes, and can validate existing notes against it. You can edit it in any text editor.
The workflow is conversational. Ask your AI to analyze your existing notes and infer a schema. It finds the patterns, proposes a definition, and you approve it. Then it checks the outliers and offers to fix them. No migration scripts. No database alterations. Just a conversation about what "good" looks like for your notes.
We built schema_infer, schema_validate, and schema_diff as MCP tools — so any AI that connects to Basic Memory can use them. Infer from what exists. Validate against the definition. Detect drift over time.
This one's for people running both local and cloud projects. You can now route individual projects through Basic Memory Cloud while keeping others purely local.
bm project set-cloud research # this project syncs to cloud
bm project set-local private-notes # this one stays on your machineThe routing is transparent to your AI — it uses the same tools regardless of where the data lives. You decide what's sensitive and what's portable.
Three levels of control: global default, per-project override, per-command flag. Mix and match however makes sense for your setup.
Write protection. write_note no longer silently overwrites existing notes. If a note exists, you get an error instead of data loss. Pass overwrite=True when you mean it. This one change will save someone's knowledge base — AI assistants are enthusiastic writers.
Metadata search. Filter notes by any frontmatter field — status, priority, tags, custom fields. No more searching for "status: in-progress" as a text string and hoping it matches.
search_notes(metadata_filters={"status": "active", "priority": {"$in": ["high", "critical"]}})
Project dashboard. bm project info now shows an htop-inspired dashboard with bar charts for note types, embedding coverage, and health status. It's the fastest way to see what's in your knowledge base.
JSON everywhere. Every MCP tool supports output_format="json" for scripting and automation. Five more CLI commands got --json flags. If you're building on top of Basic Memory, this makes your life easier.
uv tool upgrade basic-memory
bm reindex --embeddingsThe reindex generates vector embeddings for semantic search — a one-time operation. Cloud projects handle this automatically.
Everything else is backward compatible. Existing notes, permalinks, and workflows keep working. New defaults are saner, and the old behavior is one config flag away if you need it.
Basic Memory is local-first AI knowledge infrastructure. Plain text files, semantic knowledge graph, works with Claude, Codex, Cursor, and anything that speaks MCP. Get started →