kbVault - Knowledge Base Vault CLI
A high-performance, production-ready Go knowledge management system with multiple storage backends, full-text search, and powerful CLI interface. Designed for managing markdown-based knowledge vaults at scale.
What is kbVault?
kbVault is a command-line tool for managing your knowledge base. Store notes in markdown, organize them with tags and links, search across your entire vault, and access your knowledge from anywhereβall with zero external dependencies for core functionality.
Perfect for:
- Personal knowledge management systems
- Team documentation
- Research note-taking
- Project-specific vaults
- Multiple concurrent knowledge bases with profiles
Key Features
- π Simple Note Management - Create, edit, delete, and organize notes with ease
- π Full-Text Search - Fast search across all your notes
- π Bidirectional Links - Connect related notes automatically
- π¦ Storage Flexibility - Local filesystem or S3-compatible storage
- π₯ Multi-Profile Support - Manage multiple vaults with different configurations
- βοΈ Zero Configuration - Works out-of-the-box with sensible defaults
- π High Performance - Optimized for vaults with thousands of notes
- π Shell Completions - Tab completion for bash, zsh, and fish
Quick Start
Installation
macOS & Linux (Homebrew):
brew tap madstone-tech/tap
brew install kbvault
Using Go:
go install github.com/madstone-tech/mdstn-kb-mcp/cmd/kbvault@latest
From Binary:
Download from GitHub Releases
Your First Vault
# Initialize a vault
kbvault init ~/my-vault
# Create your first note
kbvault new "Welcome to kbVault"
# List your notes
kbvault list
# Search notes
kbvault search "welcome"
See Getting Started Guide for detailed setup.
Usage Examples
# Create a note
kbvault new "Python Tips"
# Search your vault
kbvault search "async programming"
# List notes with filtering
kbvault list --tag python
# Edit a note
kbvault edit "Python Tips"
# Manage multiple vaults
kbvault --profile work new "Team Meeting"
kbvault --profile personal new "Personal Goal"
# View CLI help
kbvault --help
See CLI Reference for all commands.
Documentation
For Users
For Developers
Project Structure
kbvault/
βββ cmd/kbvault/ # CLI application
β βββ main.go # Entry point
β βββ new.go, show.go, ... # Commands
β βββ *_test.go # Tests
β
βββ pkg/ # Public packages
β βββ config/ # Configuration & profiles
β βββ storage/ # Storage backends
β β βββ local/ # Filesystem storage
β β βββ s3/ # S3-compatible storage
β βββ types/ # Core types
β βββ ulid/ # ID generation
β βββ retry/ # Retry logic
β βββ vector/ # Vector DB (planned)
β
βββ internal/ # Private packages
β βββ links/ # Link management
β βββ search/ # Search engine
β βββ templates/ # Note templates
β βββ api/, mcp/, tui/ # Future interfaces
β
βββ docs/ # Documentation
β βββ guides/ # User guides
β βββ architecture/ # Architecture docs
β βββ development/ # Development docs
β βββ README.md # Docs index (MOC)
β
βββ scripts/ # Build & utility scripts
βββ completions/ # Shell completions
βββ configs/ # Config templates
βββ test/ # Test data
βββ Makefile # Build automation
| Platform |
Architecture |
Status |
| macOS |
Intel (amd64) |
β
Supported |
| macOS |
Apple Silicon (arm64) |
β
Supported |
| Linux |
x86_64 (amd64) |
β
Supported |
| Linux |
ARM (arm64) |
β
Supported |
| Windows |
x86_64 |
π Planned |
Storage Options
Local Storage (Default)
Store notes in your local filesystem as TOML files. Perfect for personal vaults and development.
[storage]
type = "local"
path = "./notes"
S3-Compatible Storage
Store notes in AWS S3 or any S3-compatible service (MinIO, DigitalOcean Spaces, etc.). Ideal for team vaults and cloud backups.
[storage]
type = "s3"
bucket = "my-kb"
region = "us-east-1"
See Configuration Guide for setup details.
Development
Quick Build
# Build binary
make build
# Run tests
make test
# Format code
make fmt
# Full checks
make check
Requirements
- Go 1.25 or later
- Make
- golangci-lint (for linting)
See Building & Testing Guide for detailed setup.
Testing
# Run full test suite
go test ./...
# With coverage
go test -cover ./...
# With race detector
go test -race ./...
# Specific package
go test -v ./pkg/config
Coverage: 62.8% | Target: 70%+
kbVault is optimized for performance:
- β‘ Fast Search: Indexed full-text search for sub-second results
- πΎ Minimal Memory: Efficient indexing and caching
- π Scalable: Supports vaults with thousands of notes
- π Incremental Updates: Only updated notes are re-indexed
Benchmark results available in test output.
Configuration
kbVault uses TOML configuration. Profiles allow you to manage multiple vaults:
# Create profiles
kbvault profile create work --storage-path ~/work-vault
kbvault profile create personal --storage-path ~/personal-vault
# Use specific profile
kbvault --profile work list
kbvault --profile personal new "Personal Note"
# Set default profile
kbvault profile set-active work
See Profiles Guide and Configuration Guide.
Feature Status
Fully Implemented (v1.0.0+)
- β
Note management (CRUD operations)
- β
Full-text search with inverted indexing
- β
Local & S3-compatible storage
- β
Multi-profile support for multiple vaults
- β
Bidirectional link detection and management
- β
Shell completions (bash, zsh, fish)
- β
TOML-based configuration system
- β
Template system for note creation
In Progress / Partial
- π‘ MCP Protocol - Basic structure in place, not fully functional
- π‘ HTTP Server - Configuration exists, API endpoints not yet implemented
Planned (v1.1.0+)
- π Vector-based semantic search
- π HTTP REST API endpoints
- π Terminal UI (TUI)
- π gRPC API
- π Windows support
See Implementation Plan for details.
Contributing
Contributions are welcome! See CONTRIBUTING.md for:
- Development setup
- Code style guidelines
- Testing requirements
- Pull request process
License
MIT License - See LICENSE for details.
Support
Acknowledgments
Built with Go and inspired by modern knowledge management systems. Special thanks to all contributors and users.
π Documentation | π Quick Start | π» CLI Reference | π§ API Docs