bim
BUVIS InfoMesh — full-featured Zettelkasten manager with query engine, templates, Jira sync, and a web dashboard.
Extra: uv tool install buvis-gems[bim]
Configuration
Setting |
Default |
Description |
|---|---|---|
|
|
Root directory for zettels |
|
|
Archive directory |
Env vars: BUVIS_BIM_PATH_ZETTELKASTEN, BUVIS_BIM_PATH_ARCHIVE.
Commands
bim create
Create a new zettel from a template.
# interactive (prompts for template type, title, tags)
bim create
# specify type and title directly
bim create -t project --title "Redesign homepage" --tags "web,design"
# list available templates
bim create -l
# pre-fill template answers
bim create -t meeting -a "attendees=Alice,Bob" -a "date=2025-01-15"
Options:
-t, --type TEXT— template type (note, project, etc.)--title TEXT— zettel title--tags TEXT— comma-separated tags-a, --answer TEXT— template answer askey=value(repeatable)-l, --list— list available templates
bim query
Query zettels with a YAML filter/sort/output spec.
# inline query: first 5 zettels
bim query -q '{output: {limit: 5}}'
# filter by type, pick columns
bim query -q '{
columns: [{field: title}, {field: tags}],
filter: {field: type, op: eq, value: project},
output: {format: table}
}'
# load saved query from file
bim query -f my-query
# list saved queries
bim query -l
# pick result with fzf, open in nvim
bim query -q '{filter: {field: type, op: eq, value: note}}' -e
# interactive TUI
bim query -q '{output: {limit: 20}}' --tui
Options:
-f, --file TEXT— query name or path to YAML spec-q, --query TEXT— inline YAML query string-e, --edit— pick result with fzf and open in nvim--tui— render output in interactive TUI-l, --list— list available queries
Output formats: table, csv, markdown, json, jsonl, html, pdf, kanban.
See bim-query-examples.md for a comprehensive reference with filter operators, calculated columns, lookups, and more.
bim import
Import a markdown file into the zettelkasten.
bim import ~/Downloads/meeting-notes.md
bim import ~/Downloads/draft.md --tags "imported,review" --force --remove-original
Options:
--tags TEXT— comma-separated tags--force— overwrite if target exists--remove-original— delete source file after import
When importing interactively (no flags), if the note has no tags and
ollama_model is configured globally (see Configuration), bim
suggests tags via ollama. Each suggested tag is presented for confirmation.
If ollama is unreachable, tag suggestion is skipped with a warning.
bim edit
Modify zettel metadata in-place.
bim edit ~/bim/zettelkasten/my-note.md --title "Better title"
bim edit ~/bim/zettelkasten/my-note.md --tags "updated,important"
bim edit ~/bim/zettelkasten/my-note.md --processed
bim edit ~/bim/zettelkasten/my-note.md -s "priority=high" -s "reviewer=alice"
Options:
--title TEXT— new title--tags TEXT— comma-separated tags--type TEXT— note type--processed / --no-processed— processed flag--publish / --no-publish— publish flag-s, --set TEXT— arbitrarykey=valuemetadata (repeatable)
bim format
Format a note’s metadata and content.
bim format ~/bim/zettelkasten/my-note.md
bim format ~/bim/zettelkasten/my-note.md -d # show diff
bim format ~/bim/zettelkasten/my-note.md -h # highlight output
bim format ~/bim/zettelkasten/my-note.md -o formatted.md
Options:
-h, --highlight— highlight formatted content-d, --diff— show side-by-side diff if content changed-o, --output FILE— write to file instead of in-place
bim show
Pretty-print a zettel.
bim show ~/bim/zettelkasten/my-note.md
bim archive
Mark zettel(s) as processed and move to archive directory.
bim archive ~/bim/zettelkasten/done-note.md
bim archive ~/bim/zettelkasten/a.md ~/bim/zettelkasten/b.md
bim archive --undo ~/bim/reference/40-archives/done-note.md
Options:
--undo— unarchive (move back to zettelkasten)
bim delete
Permanently delete zettel(s).
bim delete ~/bim/zettelkasten/obsolete.md
bim delete --force ~/bim/zettelkasten/a.md ~/bim/zettelkasten/b.md
Options:
--force— skip confirmation prompt
bim sync
Synchronize a note with an external system (currently Jira).
bim sync ~/bim/zettelkasten/project-note.md jira
Arguments: PATH_TO_NOTE, TARGET_SYSTEM.
bim serve
Start the web dashboard (SvelteKit frontend).
bim serve
bim serve -p 3000 -H 0.0.0.0
bim serve --no-browser
Options:
-p, --port INTEGER— port (default: 8000)-H, --host TEXT— host (default: 127.0.0.1)--no-browser— don’t auto-open browser