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

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.1.tar.gz (397.1 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.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

bkmr-6.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

bkmr-6.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

bkmr-6.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

bkmr-6.3.1-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.1.tar.gz.

File metadata

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

File hashes

Hashes for bkmr-6.3.1.tar.gz
Algorithm Hash digest
SHA256 150ee04b853c0aa0e8e21c56013a296dc21061d274c2dee9e764939a0c2f6f6f
MD5 38e2b3c09014e580c5b33484fc190cf2
BLAKE2b-256 6cab74c4705b77c81366d90f1fffa7cede4b3758e9318516bed6ba3a81bd59f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c246b0e2190344b1bfcb06ee68f99dd94d709f65d5d683904afd0124e0c4e28
MD5 bb0fdae4691c6b94130eb6dcc4fcde1c
BLAKE2b-256 2a833d769f1d76b6bb8d682a44299f4610a6f80998f6c1a09c770016c2ae5b78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 17b6911e3e9991a8b6603847d97e81b4c9bffed91060e688dccb3413c04e3f63
MD5 93dd8c25b819f76ecac6d6efd3ffc8db
BLAKE2b-256 2bf0a7cdb35024bb493cecaac06d045b6395c2ec00036a3de41f5c6dd1fb6428

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1c8fd195f6e440f178e5d41aef3c11d77102cabfcbbdf965f03a5637286c6a08
MD5 400fb79edc9906f4ca4e669c518ebd69
BLAKE2b-256 3cc982b7a0ac7dc531e9b271966943b60681bee80ad648e41ff0249375e5489e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e40327cb3ae487d750a5619b3ebde0e93c9d639678861cae39f27ea1407663c
MD5 764d69169a2019f548e59359e31ff7b9
BLAKE2b-256 5c25bb8849d28fc513b7575e70fa0bdd89a2cc1436e0cc7dc8c8c5459e9d058d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24263abfa6ccb4c7572b806cc47ca7d2e2052439dfa0f54bdc87eb53437757da
MD5 f68509a38312db5c71563a8f2c09e778
BLAKE2b-256 74cc0206ed0640f667f40c097f09e92c1ebd91fb2c2ede2e5b96ccdc71a758f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1f1425a8e543a56da15e086edb39783f119c940524068ea75a8463d8a04ed056
MD5 2f18bb9a7a1fb2e21058bb4d094dd300
BLAKE2b-256 983251341abf9f59ff37f7bd27afde8eac13b3b88c79f79fede96e7ff04c4e2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79b5666c1793287abed2968078b6d35f12f13151ab52c6f4c7b154bc17a8e201
MD5 fa56fa9ca86d5aa7b9ed34608015b5fb
BLAKE2b-256 982951c449b4f177853a8072b00caaa66af0a894af7794d2dd35afcb647177c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b3c62b3dbe8974d196be083a618d07f17a05f2747327f39ddaaf6a965b6c825
MD5 ee9fd510720f15b57fc59251bdd40c43
BLAKE2b-256 242fd4bd2440438365844d8a21ae073e7294cf88f2951d7bd263ac336330b2ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 11eca1d0017fe714c50574d4c2879064c34550f36d6cdf8384651a81d8341b40
MD5 3e6bfdc645d5877c070b804b46ddc253
BLAKE2b-256 aee2861099afa279f0628bc8ceb7d80777876fd07dc42e76f7aeaa9a4e15b557

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b34a2d715255cc11ebcb9e1ba488310b097960d361c46059c0765ddd0953014a
MD5 e7d38d713626c01ae15d99e4a80f87ee
BLAKE2b-256 f5fecdee0d49582a87eb135e3b5eda4ebe8b3672bf017a5a5599a8cf5055999d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a61d2d2d8c342fe943ce7f166603d4753b48420d0994a1472452cd2baa2b5afc
MD5 098ccf9d78c168b762018f11957e09b7
BLAKE2b-256 a2e290ae2431d2c9fd453f17d05db6136faf6eeb6f04ea6748cb02f3e0a931b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e6ff67c9b1e805aa4439504159aa44e142c691adaa5850af607ab728d621348f
MD5 bd40cec60dbb75f7ab85c50528f87156
BLAKE2b-256 55b0f27477d193be0ebeb2dbe8c13f0c259c9c8021812cb4c441a9fefa2d0113

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