Skip to main content

Super fast bookmark manager with semantic full text search'

Project description

rsenv logo

Crates.io Crates.io Docs.rs Build Status

A local-first knowledge base for humans and AI agents. Store anything, find it by meaning, act on it instantly.

Beyond Bookmarks and Snippets: Knowledge Management for Humans and Agents

bkmr reborn

bkmr - crate of the week 482 - is a fast, feature-rich command-line tool that handles bookmarks, snippets, markdown files, scripts and more and adds powerful search.

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 local offline search (no API keys needed)

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

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

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: Fully local — database, embeddings, and search all run offline
  • Fast: 20x faster than similar Python tools
  • Agent-friendly: JSON output, non-interactive mode, and _mem_ system tag for AI agent memory
  • Automation-ready: Programmatic CLI with --json, --np, --stdout for pipelines and integrations

Editor Integration:

  • 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

NEW: Agent Memory

Persistent long-term memory for AI agents. The _mem_ system tag and hsearch (hybrid FTS + semantic search) create a complete read/write memory interface:

# Agent stores memory:
bkmr add "Prod DB is PostgreSQL 15 on port 5433" fact,database \
  --title "Production database config" -t mem --no-web

# Agent queries memories with natural language (hybrid search)
bkmr hsearch "database configuration" -t _mem_ --json --np

# All output is structured JSON — designed for programmatic consumption

Use ready-made skill/bkmr-memory. It defines a complete memory protocol with taxonomy, deduplication, and session workflows.

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

# Local semantic search (no API keys needed)
bkmr sem-search "containerized application security"

# Agent memory: store and retrieve knowledge
bkmr add "Prod DB on port 5433" fact,database --title "Prod DB config" -t mem --no-web
bkmr hsearch "database config" -t _mem_ --json --np

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 Full-text search with tag filtering, FZF, JSON output
hsearch Hybrid search: FTS + semantic with RRF fusion
sem-search Semantic search using local embeddings (offline, no API keys)
add Add bookmarks (URLs, snippets, scripts, markdown, env vars)
open Smart action dispatch based on content type
edit Edit bookmarks (smart: opens source file for imports)
update Modify tags and custom openers
delete Delete bookmarks by ID
show Display bookmark details
import-files Import files/directories with frontmatter parsing
tags View tag taxonomy with usage counts
info Show configuration, database path, embedding status
set-embeddable Mark bookmarks for semantic search embedding
backfill Generate missing embeddings
lsp Start LSP server for editor snippet completion
completion Generate shell completions (bash, zsh, fish)
surprise Open random URL bookmarks

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 + execute _shell_
Markdown Render in browser with TOC _md_
Environment Variables Print for eval/source _env_
Text Documents Copy to clipboard _imported_
Agent Memory Display to stdout _mem_

Rule: A bookmark can have at most one system tag. Local files without a system tag open with the default application.

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

Linux Clipboard: Uses external tools for reliable clipboard persistence.

  • Wayland: Uses wl-copy from wl-clipboard package
  • X11: Uses xclip (preferred) or xsel as fallback
  • Auto-detection: Detects display server via WAYLAND_DISPLAY environment variable

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

Project details


Release history Release notifications | RSS feed

This version

7.3.0

Download files

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

Source Distribution

bkmr-7.3.0.tar.gz (420.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-7.3.0-cp313-cp313-manylinux_2_39_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

bkmr-7.3.0-cp313-cp313-macosx_11_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bkmr-7.3.0-cp312-cp312-manylinux_2_39_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

bkmr-7.3.0-cp312-cp312-macosx_11_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bkmr-7.3.0-cp311-cp311-manylinux_2_39_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

bkmr-7.3.0-cp311-cp311-macosx_11_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bkmr-7.3.0-cp310-cp310-manylinux_2_39_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

bkmr-7.3.0-cp310-cp310-macosx_11_0_arm64.whl (13.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for bkmr-7.3.0.tar.gz
Algorithm Hash digest
SHA256 dbcae0596b038462bdd38f1d030ff663b435bb6e85d05f9212fae2f639032bb6
MD5 97934268e3776ebe3c4729d6bc1aba79
BLAKE2b-256 dc8e70013f8ebc36ff188495ab8b1945f6f38a6208a77d3f68300197c9cfeac4

See more details on using hashes here.

File details

Details for the file bkmr-7.3.0-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-7.3.0-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 46784e11edd7722d9ef482b42bbce65a0f3033656cfd98c8baceef172336b34d
MD5 7c4d91e2c0f90b5ead25df68b16aa165
BLAKE2b-256 3cff512bb894a8332fcf3d3f9c5d23b1fe6e0af186f4f00e954126494c646b7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-7.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41c350439ea2d00f086706db80451b9d7813679682ea008d3008f34ca54f74dc
MD5 f400e4c3258c6b88fdfed0eb1c53b91d
BLAKE2b-256 a96f253157846b81628765fecc236893d7b06db2ab2da356dd301e837395f9a8

See more details on using hashes here.

File details

Details for the file bkmr-7.3.0-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-7.3.0-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1edf6144b94e1cb82ac800421fc63e3446c59a1a79428dcd663c72d3a12a110d
MD5 f4b2c2be3f6e821c784774ff5a56837d
BLAKE2b-256 a931da673d6bca45db79c728175ec568bc6def130238ecdb6e48918915778032

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-7.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c031c9a366f7e020506deb4a1b7895b424e4ffbca7a7d18aa8bb7ffa3c12d0fa
MD5 df2bac7f50b74aab5ee80e23837c0a52
BLAKE2b-256 a38345b5d0f5a22cf6d302808b141528098019fad75de07a776e597694f258b9

See more details on using hashes here.

File details

Details for the file bkmr-7.3.0-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-7.3.0-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 524c60e6193eee264f33af5397467d7deeb97818017a3b746a998eace41f79f0
MD5 0a62b4b9d4f334b6a00af3b857174067
BLAKE2b-256 6d642f7f16cca772e5c26dd38d061903deade09fdddbd4146c764df689aa274f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-7.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a19fcf3dbad05a5b80ea7a36d6e27f82a9d79ad3e32f2f07b2e6e43a99ddf5d5
MD5 fe8acef3fdf92a6c1f476ed4869fd595
BLAKE2b-256 84cd0ed989750abbb454866f6bc3687a9c64e1765861dafa30f786f173e5615c

See more details on using hashes here.

File details

Details for the file bkmr-7.3.0-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for bkmr-7.3.0-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 ea3d92467489900d5fe1ab6f50753be9eb9f6e89f128349094f1116f66e0fadc
MD5 95eb621902d6479186d1621935ef054f
BLAKE2b-256 bd01ea1bf187fddb6205ad87dd221fb6abdca389d0efdb739518e470fe665787

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for bkmr-7.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1db01f5c02b669a843684a002241593ea921ac6cfa0d0878c0e2e804843477a
MD5 1d1e9c78d27c2960402d1d569d860919
BLAKE2b-256 8b6b031c54c5a745283b98dcf94010da38a766fd5f85028ceaa18087fca3ea21

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