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

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.4.1.tar.gz (396.9 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.4.1-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.4.1-cp313-cp313-macosx_11_0_arm64.whl (6.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

bkmr-6.4.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.4.1.tar.gz.

File metadata

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

File hashes

Hashes for bkmr-6.4.1.tar.gz
Algorithm Hash digest
SHA256 549216a9a620103cd2489db5b4ee220814154483ac6c81de967e8a5f5f4dcbd0
MD5 8218ee09a3598f9f5897c6c10b0ee424
BLAKE2b-256 5ddbd6fcbd632aed634aedc47632974f73f00569d549922f1952cc409851e6c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65551d21279ad57f83e5e442f5b38c10b5c2720f90ef7954a428172e9d915276
MD5 993ab9b835ed60d461ff47266f553470
BLAKE2b-256 371502bb2dfc43fb156a610772a54228ab301fcb6a35475547454bd42909f38f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9404a5c38ccf495b66597c75b44d922b54ef1263d259aed4fc52ea6a70225355
MD5 690637cecc0eadb8ac08119567dbc378
BLAKE2b-256 e68c0bb9a0dec094437b1d0d252691bbabd149a65f269d025f6cab6590164a69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1ff3cff6fedc8e6e6fc6a01153a0ee8c0eba0cdf1d50110383e0430036d710fb
MD5 08d7033c63905e6e3ccf95349ada56e7
BLAKE2b-256 65cd5bcbc8aede3ca717e891e7885a720882450d96a05c28a13c329b3c789978

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1384a7000e36860dba9ecfd2ea47d59a67633bb2332438678f0c9ffad58323b2
MD5 4eda9b56aef303e1f64a834b80801e9e
BLAKE2b-256 7b4caaa5e1ada4ee78d658dd1446ab932f2a940683974821eea8da206bec9061

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 120091ad1deec8e40783282a77b86ae885a5f993133d2a4316a83fd7a1cc5a19
MD5 682b7bf83c9ed334688dabd21cc20bea
BLAKE2b-256 f7036ada9beae68888d54ca91593aa013326e3ce5da2d373077bba4effa38997

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0e04324d98805972024a1a4b4109fd694a006d267d794918b96263fcb297c6a
MD5 cfabf46d67aa2d58287685c7d34d5112
BLAKE2b-256 3003596b7ae53a0d8b4d15178b89092efb9835743c968076f3b99780c065d9bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06c0ea972c35f0413b29092a85ba8c742d87b8b175a739687bf57730022328ce
MD5 d7b95b3cd3c74b379944784622feb308
BLAKE2b-256 a6f1be98e5eace2d115adabcec19d2f3cf13a6d2b72bf16b5ff8025b919db95d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f8a4e96c5284d6efe323d3ca08a10b783ec4a50e5d244373c3916393f1d9669
MD5 2baad7d199999aa4d8900df73aad44f5
BLAKE2b-256 03201773e116340016a07f6ae7f59909096e4562620518fdf091affde0b290bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 04c1f7a7452ffedad1a155c7b6e788e6be7f82fe3a1e8e5ce87a155b4d3df15a
MD5 702a90d5b9c3219681b3b18256179902
BLAKE2b-256 c692e1f581ad332a27abf5275754fc9439009963bef7effdd0cd8ba3cb1662cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79d78ad10559de660c58179b64b48c91f2b0237d67a9b4b07a3378dd7aeb8eee
MD5 135a95f7959fad0c76acf071df280e07
BLAKE2b-256 f1a440d3745e7c4e45a0f595b04daa735083ccb4a9b520ccd8a7d5dc2d2c0cb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af06097f4684c0aeb20c010355af38afd39517b84a1b705b5b52760fd018134c
MD5 7181cebb4951b118203b9ce96a38e0be
BLAKE2b-256 de4fef7413c5b9e78fe5c0c57c79c6940c8ac4d4372a536139ad4997cefc46fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-6.4.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 884207ff681b1cddabb365f1e515322062007632297689a8c4f4dad96c458d9b
MD5 722e95635ede8e69a73a750e28338e6b
BLAKE2b-256 0c4acbdcd0542b971ac7dde47199f7479fb3b30ba9a962448b08ec516235bf8a

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