30 releases (13 stable)
new 4.18.0 | Apr 14, 2025 |
---|---|
3.2.0 | Mar 14, 2025 |
2.0.1 | Aug 31, 2024 |
2.0.0 | Mar 17, 2024 |
0.3.1 | Mar 5, 2023 |
#166 in Command line utilities
409 downloads per month
470KB
10K
SLoC
bkmr
Beyond Bookmarks: A CLI Knowledge Management System
bkmr
is a fast, feature-rich command-line tool that extends far beyond traditional bookmark management.
Store, organize, find, and interact with various content types:
- Web URLs with automatic metadata extraction
- Code snippets for quick access and reuse
- Shell commands with execution capabilities
- Markdown documents with live rendering
- Plain text with template interpolation
- Local files and directories
- Semantic embeddings for AI-powered search
Why bkmr?
- Developer-focused: Integrates seamlessly with your workflow and toolchain
- Multifunctional: Handles many content types with context-aware actions
- Intelligent: Full-text and semantic search capabilities
- Privacy-focused: Local database, no cloud dependencies unless enabled
- Fast: 20x faster than similar Python tools
Core Features
# Quick fuzzy search across your content with interactive selection
bkmr search --fzf
# Advanced filtering with tags
bkmr search -t python,security "authentication"
# Add web URLs, enrich with metadata automatically
bkmr add https://example.com tag1,tag2 # title, description, etc will be loaded automatically
# Store code snippets
bkmr add "SELECT * FROM users WHERE role = 'admin'" sql,snippet --type snip --title "My Sql"
bkmr search --fzf --fzf-style enhanced -t _snip_ # show interactive selection menu
# shell scripts, added via interactive editor
bkmr add sysadmin,utils --type shell
# Bookmark Template
# Lines starting with '#' are comments and will be ignored.
# Section markers (---SECTION_NAME---) are required and must not be removed.
---ID---
---URL---
#!/bin/bash
echo "Hello World!"
---TITLE---
System Status
---TAGS---
_shell_
---COMMENTS---
Show the system status
---EMBEDDABLE---
false
---END---
# Run the script (default action for this content-type is called automatically when search returns excactly one)
bkmr search -t _shell_ "System Status"
> Found 1 bookmark: System Status (ID: 22). Executing default action...
> Hello World!
# Store markdown which will be rendered in the browser
bkmr add "# Project Notes\n\n## Tasks\n- [ ] Complete documentation\n- [ ] Write tests" notes,project --type md --title Markdown
bkmr open <id> # open it in WEB browser
# Store environment variables for sourcing in a shell
bkmr add "export DB_USER=dev\nexport DB_PASSWORD=secret\nexport API_KEY=test_key" dev,env --type env --title 'My Environment'
bkmr search --fzf --fzf-style enhanced -t _env_ # select it for sourcing
# Execute shell commands via bookmark (deprecated, use content-type _shell_ instead)
bkmr add "shell::find ~/projects -name '*.go' | xargs grep 'func main'" tools,search --title 'Search Golang'
# Semantic search with AI
bkmr --openai sem-search "containerized application security" --limit 3
Bookmarks

Snippets

Demos
See bkmr in action:
Getting Started
-
Install:
cargo install bkmr # or via pip/pipx/uv pip install bkmr # or via brew brew tap sysid/bkmr brew info bkmr
-
Setup:
# Configuration bkmr --generate-config > ~/.config/bkmr/config.toml # Create database bkmr create-db ~/.config/bkmr/bkmr.db # Optional: Configure location (override config.toml) export BKMR_DB_URL=~/path/to/db
-
Start using:
# Add your first bookmark bkmr add https://github.com/yourusername/yourrepo github,project # Find it again bkmr search github
Command Reference
Command | Description |
---|---|
search |
Search across all content with full-text and tag filtering |
sem-search |
AI-powered semantic search using OpenAI embeddings |
add |
Add new content (URLs, snippets, files, shell commands, etc.) |
open |
Launch or interact with stored items |
edit |
Modify existing items |
tags |
View and manage your tag taxonomy |
set-embeddable |
Configure items for semantic search |
Smart Content Actions
bkmr
intelligently handles different content types with appropriate actions:
Content Type | Default Action | System Tag |
---|---|---|
URLs | Open in browser | (none) |
Snippets | Copy to clipboard | _snip_ |
Shell Scripts | Execute in terminal | _shell_ |
Environment Variables | Print to stdout for sourcing in shell | _env_ |
Markdown | Render and view in browser | _md_ |
Text Documents | Copy to clipboard | _imported_ |
Local Files | Open with default application | (none) |
Advanced Features
- Template interpolation: Use Jinja-style templates in URLs and commands
- Content embedding: Store semantic representations for AI-powered search
- Context-aware actions: Different behaviors based on content type
- Multiple output formats: Terminal display, clipboard, or JSON export
For detailed documentation on advanced features:
- Configuration Options
- Content Types
- Smart Actions
- Template Interpolation
- Semantic Search
- Advanced Usage
Developer Workflow Integration
bkmr
transforms your terminal into a knowledge hub for development tasks:
- Unified knowledge store - Access code snippets, documentation, and resources with one command
- Reduced context switching - Launch applications and execute commands without leaving your workflow
- Smart clipboard management - Quickly access common snippets without leaving the terminal
- Documentation at your fingertips - Render markdown and technical notes instantly
- Automation shortcuts - Turn complex command sequences into reusable bookmarks
Upgrading from Previous Versions
If you're upgrading from a previous version, bkmr
will automatically:
- Check for necessary database migrations
- Create a timestamped backup of your current database
- Apply migrations to support newer features
Community and Contributions
We welcome contributions! Please check our Contributing Guidelines to get started.
Dependencies
~53–73MB
~1.5M SLoC