Skip to main content

Build and maintain Obsidian knowledge bases with LLM assistance

Project description

forge-me-notes

🇩🇪 Deutsche Version

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? Run pip install pipx && pipx ensurepath first, 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

forge_me_notes-0.1.0.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

forge_me_notes-0.1.0-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file forge_me_notes-0.1.0.tar.gz.

File metadata

  • Download URL: forge_me_notes-0.1.0.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

Hashes for forge_me_notes-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fd90ec906eb7fb94557d6fe48747dbcfc06cd3e2cba803e443cf2d8d04251450
MD5 92715126d161ee4aada08cba18ae9692
BLAKE2b-256 d7fb09edd4d92232df481d90e1fc6459f0c9d40117c5f78f72a2f1cd098d5814

See more details on using hashes here.

File details

Details for the file forge_me_notes-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: forge_me_notes-0.1.0-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

Hashes for forge_me_notes-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e20da7cbf521a9d08c663aa1b585fec7b9e0c5e93f53934f84ded8b43e005d9
MD5 27e24261548ed20b590c87014d32dd01
BLAKE2b-256 8fc8e4575d8e63347db839724a786afb0037a6523fd01e85ded3b49555c20b11

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page