The default persistent semantic memory engine for Perseus. Built in Rust with SQLite + FTS5 — providing zero API keys, zero embeddings, sub-millisecond keyword search, and native Model Context Protocol (MCP) compatibility.
Mimir introduces the Bring Your Own Memory (BYOM) architectural design pattern. Instead of locking agent state, context history, and learned preferences inside proprietary developer SDKs or isolated sessions, Mimir decouples semantic memory into a lightweight, portable database.
Point your Mimir database path to a folder synced by Syncthing, Nextcloud, or Dropbox. SQLite's ACID-compliant architecture combined with file locking allows secure, multi-machine memory propagation:
Point local and remote runtimes at the identical SQLite backend. All container workspaces share one cohesive recollection.
All of your memories are stored in a simple, compact mimir.db database file. Back it up, sync it, or host it on your local NAS.
Mimir proves that for developer context, keyword search with BM25 ranking is 100x faster, incredibly reliable, and completely free. Fully compliant with the Model Context Protocol (MCP), it exposes semantic memory reading and writing directly as system tools.
FTS5 indexing with porter stemming. Words like testing, tested, and tests map to the identical stem, ensuring high-relevance search matches.
FTS5 MATCH treats multi-word strings as exact phrases. Mimir automatically sanitizes input and falls back to SQL LIKE operators for partial matches.
insight), and an importance rating.
# Run the one-shot bootstrap installation
curl -sSL https://raw.githubusercontent.com/tcconnally/mimir/main/scripts/bootstrap.sh | bash
# Or build from source
git clone https://github.com/tcconnally/mimir.git ~/.mimir
cd ~/.mimir && cargo build --release
cp target/release/mimir ~/.local/bin/mimir
# In your workspace .perseus/config.yaml:
mimir:
enabled: true
transport: "stdio"
command: ["mimir", "--db", "~/.mimir/data/mimir.db"]
timeout_s: 10.0
merge_strategy: "local_first"
fallback_to_local: true
circuit_breaker:
threshold: 3
cooldown: 120
retry_policy:
max_attempts: 3
backoff_base: 1.5