bkmr
Ultrafast Bookmark Manager and Launcher
New Feature: Semantic Search (AI Embeddings)
Elevating Bookmark Management with AI-Driven Semantic Search
Features:
- semantic search using OpenAI embeddings (requires OpenAI API key)
- full-text search with semantic ranking (FTS5)
- fuzzy search
--fzf(CTRL-O: copy to clipboard, CTRL-E: edit, CTRL-D: delete, Enter: open) - tags for classification
- knows how to open HTTP URLs, directories, files (e.g. Office, Images, ....)
- can execute URI strings as shell commands via protocol prefix: 'shell::'
URI-Example:
shell::vim +/"## SqlAlchemy" $HOME/document.md - automatically enriches URLs with title and description from Web
- manages statistics about bookmark usage
bkmr search --fzfis a great way to quickly find and open bookmarks.
To fully use bkmr's full-text query power see: https://www.sqlite.org/fts5.html (chapter 3).
Usage
)
)
Examples
# FTS examples (https://www.sqlite.org/fts5.htm)
# FTS combined with tag filtering
# Match exact taglist
# Search by any tag and sort by bookmark age ascending
# Give me the 10 oldest bookmarks
# Adding URI to local files
# Adding shell commands as URI
# Bulk updating bookmarks: all bms with tag 'sa' also get tag 'py'
# Bulk updating bookmarks: all bms with tag 'gh' should have 'git' removed
# JSON dump of entire database
# Semantic Search based on OpenAI Embeddings
Tags must be separated by comma without blanks.
Upgrade to 1.x.x
- requires database migration: adds two columns to the bookmarks table for the OpenAI embeddings
Semantic Search
- embeddings will increase DB size significantly (embeddings size: 1536 dimensions)
- to use semantic search API key is required:
export OPENAI_API_KEY=<your-key> - requires the
--openaiflag! - best results when adding context to the URLs via COMMENTS:

Installation
cargo install bkmr- initialize the database:
bkmr create-db db_path export "BKMR_DB_URL=db-path", location of created sqlite database must be known- add URLs
FZF Customization
You can set (not required) this variable to change --fzf mode default options:
Currently available flags:
--reverse(defaults to false): show input line on top and reverse alphabetical order--height(defaults to 50%): screen usage of current terminal--show-tags(defaults to false): show tags
Benchmarking
- ca. 20x faster than the Python original twbm after warming up Python.