Build and maintain Obsidian knowledge bases with LLM assistance
Project description
forge-me-notes
fmn is a command-line tool for building and maintaining structured Obsidian vaults with LLM assistance.
Use it for anything you want to develop as structured, connected knowledge: business planning, research, civic data projects, hobby projects, home renovation. You describe what you want in plain English — fmn handles the context, the LLM call, and the note writing.
The LLM doesn't write the knowledge. It writes the YAML. The knowledge comes from you.
Works with any consistently structured Obsidian vault. The OpenMash vault is one example — a civic open data toolkit built with fmn.
How it works
Your vault → fmn pack → context snapshot
context snapshot + your request → fmn generate → input/notes.yaml
review input/notes.yaml → fmn write → new notes in your vault
Or all at once:
fmn run "Add 3 use cases for air quality monitoring" --provider anthropic
The LLM never writes directly to your vault. fmn generate produces an intermediate input/notes.yaml that you review before fmn write touches anything.
Who is this for?
- Anyone who maintains a structured Obsidian vault and wants LLM help expanding it
- Civic technologists and researchers building open data knowledge bases
- NGOs and community groups mapping datasets, user groups, or use cases
- Developers who want a scriptable vault generation pipeline
You do not need to be a programmer. If you can run a terminal command, you can use fmn.
Installation
pipx install forge-me-notes
No
pipx? Runpip install pipx && pipx ensurepathfirst, or see pipx.pypa.io. Alternatively:pip install forge-me-notes
Set your vault path:
export VAULT_PATH=/path/to/your/vault
# or pass it per command:
fmn --vault /path/to/your/vault pack
Quick start
fmn pack # snapshot your vault
fmn generate "Add 3 notes about Nordic city cycling policy" # LLM → input/notes.yaml
fmn write # review passed → write notes
# Or all at once:
fmn run "Add 3 notes about Nordic city cycling policy" --provider anthropic
# Check vault health:
fmn audit
Commands
| Command | What it does |
|---|---|
fmn pack |
Scans your vault → exports context snapshot to context/ |
fmn write |
Reads input/notes.yaml → writes notes into the vault |
fmn generate "request" |
Context + request → LLM → produces input/notes.yaml |
fmn run "request" |
Pack + generate + confirm + write in one step |
fmn audit |
Checks vault health: broken links, orphans, missing properties |
LLM providers
No API key? Use --provider manual — fmn prints the full prompt and you paste it into any chat interface yourself.
| Provider | Flag | Requires |
|---|---|---|
| Anthropic (Claude) | --provider anthropic |
ANTHROPIC_API_KEY |
| OpenAI (GPT-4o) | --provider openai |
OPENAI_API_KEY |
| Ollama (local) | --provider ollama |
Ollama running locally — free |
| Manual (any chat UI) | --provider manual |
Nothing |
Command reference
fmn pack
fmn pack # snapshot index + metadata
fmn pack --notes # also include full note bodies
fmn generate "request"
fmn generate "Add a user group note for Roma communities" --provider ollama --model mistral
fmn generate "Add 3 inspiration notes about Nordic cities" --provider manual
fmn write
fmn write # write notes from input/notes.yaml
fmn write --force # overwrite existing notes
fmn run "request"
fmn run "Update all use cases to reference my new Vienna datasets" --force
fmn audit
fmn audit # summary (capped at 5 per category)
fmn audit --verbose # show all issues
fmn audit --fix # auto-repair broken links with near-matches
fmn audit --report # save report as a timestamped vault note
fmn audit --trend # show audit history from .fmn/history.yaml
Project structure
forge-me-notes/
├── fmn/
│ ├── cli.py # entry point
│ ├── pack.py # vault scanner
│ ├── generate.py # LLM interface
│ ├── write.py # note writer
│ ├── audit.py # vault health checker
│ └── run.py # orchestrator
├── input/notes.yaml # generated note specs — review before fmn write
├── context/all.md # vault context snapshot
├── prompts/system_prompt.md
└── tests/
Example vault: OpenMash
OpenMash is a civic open data toolkit built with fmn — a structured Obsidian vault for mapping datasets, user groups, barriers, and use cases for any city. It ships with a Karlsruhe example and a full workshop facilitation kit.
git clone https://codeberg.org/DenvaDude/openmash
cd openmash/openmash-vault
export VAULT_PATH=$(pwd)
fmn audit
fmn run "Add 3 use cases for cycling infrastructure" --provider anthropic
Contributing
See CONTRIBUTING.md. See DECISIONS.md for the reasoning behind key design choices.
Changelog
See CHANGELOG.md.
License
MIT © 2026 OpenMash contributors
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file forge_me_notes-0.1.1.tar.gz.
File metadata
- Download URL: forge_me_notes-0.1.1.tar.gz
- Upload date:
- Size: 32.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c85771752e8866c7c63a572839a70f1f4d0c1a3cf0e1b687d9739388b68bf0c
|
|
| MD5 |
12a9be8630608c357b046d6e00ad09a9
|
|
| BLAKE2b-256 |
d7c2cb9308eed4da1b646f3b13eba5f29b307526feb8fe6384d6b5e617084069
|
File details
Details for the file forge_me_notes-0.1.1-py3-none-any.whl.
File metadata
- Download URL: forge_me_notes-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3630625f7a3e631fcb7c8bce21118f0c6ec5aba868cc22dc08689e6a5cebd8a
|
|
| MD5 |
2535a8ef02e85b43f3375ef8090f113f
|
|
| BLAKE2b-256 |
0d8111c42360e01ebb934e399c82d4474a372c830b7f3597709a4c1ddb637cfc
|