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 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

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.2.6.tar.gz (393.5 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.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

bkmr-6.2.6-cp313-cp313-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bkmr-6.2.6-cp313-cp313-macosx_10_12_x86_64.whl (6.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

bkmr-6.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

bkmr-6.2.6-cp312-cp312-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bkmr-6.2.6-cp312-cp312-macosx_10_12_x86_64.whl (6.2 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

bkmr-6.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

bkmr-6.2.6-cp311-cp311-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bkmr-6.2.6-cp311-cp311-macosx_10_12_x86_64.whl (6.2 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

bkmr-6.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

bkmr-6.2.6-cp310-cp310-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bkmr-6.2.6-cp310-cp310-macosx_10_12_x86_64.whl (6.2 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for bkmr-6.2.6.tar.gz
Algorithm Hash digest
SHA256 40d704f262f906c510c6e926e80de73fb9c6f5991c47c31eeb32529cd0f8ca6d
MD5 11e3e100583adced2a47e7d27fbe8394
BLAKE2b-256 2cf489274f5e8fc2368d34b1592760de9e7025946781f7e0b48558a06f567514

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 173aa6cd45414644bb5cfbe63be1d14746c2828d11b2580c75c91648060b2fea
MD5 ec1acbbb0a3212521c6f41ce5534637a
BLAKE2b-256 725262cfc8776239ab0d055cf67d9052f45add6634cf84571f5ebd7250168bd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 91c8377d1ffd5b0a4eec57680f50f10f8b6dd0427ccda1e30c9200210e89074b
MD5 65dea987149c9cc4dbfdf50205baae56
BLAKE2b-256 e3576b07874c2f47a719aff8db7e0bade8435e7730a300c86aa87e3b9d7041e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0fa669e4b90af5608a6741dfd284c795543047ed6c8bf2a18bee0ef561e8ca00
MD5 750e37cb3d3a5dbbaa4dc90400fa7bbc
BLAKE2b-256 2dffe6e3a336c86c9e066eb08eff7486875e675fe992cffcd0453a2513925533

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2c88c9d2c23c9bc0af3241eaa7c94cd1e947494aeadf2a4a7bac2d7046cf7fb
MD5 0a0ad029a5c8afd42794af1e2b041b23
BLAKE2b-256 8c1fba6abdb55c41ec2113c83c4900034f7609765179b3429e1fc919cc0eff4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 141d1b072ead7d1673c7065b2ee1bdeaa56c397b82a341c673163657caa62c04
MD5 01dd06822935b7508a6cb8ec9c31c978
BLAKE2b-256 669d6b8bf2f2a1f8d49c2a4d70f70e31f55314d407046473118819deb91b8642

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ed7d1d3fc9afdfc3f4dfe75f1326d0a91dc3ce65bd68925a9ad4db4597cf8c5
MD5 674cdc7e30627a05d089604e75324da9
BLAKE2b-256 a8a2c317bceb5dc9d64707cef4dac0ed0895c56542f205890ffabb103da65d28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e385f031fca33e36358d278f64e76b436e33c2d3552200710cf39a71c5048b94
MD5 55fb4f6d9c72a16463d766b3b92f80af
BLAKE2b-256 6798b150f1c5a9e8d01d084aafd929572c59d7ab3f147fedfa1de83df368050c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30b09166438e413f620b55fa3f2490b6aa60f214d51ed627ee65522ed97f7a19
MD5 f80fba7b5e9424396ef50d1d412ca155
BLAKE2b-256 54f3bcc1533f71211840e90ebea2d54b46c878dc2724d1f1be2f905553c3490f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e7014b137240c132e4cda6c73c25f33e4f8f1e2563e21e59f8868f5edfc0d4dd
MD5 38810380d6ad21737482c3ea4b043650
BLAKE2b-256 47e3d6b25d7a8b4286423235302912c41918c929ab9c3dec7b639b7c9b4f1c40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c465974d44e7c61fdc9e8cccceeac3b7f0db52424fae7a2280d3d92d4840985e
MD5 1fe95b09d434db21e2a159b7f3c45baf
BLAKE2b-256 88ca3e4dd1f61b5116d0e5d962bcabc246aa5a133612ab01dd3f36b18a0d0e8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd55ccb8d9874fa5284a25092843455fb0e57da8a36fd82b0bc48fa4aed2b778
MD5 a334114deac6e82095ebab31dad86088
BLAKE2b-256 f4f8ba35ed5657702764e52b18481007223fb9bc4d34fb61c2164a2c40d550de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.2.6-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1be8e1fff046c011013abf047791a36c82194d9205d1e12b0fe77b077b989703
MD5 bc6d5e85fbca9d888b8fabfe4890ea37
BLAKE2b-256 0edc53ca27bab482f61d73d0ca40bcd3beb96779d4337d0498ee22ce9c82d307

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