Skip to main content

Super fast bookmark manager with semantic full text search'

Project description

bkmr

Crates.io Crates.io Docs.rs Build Status

Combine any snippet (code, urls, markdown, text) with powerful search, interpolation and execution.

Beyond Bookmarks and Snippets: A CLI Knowledge Management System

bkmr reborn

bkmr - selected crate of the week 482 - is a fast, feature-rich command-line tool that extends bookmark management, snippet handling, markdown rendering, script execution and more.

Organize, find, and apply your various content types:

  • Web URLs with automatic metadata extraction
  • Code snippets for quick access and reuse
  • Shell commands with immediate execution capabilities
  • Markdown documents with live rendering, incl. TOC
  • Plain text with Jinja template interpolation
  • Local files and directories integration
  • Semantic embeddings for AI-powered search

Centralize your data in bkmr's database (add) or keep it in your filesystem (import-files) (see).

Example:

  • bookmarks, links short snippets go into the database
  • large markdown documents or scripts stay where they are and only references go into DB

Both options provide the full benefits of bkmr.

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

NEW: Editor Integrations!

  • Built-in LSP server: Use bkmr lsp for VS Code, Vim, Emacs - automatic snippet completion with language-aware filtering
  • Neovim Plugin: Visual interface with Telescope integration and zero configuration
  • IntelliJ Plugin: JetBrains Marketplace plugin for all IDEs

See Editor Integration for complete documentation.

Quick Examples

# Quick fuzzy search with interactive selection
bkmr search --fzf

# Add URL with automatic metadata extraction
bkmr add https://example.com tag1,tag2

# Store code snippet
bkmr add "SELECT * FROM users" sql,_snip_ --title "User Query"

# Shell script with interactive execution
bkmr add "#!/bin/bash\necho 'Hello'" utils,_shell_ --title "Greeting"

# Render markdown in browser with TOC
bkmr add "# Notes\n## Section 1" docs,_md_ --title "Project Notes"

# Import files with frontmatter
bkmr import-files ~/scripts/ --base-path SCRIPTS_HOME

# AI-powered semantic search
bkmr --openai sem-search "containerized application security"

Screenshots

Bookmarks: bookmarks

Snippets: fzf-snippets

Demos:

Getting Started

Installation

# Via cargo
cargo install bkmr

# Via pip/pipx/uv
pip install bkmr

# Via brew
brew install bkmr

See Installation Guide for detailed instructions and troubleshooting.

Initial Setup

# Generate configuration
bkmr --generate-config > ~/.config/bkmr/config.toml

# Create database
bkmr create-db ~/.config/bkmr/bkmr.db

# Optional: Configure location
export BKMR_DB_URL=~/path/to/db

First Use

# Add your first bookmark
bkmr add https://github.com/yourusername/yourrepo github,project

# Search and find
bkmr search github

# Interactive fuzzy search
bkmr search --fzf

Quick Start Guide: See the Quick Start for a 5-minute tutorial.

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 (supports script arguments)
edit Smart editing: auto-detects file-imported bookmarks
import-files Import files/directories with frontmatter parsing
tags View and manage your tag taxonomy
set-embeddable Configure items for semantic search

Complete command documentation: See Basic Usage for detailed examples.

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 Interactive edit then execute _shell_
Environment Variables Print for sourcing in shell _env_
Markdown Render in browser with TOC _md_
Text Documents Copy to clipboard _imported_
Local Files Open with default application (none)

Learn more: Content Types | Core Concepts

Documentation

Comprehensive documentation is available in the bkmr Wiki:

Getting Started

Core Features

Advanced Topics

Reference

Editor Integrations

Access your snippets directly within your editor without context switching.

Neovim Plugin (Recommended)

bkmr-nvim provides visual interface with zero configuration.

{
  "sysid/bkmr-nvim",
  dependencies = { "nvim-lua/plenary.nvim" },
  config = function()
    require("bkmr").setup() -- Zero config required!
  end,
}

Features: Visual snippet browser, in-editor editing, automatic LSP setup, custom commands

Built-in LSP Server

Compatible with VS Code, Vim, Emacs, Sublime, and any LSP-compatible editor.

# Start LSP server
bkmr lsp

# Disable template interpolation if needed
bkmr lsp --no-interpolation

Features: Automatic completion, language-aware filtering, universal snippets, template interpolation

IntelliJ Platform Plugin

bkmr-intellij-plugin for all JetBrains IDEs.

Features: Seamless LSP integration, Tab navigation, works in IntelliJ IDEA, PyCharm, WebStorm, CLion, RustRover, and all JetBrains IDEs

Complete documentation: Editor Integration

Platform Compatibility

Wayland Support: Native Wayland clipboard support for modern Linux desktops.

  • Supported compositors: Hyprland, Sway, and other compositors supporting wlr-data-control-unstable-v1
  • Automatic detection: Falls back to X11/XWayland if unavailable
  • Compatibility: Check your compositor at wayland.app

Development

Building from Source

git clone https://github.com/sysid/bkmr.git
cd bkmr
cargo build --release

Running Tests

IMPORTANT: All tests must be run single-threaded:

# Run tests (REQUIRED: single-threaded)
cargo test -- --test-threads=1

# Or use Makefile
make test

Why single-threaded? Tests share SQLite database and environment variables. Parallel execution causes race conditions.

See Development for complete contributor guide.

Community and Contributions

We welcome contributions! Please check our Contributing Guidelines to get started.

Resources:

For developers: Remember to always run tests with --test-threads=1 to avoid database conflicts.

Project details


Release history Release notifications | RSS feed

This version

6.3.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bkmr-6.3.3.tar.gz (396.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bkmr-6.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

bkmr-6.3.3-cp313-cp313-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bkmr-6.3.3-cp313-cp313-macosx_10_12_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

bkmr-6.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

bkmr-6.3.3-cp312-cp312-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bkmr-6.3.3-cp312-cp312-macosx_10_12_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

bkmr-6.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

bkmr-6.3.3-cp311-cp311-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bkmr-6.3.3-cp311-cp311-macosx_10_12_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

bkmr-6.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

bkmr-6.3.3-cp310-cp310-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bkmr-6.3.3-cp310-cp310-macosx_10_12_x86_64.whl (6.4 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file bkmr-6.3.3.tar.gz.

File metadata

  • Download URL: bkmr-6.3.3.tar.gz
  • Upload date:
  • Size: 396.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.2

File hashes

Hashes for bkmr-6.3.3.tar.gz
Algorithm Hash digest
SHA256 aef68b0461185dbd111535261691a79ff7bd0296801c80bc847d601bf5309189
MD5 6d34cb0da18e2bb9b747226f5ebeb70c
BLAKE2b-256 82a30af09488e08b6b1a720f97ea841e643f4d77e7ea0ba9a988f066ac640123

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 600be5239d0c48c00605f2d9ecf75fb571642fe88540c5e6e006cd8736d2bf57
MD5 4a1c8de92a443dca6aed83c02abc524d
BLAKE2b-256 c4243c7e37ec92b58c90a4345839a6ba5adb8013fda6955e34469b19bc291db8

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b23e1fa25fc1a8f7a2bb43c12f5e6f21151028866a3be57d2f2bdf846041e574
MD5 d118d40ac4f9eb8051eb56dfdc735571
BLAKE2b-256 cf8ae77e5aa4e10c1a5bb0516e24656b1ed8d4ace056f0f91b58be3f0ceae12d

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 18cb4100173a45dabb1e4f8e6186d829bd7983a141f1cd595cedb10ccf455225
MD5 29ae3b1c022d4ce136bb4bf6c9805ebf
BLAKE2b-256 9c5c4aff3d606a05cbb2f94547c1c0fd545b2b194c8065ea3edb970ef811bb99

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16a7d5c374af212de07ba03f1df844084af5a4546dcf7de85d47c814b0060cf7
MD5 f6b87d4ee69286ad38530aea5775e0d1
BLAKE2b-256 755f1500520637d76bbd66e8341d41940c9e4583ed154ada4859ca277f638b4b

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bebd9b67dbcafc40ef64193126d5b6a5e4a472be78045fe2c3121397ca6ffe4e
MD5 5512df8dc6ab0d316a3119e5afc99f27
BLAKE2b-256 e1d4110c18a6d1b5a9562b42ea3b247df00586d6dd3ba81d10fe69f4becc265b

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 68ea9b7e95508f9d54fa521c1b6b8a3fa8b6ed69f32dff551c811ac697671c60
MD5 f08564c7c74b91a2c9e05d51122fdbe9
BLAKE2b-256 851ef10f6c13a08e94143994d5281ca7d7d9425de9ebe43447af2f92c87ff1a8

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79669218056a0af9918d3e43b1a49865abb24f31e41d920bb92c995e8525f6af
MD5 1fe37a509c92df5cb247a83908eb5246
BLAKE2b-256 9bf7f1372edfe15e582feed42dd63fc49151bd11127ae4c97dd63a31f5712dd0

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d76ac0d8c61c9f90c52f33bfb31fa47e3e924cdfd945fef6d3076fd5492430a
MD5 555afbdd2c5be9dc09fde171d01a5760
BLAKE2b-256 5d5e932e68bfa294a8aca278e96640b2ddc773baa68e7b3a8f0cf1d56c3e6c2d

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 938ca1d02e711a60c9058da91aea5dc3c9eb8d489981a73b99486f543b27a63b
MD5 f52e8cb0d8e7ed25fce989713f292734
BLAKE2b-256 d8f71319a298517853752da4c3bd076186fe256b04008abc2e56973fb745a9c5

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 654e048c0219d3f042081102212478ce4323ff06f0167508e9821c38273ff724
MD5 41654d145ccde4f2d96cd5f749923894
BLAKE2b-256 7dc31ed81b99452e0ad474360f46d0f9baac4c217019e0999ecc381a670ea1a1

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec0e85b075d1aee8a6b1c44f1cd30d2c755fd019fbb07e1ea6eb29722ff82263
MD5 db840a3b0dde891e719c380249e70ec7
BLAKE2b-256 ca6dc89dff415bd30edaf61852ee43533654fa1f0ce024cce4905b00276ae9ba

See more details on using hashes here.

File details

Details for the file bkmr-6.3.3-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-6.3.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df152f6fe593b78ed3a3ca602892b66de8effb9a76ee94bd610da6bbf74f8508
MD5 03934d14aa555f50ddf6f9d3ef8887a6
BLAKE2b-256 fc64cb302ade522004545c01ee57e534e4435a51b913060dc5073bf6d9a0df66

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page