#bookmarks #launcher #snippets #terminal #directory

bin+lib bkmr

A Unified CLI Tool for Bookmark, Snippet, and Knowledge Management

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

Download history 13/week @ 2025-02-03 1/week @ 2025-02-10 1/week @ 2025-02-24 11/week @ 2025-03-03 353/week @ 2025-03-10 49/week @ 2025-03-17 4/week @ 2025-03-24 314/week @ 2025-04-07

409 downloads per month

BSD-3-Clause

470KB
10K SLoC

bkmr

Crates.io Crates.io Docs.rs Build Status

Beyond Bookmarks: A CLI Knowledge Management System

bkmr reborn

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

bookmarks

Snippets

fzf-snippets

Demos

See bkmr in action:

Getting Started

  1. Install:

    cargo install bkmr
    
    # or via pip/pipx/uv
    pip install bkmr
    
    # or via brew
    brew tap sysid/bkmr
    brew info bkmr
    
    
  2. 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
    
  3. 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:

Developer Workflow Integration

bkmr transforms your terminal into a knowledge hub for development tasks:

  1. Unified knowledge store - Access code snippets, documentation, and resources with one command
  2. Reduced context switching - Launch applications and execute commands without leaving your workflow
  3. Smart clipboard management - Quickly access common snippets without leaving the terminal
  4. Documentation at your fingertips - Render markdown and technical notes instantly
  5. Automation shortcuts - Turn complex command sequences into reusable bookmarks

Upgrading from Previous Versions

If you're upgrading from a previous version, bkmr will automatically:

  1. Check for necessary database migrations
  2. Create a timestamped backup of your current database
  3. 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