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

path_zettelkasten

~/bim/zettelkasten/

Root directory for zettels

path_archive

~/bim/reference/40-archives/

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 as key=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 — arbitrary key=value metadata (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