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.0.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.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

bkmr-6.3.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

bkmr-6.3.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

bkmr-6.3.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bkmr-6.3.0-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.0.tar.gz.

File metadata

  • Download URL: bkmr-6.3.0.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.0.tar.gz
Algorithm Hash digest
SHA256 cffc2758089d32f0337d4ac59b448ad4bc50832fe7c098eab70d0b0aae32a2ec
MD5 eee86d3865aaecbf292eec474480195b
BLAKE2b-256 2efa6f6f157db1f9dffe01ae92123be187b43ded87764c210948cba5583aae5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a935a6c85dd09f3f0bd87c2b738722128d194859d973c6fa837c6ee918510867
MD5 871a119a8b8125f7345013bf300cbc8f
BLAKE2b-256 c66a745571c4e8e28f1049d62e97f0fa6942ea13232f2b77eccfbdadb63b9d65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6653eed736b704df93332d3cb6ad03798bb3b5ba6f1604a2fbf5a38c9c0664b
MD5 cda933eb473779ee03fcd8f7a12e23cc
BLAKE2b-256 f59e0700a5d4c252ab4cf4cf22be3939f7ddcc20b10b18387020b3fb7ee3b240

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 65a53b2a1d13dc75390a7fb884a6980f13498d96aca679f9efbcedf89a8b428a
MD5 82e999f8445db34a1d289e76ae90fbe3
BLAKE2b-256 2dd33482632812b212f7be68d4cbd04b2a5949b44fbbd93736e39e1aed069701

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29c9fbaa4fa63164cb50c809c60e81faaa5dd5cfb24d905c55a78446342daaab
MD5 d9aefba785596b453b0445b9dbdc25b8
BLAKE2b-256 55c0774c817a344eeb84236b88b5bdf9b1485e49ffb047a82a8b4857657783d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5373f0839178f59ba9bb041923dc86d7256f07d9941937879f6c8afccd6ae60
MD5 1cdd7c4023c36ea740ae661688993e6c
BLAKE2b-256 72760932a9dec530b1d8d4809282123b6e3ebfa8de6b04d6b114461703618d9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bcae1c88438c2708f85bc3a228d6d2da0646412ef7e69a8418221aa94b4513bb
MD5 158434f37c0daef305237b8351b4f046
BLAKE2b-256 cb1d0cf4aedd6739162d4cd8de61d02ad3fc4608c9cf4f6867ddc73862e3d49c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02def70bf1eafdf0cb684bf9f84dd5a527f94209ff1eb66b8052f3bf0d410827
MD5 be067772ee79c7cb318929b0678c0e24
BLAKE2b-256 60bc0f5ee03a997a6c84361e69e8a5f40ec6602721ab88979bc0e4222c39681d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2bed9587ccf090770a3386d7f931f99ad97cf78d0592b39f33f8ecd80fdc1413
MD5 3b36e4b803227dd4931bc428426dfc1d
BLAKE2b-256 5d1fa7f55fd650643036b54c9b7bb9f1e835edb6d03b9679acc2489617db9775

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 46aa3bc6e6c9bd8ecd3b46f153e4f1fb9dbc6cb7c20642962db5e62fbf9c0611
MD5 985e9379181b0bfd250462fd307fb219
BLAKE2b-256 74e221ab1c4d42dc56ded4c0d051df548f4f81fff8c2c711a43b9db813837f26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14656dd12a06795ad059f7ec7ee52fcb6328435f7c33a738f5fb0b862d7b5203
MD5 2b5e2e712ebbd9dc26a2bac66722ea82
BLAKE2b-256 ea034d3bd44be3a000545f7e836c4c7a10afa3592f48457f048bfe804f79a705

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98c7dd444997991a2422154aef7ff5d04187c417fd583905dc5a68e2e5025a6b
MD5 3a1f05e0ad50c12d1caacd383ed6774c
BLAKE2b-256 daf40381c3b55ba1c014b9e0493c68d39cb2014c10dce27e9ea0f4bc007455c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.3.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 51b696989b5beae980f04bfdad840e8f2efb445e101291aea75f1c99356ce69e
MD5 1023bba1f7d985280517b22c1b155d17
BLAKE2b-256 88f253db68a3efd81b45fff0edb9497a854e0f8a3affd2439d85388f59e938bc

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