|
| 1 | +--- |
| 2 | +title: "Basic Memory v0.19.0: Search That Understands What You Mean" |
| 3 | +description: "Semantic search, schema validation, per-project cloud routing, and more — the biggest Basic Memory release yet." |
| 4 | +--- |
| 5 | + |
| 6 | +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. |
| 7 | + |
| 8 | +Here's what matters. |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## Semantic Search, Everywhere |
| 13 | + |
| 14 | +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." |
| 15 | + |
| 16 | +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. |
| 17 | + |
| 18 | +``` |
| 19 | +search_notes("how do I speed up the app") |
| 20 | +``` |
| 21 | + |
| 22 | +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. |
| 23 | + |
| 24 | +Three modes if you want control: |
| 25 | +- **hybrid** (default) — best of both worlds |
| 26 | +- **text** — keyword-only, like before |
| 27 | +- **vector** — pure semantic similarity |
| 28 | + |
| 29 | +For most people: just search normally. It got smarter. |
| 30 | + |
| 31 | +## Schemas: Your AI Checks Its Own Work |
| 32 | + |
| 33 | +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. |
| 34 | + |
| 35 | +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.** |
| 36 | + |
| 37 | +```yaml |
| 38 | +--- |
| 39 | +title: Person |
| 40 | +type: schema |
| 41 | +entity: person |
| 42 | +schema: |
| 43 | + name: string, full name |
| 44 | + role?: string, job title |
| 45 | + works_at?: Organization, employer |
| 46 | +--- |
| 47 | +``` |
| 48 | + |
| 49 | +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. |
| 50 | + |
| 51 | +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. |
| 52 | + |
| 53 | +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. |
| 54 | + |
| 55 | +## Per-Project Cloud Routing |
| 56 | + |
| 57 | +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. |
| 58 | + |
| 59 | +```bash |
| 60 | +bm project set-cloud research # this project syncs to cloud |
| 61 | +bm project set-local private-notes # this one stays on your machine |
| 62 | +``` |
| 63 | + |
| 64 | +The 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. |
| 65 | + |
| 66 | +Three levels of control: global default, per-project override, per-command flag. Mix and match however makes sense for your setup. |
| 67 | + |
| 68 | +## The Small Things That Matter |
| 69 | + |
| 70 | +**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. |
| 71 | + |
| 72 | +**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. |
| 73 | + |
| 74 | +``` |
| 75 | +search_notes(metadata_filters={"status": "active", "priority": {"$in": ["high", "critical"]}}) |
| 76 | +``` |
| 77 | + |
| 78 | +**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. |
| 79 | + |
| 80 | +**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. |
| 81 | + |
| 82 | +--- |
| 83 | + |
| 84 | +## The Upgrade |
| 85 | + |
| 86 | +```bash |
| 87 | +uv tool upgrade basic-memory |
| 88 | +bm reindex --embeddings |
| 89 | +``` |
| 90 | + |
| 91 | +The reindex generates vector embeddings for semantic search — a one-time operation. Cloud projects handle this automatically. |
| 92 | + |
| 93 | +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. |
| 94 | + |
| 95 | +[Full release notes →](/whats-new/v0.19.0) |
| 96 | + |
| 97 | +--- |
| 98 | + |
| 99 | +*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 →](https://basicmemory.com)* |
0 commit comments