{"slug": "operating-memory-turn-a-folder-of-markdown-notes-into-a-queryable-local-store", "title": "Operating Memory – turn a folder of Markdown notes into a queryable local store", "summary": "Operating Memory, a new open-source tool by Francis Marzynski, converts a folder of Markdown notes into a local, queryable SQLite store without moving notes into a proprietary database. The tool imports entities, decisions, and journal entries from Markdown files, preserving source-of-truth status and enabling idempotent re-imports. It is designed as a small local memory layer for projects, teams, or agents, not a note-taking app or AI agent framework.", "body_md": "Operating Memory turns a folder of ordinary Markdown notes into a local, queryable memory store—without moving the notes into a proprietary database.\n\nUse it when a project, team, or agent needs to answer questions such as:\n\n- What projects or reference records do we have?\n- What decisions were made about this project, and when?\n\nYour Markdown remains the source of truth. Operating Memory imports it into a local SQLite file so a CLI or another application can retrieve structured answers quickly. Re-import whenever notes change; the same source records keep the same identities, so imports are idempotent.\n\nIt is deliberately not a note-taking app, a hosted knowledge base, or an AI agent framework. It is the small local memory layer those tools can build on.\n\nThe source records are ordinary Markdown files:\n\n- **Entities** describe durable things, such as a project or reference.\n- **Decisions** are append-only dated lines associated with an entity. The\nline format is declared in configuration, so your own decision-log\nconvention works without changing code.\n- **Journal entries** are dated Markdown files for temporal records.\n\nThe database is derived data, never a replacement for those notes. Record identities are deterministic: they use kind and source-relative location, with decision date and body included where needed.\n\nThis repository is a deliberately small, generalised public extraction of a\nlarger private operating-memory system. The private system is demonstrated live\nrather than shared; its architecture is described in\n[the private-system architecture guide](/FrancisMarzynski/operating-memory-public/blob/main/docs/private-system-architecture.md)\nwithout exposing its data, configuration, or integrations.\n\nThe repository includes a small invented note corpus. From a fresh clone, run these commands verbatim:\n\n```\nuv sync --group dev\nom_example_dir=\"$(mktemp -d)\"\nuv run om --config operating-memory.example.toml --database \"$om_example_dir/memory.sqlite\" config validate\nuv run om --config operating-memory.example.toml --database \"$om_example_dir/memory.sqlite\" import --dry-run\nuv run om --config operating-memory.example.toml --database \"$om_example_dir/memory.sqlite\" import --apply\nuv run om --config operating-memory.example.toml --database \"$om_example_dir/memory.sqlite\" kinds\nuv run om --config operating-memory.example.toml --database \"$om_example_dir/memory.sqlite\" entity get project projects/orbit.md\nuv run om --config operating-memory.example.toml --database \"$om_example_dir/memory.sqlite\" decisions project projects/orbit.md\n```\n\nThe final commands return structured records from the Markdown corpus:\n\n``` bash\n$ om --config operating-memory.example.toml --database /tmp/memory.sqlite kinds\nproject\nreference\n\n$ om --config operating-memory.example.toml --database /tmp/memory.sqlite entity get project projects/orbit.md\n{\"body\":\"# Orbit\\\\n\\\\nAn invented project note used to demonstrate a nested, generic import.\\\\n\",\"key\":\"projects/orbit.md\",\"kind\":\"project\",\"source_path\":\"projects/orbit.md\",\"title\":\"Orbit\"}\n\n$ om --config operating-memory.example.toml --database /tmp/memory.sqlite decisions project projects/orbit.md\n[{\"body\":\"Start with a local import.\",\"date\":\"2026-03-10\",\"source_path\":\"projects/orbit.decisions.log\"}]\n```\n\nIn other words: add or edit a Markdown project note, run `import --apply`, and\nyour tools can ask for that project or its decisions through the local database.\n\nCopy `operating-memory.example.toml` and make three choices: set `notes_root` to\nyour Markdown folder; declare the entity kinds you want to retrieve; and add an\n`[[entities]]` rule for each folder or glob that contains them. Decision logs\nand journals are optional import rules. The included configuration is the\nsmallest working example: it imports project notes from `projects/*.md` and\nreference notes from `references/*.md`, relative to `notes_root`.\n\nIf your decision logs do not use the default\n`{date} — {body}` form, declare your own, for example:\n\n```\n[entities.decisions]\npath_template = \"{note_stem}.decisions.log\"\nline_template = \"{date} | {body}\"\n```\n\nMalformed templates are rejected when the configuration loads, with an error\nnaming the field. [The local memory-core guide](/FrancisMarzynski/operating-memory-public/blob/main/docs/memory-core.md) documents the\nconfiguration format and command semantics.\n\n```\nuv run ruff check .\nuv run mypy src\nuv run pytest\nuv run python scripts/check_boundary.py\n```\n\nSee [coding standards](/FrancisMarzynski/operating-memory-public/blob/main/CODING_STANDARDS.md) before changing the core.", "url": "https://wpnews.pro/news/operating-memory-turn-a-folder-of-markdown-notes-into-a-queryable-local-store", "canonical_source": "https://github.com/FrancisMarzynski/operating-memory-public", "published_at": "2026-09-08 08:58:47+00:00", "updated_at": "2026-09-08 09:32:54.448808+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Operating Memory", "Francis Marzynski", "SQLite"], "alternates": {"html": "https://wpnews.pro/news/operating-memory-turn-a-folder-of-markdown-notes-into-a-queryable-local-store", "markdown": "https://wpnews.pro/news/operating-memory-turn-a-folder-of-markdown-notes-into-a-queryable-local-store.md", "text": "https://wpnews.pro/news/operating-memory-turn-a-folder-of-markdown-notes-into-a-queryable-local-store.txt", "jsonld": "https://wpnews.pro/news/operating-memory-turn-a-folder-of-markdown-notes-into-a-queryable-local-store.jsonld"}}