{"id":14156236,"url":"https://github.com/sysid/bkmr","last_synced_at":"2026-04-08T07:02:32.359Z","repository":{"id":65703608,"uuid":"588843754","full_name":"sysid/bkmr","owner":"sysid","description":"A Unified CLI Tool for Bookmark, Snippet, and Knowledge Management","archived":false,"fork":false,"pushed_at":"2026-04-05T06:49:49.000Z","size":14499,"stargazers_count":245,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-05T08:28:30.619Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sysid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-14T07:46:01.000Z","updated_at":"2026-04-05T06:49:53.000Z","dependencies_parsed_at":"2024-03-10T09:26:50.897Z","dependency_job_id":"22d33b17-ecd7-46ad-b511-dcff9e08ffb2","html_url":"https://github.com/sysid/bkmr","commit_stats":{"total_commits":77,"total_committers":3,"mean_commits":"25.666666666666668","dds":"0.16883116883116878","last_synced_commit":"1654fc507961ba9ade1fe74e38e0a08b6878c468"},"previous_names":[],"tags_count":124,"template":false,"template_full_name":null,"purl":"pkg:github/sysid/bkmr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysid%2Fbkmr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysid%2Fbkmr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysid%2Fbkmr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysid%2Fbkmr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sysid","download_url":"https://codeload.github.com/sysid/bkmr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sysid%2Fbkmr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31544087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-17T08:05:18.770Z","updated_at":"2026-04-08T07:02:32.353Z","avatar_url":"https://github.com/sysid.png","language":"Rust","funding_links":[],"categories":["others","Rust","\u003ca name=\"cheatsheet\"\u003e\u003c/a\u003eCommands cheatsheet and snippets"],"sub_categories":[],"readme":"\u003cimg src=\"docs/bkmr-logo.png\" alt=\"rsenv logo\" width=\"240\"\u003e\n\n![Crates.io](https://img.shields.io/crates/v/bkmr)\n![Crates.io](https://img.shields.io/crates/d/bkmr)\n[![Docs.rs](https://docs.rs/bkmr/badge.svg)](https://docs.rs/bkmr)\n[![Build Status][build-image]][build-url]\n\n\u003e A local-first memory for humans and AI agents. Store anything, find it by meaning, act on it instantly.\n\n# Beyond Bookmarks and Snippets: Knowledge Management for Humans and Agents\n\n`bkmr` - [crate of the week 482](https://this-week-in-rust.org/blog/2023/02/15/this-week-in-rust-482/) - memories, bookmarks, snippets, etc, searchable, executable.\n\n**Organize**, **find**, and **apply** various content types:\n\n- Web URLs with automatic metadata extraction\n- Code snippets for quick access and reuse\n- Shell commands with immediate execution capabilities\n- Markdown documents with live rendering, incl. TOC\n- Plain text with Jinja template interpolation\n- Local files and directories integration\n\n**Centralize** your data in bkmr's database (`add`) or **keep it in your filesystem**\n(`import-files`) ([see](https://github.com/sysid/bkmr/wiki/File-Import-and-Editing)).\n\n- e.g. memories, bookmarks, links, snippets in database\n- large documents or scripts in filesystem, references go into database\n\n**Both options provide the full management capability of `bkmr`.**\n\n## Why bkmr?\n\n- **Developer- and agent-focused**: Integrates seamlessly with workflow and toolchain\n- **Agent-friendly**: JSON output, non-interactive mode, and `_mem_` system tag for AI agent memory\n- **Multifunctional**: Handles many content types with context-aware actions\n- **Intelligent**: Full-text and semantic search capabilities\n- **Privacy-focused**: Fully local — database, embeddings, and search all run offline\n- **Fast**: 20x faster than similar Python tools\n- **Automation-ready**: Programmatic CLI with `--json`, `--np`, `--stdout` for pipelines and integrations\n\n**[Editor Integration](https://github.com/sysid/bkmr/wiki/Editor-Integration)**:\n- **Built-in LSP server**: Use `bkmr lsp` for VS Code, Vim, Emacs - automatic snippet completion with language-aware filtering\n- **[Neovim Plugin](https://github.com/sysid/bkmr-nvim)**: Visual interface with Telescope integration and zero configuration\n- **[IntelliJ Plugin](https://github.com/sysid/bkmr-intellij-plugin)**: JetBrains Marketplace plugin\n\n\n## Agent Memory and Skill\n\nPersistent long-term memory for AI agents. The `_mem_` system tag and `hsearch` (hybrid FTS + semantic search) create a complete read/write memory interface:\n\n```bash\n# Agent stores memory:\nbkmr add \"Prod DB is PostgreSQL 15 on port 5433\" fact,database \\\n  --title \"Production database config\" -t mem --no-web\n\n# Agent queries memories with natural language (hybrid search)\nbkmr hsearch \"database configuration\" -t _mem_ --json --np\n\n# All output is structured JSON — designed for programmatic consumption\n```\n\nUse [`skill/bkmr-memory`](skill/bkmr-memory/SKILL.md). It defines a complete memory protocol with taxonomy, deduplication, and session workflows.\n\nSee **[Agent Integration](https://github.com/sysid/bkmr/wiki/Agent-Integration)** for complete documentation.\n\n## Quick Examples\n\n```bash\n# Quick fuzzy search with interactive selection\nbkmr search --fzf\n\n# Add URL with automatic metadata extraction\nbkmr add https://example.com tag1,tag2\n\n# Store code snippet\nbkmr add \"SELECT * FROM users\" sql,_snip_ --title \"User Query\"\n\n# Shell script with interactive execution\nbkmr add \"#!/bin/bash\\necho 'Hello'\" utils,_shell_ --title \"Greeting\"\n\n# Render markdown in browser with TOC\nbkmr add \"# Notes\\n## Section 1\" docs,_md_ --title \"Project Notes\"\n\n# Import files with frontmatter\nbkmr import-files ~/scripts/ --base-path SCRIPTS_HOME\n\n# Local semantic search (no API keys needed)\nbkmr sem-search \"containerized application security\"\n\n# Agent memory: store and retrieve knowledge\nbkmr add \"Prod DB on port 5433\" fact,database --title \"Prod DB config\" -t mem --no-web\nbkmr hsearch \"database config\" -t _mem_ --json --np\n```\n\n### Screenshots\n\n**Bookmarks:**\n\u003cimg src=\"./docs/bkmr4-bookmarks.png\" alt=\"bookmarks\" width=\"800\"/\u003e\n\n**Snippets:**\n\u003cimg src=\"./docs/bkmr4-fzf-snippets.png\" alt=\"fzf-snippets\" width=\"800\"/\u003e\n\n**Demos:**\n- \u003ca href=\"https://asciinema.org/a/q4Okf4j2ja757Nav5wf0tNz8k?autoplay=1\" alt=\"Never Context-Switch Again\"\u003e\u003cimg src=\"https://asciinema.org/a/q4Okf4j2ja757Nav5wf0tNz8k.svg\" /\u003e\u003c/a\u003e\n- [Overview](https://asciinema.org/a/VTsHuw1Ugsbo10EP0tZ3PdpoG?autoplay=1\u0026speed=2\u0026t=3) | [Getting Started](https://asciinema.org/a/wpnsTw3Cl7DK2R7jK7WVpp9OR?autoplay=1\u0026speed=2\u0026t=3) | [Search and Filter](https://asciinema.org/a/M97UJMKxw1nxnzO4SaowGZAmb?autoplay=1\u0026speed=2\u0026t=3) | [Edit and Update](https://asciinema.org/a/uCuNPSlqRemlcXiVQ3CIqq8uV?autoplay=1\u0026speed=2\u0026t=3) | [Tag Management](https://asciinema.org/a/jNOLfhc6aFV3wPGTgOzgrM7Kc?autoplay=1\u0026speed=2\u0026t=3)\n\n## Getting Started\n\n### Installation\n\n```bash\n# Via cargo\ncargo install bkmr\n\n# Via pip/pipx/uv\npip install bkmr\n\n# Via brew\nbrew install bkmr\n```\n\nSee **[Installation Guide](https://github.com/sysid/bkmr/wiki/Installation)** for detailed instructions and troubleshooting.\n\n### Initial Setup\n\n```bash\n# Generate configuration\nbkmr --generate-config \u003e ~/.config/bkmr/config.toml\n\n# Create database\nbkmr create-db ~/.config/bkmr/bkmr.db\n\n# Optional: Configure location\nexport BKMR_DB_URL=~/path/to/db\n```\n\n### First Use\n\n```bash\n# Add your first bookmark\nbkmr add https://github.com/yourusername/yourrepo github,project\n\n# Search and find\nbkmr search github\n\n# Interactive fuzzy search\nbkmr search --fzf\n```\n\n**Quick Start Guide**: See the **[Quick Start](https://github.com/sysid/bkmr/wiki/Quick-Start)** for a 5-minute tutorial.\n\n## Command Reference\n\n| Command | Description |\n|---------|-------------|\n| `search` | Full-text search with tag filtering, FZF, JSON output |\n| `hsearch` | Hybrid search: FTS + semantic with RRF fusion |\n| `sem-search` | Semantic search using local embeddings (offline, no API keys) |\n| `add` | Add bookmarks (URLs, snippets, scripts, markdown, env vars) |\n| `open` | Smart action dispatch based on content type |\n| `edit` | Edit bookmarks (smart: opens source file for imports) |\n| `update` | Modify tags and custom openers |\n| `delete` | Delete bookmarks by ID |\n| `show` | Display bookmark details |\n| `import-files` | Import files/directories with frontmatter parsing |\n| `tags` | View tag taxonomy with usage counts |\n| `info` | Show configuration, database path, embedding status |\n| `backfill` | Generate missing embeddings |\n| `clear-embeddings` | Clear all embeddings and content hashes |\n| `lsp` | Start LSP server for editor snippet completion |\n| `completion` | Generate shell completions (bash, zsh, fish) |\n| `surprise` | Open random URL bookmarks |\n\n**Complete command documentation**: See **[Basic Usage](https://github.com/sysid/bkmr/wiki/Basic-Usage)** for detailed examples.\n\n## Smart Content Actions\n\nbkmr intelligently handles different content types with appropriate actions:\n\n| Content Type          | Default Action                | System Tag   |\n|-----------------------|-------------------------------|--------------|\n| URLs                  | Open in browser               | (none)       |\n| Snippets              | Copy to clipboard             | `_snip_`     |\n| Shell Scripts         | Interactive edit + execute    | `_shell_`    |\n| Markdown              | Render in browser with TOC    | `_md_`       |\n| Environment Variables | Print for `eval`/`source`     | `_env_`      |\n| Text Documents        | Copy to clipboard             | `_imported_` |\n| Agent Memory          | Display to stdout             | `_mem_`      |\n\n\u003e **Rule:** A bookmark can have at most **one** system tag. Local files without a system tag open with the default application.\n\nLearn more: **[Content Types](https://github.com/sysid/bkmr/wiki/Content-Types)** | **[Core Concepts](https://github.com/sysid/bkmr/wiki/Core-Concepts)**\n\n## Documentation\n\nComprehensive documentation is available in the **[bkmr Wiki](https://github.com/sysid/bkmr/wiki)**:\n\n### Getting Started\n- **[Home](https://github.com/sysid/bkmr/wiki/Home)** - Wiki overview and navigation\n- **[Quick Start](https://github.com/sysid/bkmr/wiki/Quick-Start)** - 5-minute introduction\n- **[Installation](https://github.com/sysid/bkmr/wiki/Installation)** - Installation methods and troubleshooting\n- **[Core Concepts](https://github.com/sysid/bkmr/wiki/Core-Concepts)** - Understanding tags, system tags, and bookmarks\n\n### Core Features\n- **[Basic Usage](https://github.com/sysid/bkmr/wiki/Basic-Usage)** - Common daily operations\n- **[Search and Discovery](https://github.com/sysid/bkmr/wiki/Search-and-Discovery)** - FTS, tags, fuzzy finder, semantic search\n- **[Content Types](https://github.com/sysid/bkmr/wiki/Content-Types)** - URLs, snippets, shell scripts, markdown, environment variables\n- **[Shell Scripts](https://github.com/sysid/bkmr/wiki/Shell-Scripts)** - Interactive execution and shell function stubs\n\n### Advanced Topics\n- **[Configuration](https://github.com/sysid/bkmr/wiki/Configuration)** - Complete configuration reference\n- **[Template Interpolation](https://github.com/sysid/bkmr/wiki/Template-Interpolation)** - Jinja2 dynamic content\n- **[Agent Integration](https://github.com/sysid/bkmr/wiki/Agent-Integration)** - AI agent memory, JSON API, bulk import\n- **[File Import and Editing](https://github.com/sysid/bkmr/wiki/File-Import-and-Editing)** - Frontmatter, base paths, smart editing\n- **[Semantic Search](https://github.com/sysid/bkmr/wiki/Semantic-Search)** - Local offline semantic search with fastembed\n- **[Editor Integration](https://github.com/sysid/bkmr/wiki/Editor-Integration)** - LSP server and editor plugins\n- **[Advanced Workflows](https://github.com/sysid/bkmr/wiki/Advanced-Workflows)** - Power user techniques\n\n### Reference\n- **[Troubleshooting](https://github.com/sysid/bkmr/wiki/Troubleshooting)** - Common issues and solutions\n- **[Development](https://github.com/sysid/bkmr/wiki/Development)** - Contributing and building from source\n\n## Editor Integrations\n\nAccess your snippets directly within your editor without context switching.\n\n### Neovim Plugin (Recommended)\n\n**[bkmr-nvim](https://github.com/sysid/bkmr-nvim)** provides visual interface with zero configuration.\n\n```lua\n{\n  \"sysid/bkmr-nvim\",\n  dependencies = { \"nvim-lua/plenary.nvim\" },\n  config = function()\n    require(\"bkmr\").setup() -- Zero config required!\n  end,\n}\n```\n\n**Features**: Visual snippet browser, in-editor editing, automatic LSP setup, custom commands\n\n### Built-in LSP Server\n\nCompatible with VS Code, Vim, Emacs, Sublime, and any LSP-compatible editor.\n\n```bash\n# Start LSP server\nbkmr lsp\n\n# Disable template interpolation if needed\nbkmr lsp --no-interpolation\n```\n\n**Features**: Automatic completion, language-aware filtering, universal snippets, template interpolation\n\n### IntelliJ Platform Plugin\n\n**[bkmr-intellij-plugin](https://github.com/sysid/bkmr-intellij-plugin)** for all JetBrains IDEs.\n\n**Features**: Seamless LSP integration, Tab navigation, works in IntelliJ IDEA, PyCharm, WebStorm, CLion, RustRover, and all JetBrains IDEs\n\n**Complete documentation**: **[Editor Integration](https://github.com/sysid/bkmr/wiki/Editor-Integration)**\n\n## Platform Compatibility\n\n**Linux Clipboard**: Uses external tools for reliable clipboard persistence.\n- **Wayland**: Uses `wl-copy` from `wl-clipboard` package\n- **X11**: Uses `xclip` (preferred) or `xsel` as fallback\n- **Auto-detection**: Detects display server via `WAYLAND_DISPLAY` environment variable\n\n## Development\n\n### Building from Source\n\n```bash\ngit clone https://github.com/sysid/bkmr.git\ncd bkmr\ncargo build --release\n```\n\n### Running Tests\n\n**IMPORTANT**: All tests must be run single-threaded:\n\n```bash\n# Run tests (REQUIRED: single-threaded)\ncargo test -- --test-threads=1\n\n# Or use Makefile\nmake test\n```\n\n**Why single-threaded?** Tests share a SQLite database and environment variables. Parallel execution causes race conditions.\n\nSee **[Development](https://github.com/sysid/bkmr/wiki/Development)** for complete contributor guide.\n\n## Community and Contributions\n\nWe welcome contributions! Please check our [Contributing Guidelines](./CONTRIBUTING.md) to get started.\n\n**Resources:**\n- GitHub: https://github.com/sysid/bkmr\n- Issues: https://github.com/sysid/bkmr/issues\n- Wiki: https://github.com/sysid/bkmr/wiki\n- Discussions: https://github.com/sysid/bkmr/discussions\n\n\u003c!-- Badges --\u003e\n[build-image]: https://github.com/sysid/bkmr/actions/workflows/release_wheels.yml/badge.svg\n[build-url]: https://github.com/sysid/bkmr/actions/workflows/release_wheels.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysid%2Fbkmr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsysid%2Fbkmr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysid%2Fbkmr/lists"}