vipune /ˈʋi.pu.ne/
███
░░░
█████ █████ ████ ████████ █████ ████ ████████ ██████
░░███ ░░███ ░░███ ░░███░░███░░███ ░███ ░░███░░███ ███░░███
░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███████
░░███ ███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███░░░
░░█████ █████ ░███████ ░░████████ ████ █████░░██████
░░░░░ ░░░░░ ░███░░░ ░░░░░░░░ ░░░░ ░░░░░ ░░░░░░
░███
█████
░░░░░
A minimal memory layer for AI agents.
In Finnish mythology, Antero Vipunen is a giant who sleeps underground, holding all the world's knowledge and ancient songs. vipune is your agent's sleeping giant — a local knowledge store that remembers everything.
Store semantic memories, search by meaning, and detect conflicts. Single binary CLI. No API keys required.
Features
- Semantic search - Find memories by meaning, not keywords (ONNX embeddings, bge-small-en-v1.5)
- Conflict detection - Automatically warns when adding duplicate or similar memories
- Zero configuration - Works out of the box (auto-detected git projects, sensible defaults)
- Single binary - Just one CLI tool, no daemon, no database server
- No API keys - Everything runs locally, no network dependencies
- Project scoped - Memories isolated by git repository
Installation
Platform Support
Supported: macOS ARM64, Linux x86_64, Linux ARM64
Not supported: Windows (due to ONNX Runtime compilation complexity)
Prerequisites
For source installation:
- Rust 1.70+ (install via https://rustup.rs)
- System dependencies for ONNX Runtime:
- Linux: libgomp1, libc6
- macOS: None required
Pre-built binary
macOS Apple Silicon (arm64)
# Download
# Extract
# Install to system directory (requires sudo)
# Or install to user directory (no sudo)
Linux x86_64
Linux ARM64
Build from source
Latest release (recommended)
# Check https://github.com/randomm/vipune/releases for the latest version
Or clone and build manually
&&
# Binary at ./target/release/vipune
# Add to PATH temporarily
# Or install permanently
Uninstall
# Remove pre-built binary
# Remove from user directory
# Remove via cargo
# Clear data (optional)
Quick Start
# Add a memory
# Search by semantic meaning
# Add with metadata (optional)
CLI Commands
| Command | Description |
|---|---|
vipune add <text> |
Store a memory |
vipune search <query> |
Find memories by meaning |
vipune get <id> |
Retrieve a memory by ID |
vipune list |
List all memories |
vipune delete <id> |
Delete a memory |
vipune update <id> <text> |
Update a memory's content |
vipune version |
Show version |
Complete CLI reference • Quickstart guide
Library Usage
vipune can also be used as a Rust crate for programmatic integration:
# Cargo.toml
[]
= "0.1"
use ;
// Initialize memory store
let config = default;
let mut store = new.expect;
// Add a memory
let project_id = "my-project";
let memory_id = store.add
.expect;
// Search memories
let results = store.search
.expect;
for memory in results
See the crate documentation at docs.rs for complete API reference.
Configuration
vipune works with zero configuration. All paths use the user's home directory:
Default paths:
- Database:
~/.vipune/memories.db - Model cache:
~/.vipune/models/ - Config file:
~/.config/vipune/config.toml
Environment variables (override defaults):
VIPUNE_DATABASE_PATH- SQLite database locationVIPUNE_EMBEDDING_MODEL- HuggingFace model ID (default:BAAI/bge-small-en-v1.5)VIPUNE_MODEL_CACHE- Model download cache directoryVIPUNE_PROJECT- Project identifier (overrides auto-detection)VIPUNE_SIMILARITY_THRESHOLD- Conflict detection threshold, 0.0-1.0 (default:0.85)VIPUNE_RECENCY_WEIGHT- Recency bias in search results, 0.0-1.0 (default:0.3)
Config file (~/.config/vipune/config.toml):
= "~/.vipune/memories.db"
= "BAAI/bge-small-en-v1.5"
= "~/.vipune/models"
= 0.85
= 0.3
Agent Integration
vipune works with any agent that can run shell commands — no plugins, adapters, or API keys required. Configure your agent with a few lines of instructions, grant shell command permissions, and the agent can use vipune search and vipune add to maintain persistent memory across tasks.
→ See Agent Integration Guide for per-tool setup instructions (Claude Code, Cursor, Windsurf, Cline, Roo Code, GitHub Copilot, Goose, Aider, OpenCode, Zed, and more).
Exit codes for agent workflows:
0- Success1- Error (missing file, invalid input, etc.)2- Conflicts detected (similar memories found)
Recency Scoring
Search results can be weighted by recency using the --recency flag or VIPUNE_RECENCY_WEIGHT config:
# Increase recency bias (recent memories rank higher)
# Pure semantic similarity (no recency bias)
The final score combines semantic similarity and recency time decay:
score = (1 - recency_weight) * similarity + recency_weight * time_score- Default balance: 70% semantic, 30% recency
License
Apache-2.0 © Janni Turunen