Skip to content

Releases: CloudLLM-ai/mentisdb

MentisDB 0.10.1.46

05 Jun 15:11

Choose a tag to compare

MentisDB 0.10.1.46 — Built-in Bearer Token Auth, TLS Cert CLI, and Search-First Discipline

This release is a security and operational milestone: built-in bearer-token authentication for remote MCP servers,
a mentisdb cert CLI for TLS certificate management, and a search-first discipline
baked into the agent skill file. Together these changes make it practical to run MentisDB on a non-loopback interface —
the missing piece for production HTTPS MCP / REST deployments.

Bearer Token Authentication (Headline Feature)

Set MENTISDB_BEARER_TOKEN_ACCESS=true and every Streamable HTTP MCP and legacy HTTP MCP route now requires
Authorization: Bearer <token>. Tokens are stored as SHA-256 hashes only — never plaintext.
This is the prerequisite for any non-loopback deployment of the HTTPS MCP and REST surfaces.

Tokens can be global (access every chain + server-wide tools like mentisdb_list_chains) or
chain-scoped (restricted to an explicit chain set). The new CLI makes issuance explicit:

# Global token
mentisdb bearertoken create --global my-global-token

# Chain-scoped token (one or more chains)
mentisdb bearertoken create --chain chain-a --chain chain-b my-scoped-token

# List / revoke
mentisdb bearertoken list --global
mentisdb bearertoken remove my-global-token

Dashboard: Bearer Tokens Page + Settings Enhancements

A new Bearer Tokens page joins the header navigation (Chains | Agents | Skills | Bearer Tokens | Settings).
It exposes the feature toggle, alias input, Global/Chains radio controls, a multi-chain selector table,
one-time token display with copy-to-clipboard, a token table, and revoke actions.

The Settings page now edits MENTISDB_BEARER_TOKEN_ACCESS and includes a
Restart Daemon button for environment changes that require a restart.

mentisdb cert — TLS Certificate Management

A new subcommand mints self-signed TLS certificates for the HTTPS MCP / REST surfaces and the web dashboard.
It writes MENTISDB_TLS_CERT / MENTISDB_TLS_KEY into the local .env so the next daemon start picks them up automatically.

mentisdb cert                          # factory-default SAN set
mentisdb cert 192.0.2.10               # add IP SAN
mentisdb cert my.mentisdb.com           # add DNS SAN
mentisdb cert --force                   # regenerate existing
mentisdb cert --reset                   # delete + fresh factory cert
mentisdb cert --out-dir /custom/path
mentisdb cert --env-file /path/.env
mentisdb cert --no-env-update           # print export lines only

The standard SAN set (my.mentisdb.com, localhost, 127.0.0.1, every unicast interface IP, plus MENTISDB_BIND_HOST when it's a DNS name) is always included; the user-supplied host is appended.
The command prints the SAN list and SHA-256 fingerprint for openssl x509 -fingerprint -sha256 cross-check and reminds you to restart the daemon.

Library TLS API: ensure_tls_cert_with_sans

The cert logic is now exposed as a library function:

pub fn ensure_tls_cert_with_sans(
    cert: &Path,
    key: &Path,
    extra_sans: Vec<SanType>,
    overwrite: bool,
) -> Result<TlsCertArtifacts, String>

pub struct TlsCertArtifacts {
    pub cert_path: PathBuf,
    pub key_path: PathBuf,
    pub sans: Vec<String>,           // dns:..., ip:...
    pub sha256_fingerprint: String,
}

The existing ensure_tls_cert is now a one-line wrapper (overwrite=false, no extra SANs), so no behaviour change for existing callers.
The sans field is extracted from the freshly written cert with x509-parser and rendered in the same dns:<name> / ip:<addr> style.

Comprehensive --help

mentisdb --help now prints both the daemon help AND the full CLI subcommand help in one view.
Subcommand-specific help works as expected: mentisdb cert --help, mentisdb setup --help, mentisdb wizard --help, etc.

Search-First Discipline in MENTISDB_SKILL.md

A prominent 🔎 SEARCH BEFORE YOU WRITE section now sits between MANDATORY STARTUP and WRITE TRIGGERS.
The routine: recent_contextranked_search → tighten with tags_any / thought_types / concepts_any / since.
Three decisions per append: do I need to write at all? do I need to update a prior lesson? which 1–3 neighbours to link via typed edges?
A new "Blind appends" anti-pattern is documented. Search-first is the upstream half of the dedup discipline: 5–15 seconds of search before write is the single highest-leverage habit for keeping ranked_search useful as chains grow past a few hundred thoughts.

--headless Top-Level Flag + TUI Auto-Headless Fix

mentisdb --headless starts the HTTP/MCP/REST servers without the interactive terminal UI, matching the long-standing --mode http --headless invocation the stdio proxy uses internally.

The daemon now auto-promotes to headless HTTP mode when stdin or stdout is not a TTY. Previously the TUI main loop was entered with an already-EOF stdin; crossterm's event::poll(100ms) returned Ok(false) immediately and the loop re-rendered the full ratatui UI on every iteration — pinning one CPU core at 100% on a 2-core cloud VM. The new tui_can_run() guard in src/tui.rs detects the non-TTY case at startup and delegates to run_headless(). Affects every non-interactive launch: docker run without -t, nohup mentisdb &, systemd without StandardInput=tty, cron, and the SSH-disconnect scenario.

Restore Idempotency + Chain-Scope Safety

  • Local mentisdb-registry.json is merged, not replaced
  • Verified same-chain suffixes are appended
  • Divergent same-name chains imported under renamed keys
  • --overwrite only allows same-path chain file replacement when a safe suffix merge is not possible

Other Changes

  • Token secrets now use mentisdb_ prefix (was mdb_live_)
  • Refactored cert CLI: collapsed duplicated writeln! blocks into named helpers; help text single source of truth
  • Promoted default_tls_dir to pub in server.rs, removed duplicate helper
  • Docs: new "TLS Certificates" section in README.md with six worked examples, options table, openssl s_client cross-check; docs.mentisdb.com updated

Upgrade

cargo install mentisdb --force

Links

MentisDB 0.9.9.45

30 May 16:11

Choose a tag to compare

MentisDB 0.9.9 — Thesaurus on by Default

The big advance in 0.9.9 is that the static thesaurus (≈900 headwords + 300+ irregular verb lemmas) now applies automatically by default to every ranked search query — REST, MCP, dashboard, CLI, and the official benchmarks.

No extra parameters. No client changes. Just better recall on vocabulary mismatch and verb forms out of the box.

The Numbers

Benchmark Metric Result Notes
LoCoMo (10-persona) R@10 72.6% Matches WHITEPAPER target; +27.7pp vs weak-vector baseline
LongMemEval R@5 66.8% Real fastembed-minilm vectors + thesaurus active (no reranking)

The thesaurus was validated on real data with proper embeddings. LoCoMo multi-hop and vocabulary-mismatch queries see the expected lift. The internal research harness previously showed +31% NDCG; that improvement is now live for everyone.

How It Works

A small helper apply_thesaurus_if_text() is called automatically after every text-bearing RankedSearchQuery construction in the server (ranked search, federated search, and context bundles). It runs thesaurus::expand_text() (the same embedded data from 0.9.8) and wires the result through the existing with_synonyms(..., 0.7) path.

The fast path in the lexical scorer still fires when there are no expansions, so baseline latency is unaffected.

Upgrade

cargo install mentisdb --force (or rebuild from source with --features local-embeddings for full vector support).

Existing clients and prompts continue to work unchanged — they just get better results.


Full blog post: https://docs.mentisdb.com/mentisdb-0.9.9.html
Whitepaper (PDF): https://github.com/CloudLLM-ai/mentisdb/blob/master/docs/pdf/WHITEPAPER.pdf

MentisDB 0.9.8.44

07 May 01:29

Choose a tag to compare

MentisDB 0.9.8.44 — Binary Rename, Dashboard Settings, and Dotenvy

Breaking Change

The installed binary is now mentisdb, not mentisdbd. All documentation, CI artifacts, install scripts, and TUI references have been updated. cargo install mentisdb still installs the crate, but the resulting binary is mentisdb (no trailing d).

What's New

  • Dashboard chain sizes — The Chains table now shows a "Size" column with human-readable on-disk storage (B, KB, MB, GB, TB, PB). A summary bar shows total size, thoughts, agents, and per-index totals across all chains.
  • Dashboard Settings tab — A new Settings page lists all 18 MENTISDB_* environment variables in a table with type-aware controls (checkbox for booleans, number input for ports, text for strings). Each row shows current value, default, and description. "Reset to Default" per row. "Apply Settings" persists changes to a .env file and hot-reloads auto_flush immediately. Network and storage changes show a restart-required flag.
  • Dotenvy support — mentisdb loads environment variables from a .env file in the current working directory at startup. Shell env vars take precedence. The file is silently ignored when absent, so you can commit a template .env.example and keep real values in .gitignore-d .env files.
  • TUI improvements — The Storage Location column now shows chain file size in brackets (e.g. [10 KB] /path/to/chain.tcbin). The running status line now includes the daemon PID.

Benchmarks

  • LoCoMo R@10 = 71.80% (single 75.80%, multi 57.20%)

Verification

  • cargo fmt — Passed
  • cargo clippy --all-features -- -D warnings — Passed
  • cargo test --all-features — Passed (257 tests, 80 doc-tests)
  • GitHub CI — Passed (x86_64/aarch64 macOS, x86_64/aarch64 Linux, Windows)

Upgrade

cargo install mentisdb --force

No manual migration is required. Existing chain files, skill registries, and agent identities continue to work unchanged. Scripts that referenced mentisdbd should be updated to mentisdb.

MentisDB 0.9.7.43

30 Apr 22:37

Choose a tag to compare

MentisDB 0.9.7.43 - Dashboard Skill Editing and Stdio Reliability

MentisDB 0.9.7.43 makes the web dashboard a safer place to maintain skills and tightens stdio mode for strict MCP clients.

Highlights

  • Dashboard skill editing is available from both the Skills table and each skill detail page.
  • Saving an edit creates a new immutable skill version through the existing upload path.
  • Skill detail editing now defaults to the latest version and edits the version currently being viewed.
  • Rendered skill Markdown links are sanitized and protocol-allowlisted to prevent scriptable stored content.
  • Stdio proxy notification handling and background headless daemon launch are more reliable for Claude Desktop and other MCP clients.
  • The agent primer now consistently says use mentisdb as your memory system.

Verification

Gate Result
cargo fmt -- --check Passed
cargo clippy --all-features -- -D warnings Passed
cargo test --all-features Passed, including 80 doc-tests with 4 ignored
Benchmarks Skipped for this release by operator request; no benchmark numbers were changed.

Upgrade

cargo install mentisdb --force

No manual migration is required.

MentisDB 0.9.6.42

28 Apr 17:00

Choose a tag to compare

MentisDB 0.9.6.42 — SSE, bind_host, Agent-Scoped Context

MCP SSE Streaming

start_mcp_server and start_https_mcp_server now return (ServerHandle, SseBroadcaster) tuples. The GET endpoint serves text/event-stream with live MCP protocol events — every tool call result and error is broadcast in real time. cloudllm_mcp bumped to 0.3.0.

  • Dashboard widgets can subscribe to live thought events without polling
  • Agent frameworks with SSE support (Hermes, OpenClaw) get real-time protocol visibility
  • Any SSE subscriber sees every event without webhook registration

bind_host on standard_mcp_router

The bind_host parameter (via MENTISDB_BIND_HOST env var, default 127.0.0.1) allows binding to 0.0.0.0 for Docker containers, multi-homed machines, and LAN deployments. Origin validation is skipped on unspecified addresses.

Agent-Scoped Recent Context

mentisdb_recent_context now accepts an optional agent_id parameter. When set, it returns the last N thoughts from that agent specifically — not the chain's last N overall. Multi-agent chains no longer bury specialist context under other agents' activity.

Upgrade

cargo install mentisdb --force

No migration required. SSE is enabled by default.

MentisDB 0.9.5.41 — MCP 2025-11-25, Hermes Native Integration

26 Apr 17:15

Choose a tag to compare

MCP 2025-11-25 Protocol Support

The cloudllm_mcp dependency has been upgraded from 0.1.0 to 0.2.1, bringing full support for the MCP 2025-11-25 protocol revision. The initialize handshake now negotiates "2025-11-25" instead of "2025-06-18".

Streamable HTTP servers now validate Origin headers for security on bound addresses, and transparently skip origin validation on unspecified addresses (0.0.0.0, ::, ::1) for compatibility with tools and SDKs that don't send Origin headers during the MCP handshake.

Hermes Native MentisDB MemoryProvider

Nous Research's Hermes agent now ships a native MentisDB MemoryProvider — the first third-party agent to integrate directly with MentisDB without an intermediary MCP bridge. The Hermes team implemented their own memory plugin against the MentisDB API for deeper integration into the Hermes agent lifecycle.

This validates the vision of an open, agent-agnostic memory layer. Any agent framework can follow the same pattern: implement a memory plugin against the standard MCP tools MentisDB exposes, and get durable semantic memory that survives context resets, model swaps, and session boundaries.

Dashboard Fix

The "+Bootstrap New Chain" and "↺ Refresh" buttons on the dashboard Chains page stopped working after a refactor in the previous release. The root cause was a one-shot _chainBootstrapWired guard that attached click handlers only once, but renderChainList() recreates the button DOM elements on every call. Fixed by re-attaching header button listeners on every render call while keeping the guard for static modal elements.

Upgrade

cargo install mentisdb --force

No migration required. Existing chains, skills, and agent registries are fully compatible.

MentisDB 0.9.4.40

23 Apr 19:00

Choose a tag to compare

MentisDB 0.9.4.40 — 99% Faster Ranked Search, Dashboard Instant Load, Read Sounds

Incremental LexicalIndex

Ranked search queries no longer rebuild the full BM25 index on every call. The LexicalIndex is built once at chain open time and updated incrementally on every append_thought.

Benchmark Before After Improvement
query_ranked_lexical_content ~35.4 ms ~237 µs 99.3%
query_ranked_filtered_lexical ~35.2 ms ~23 µs 99.9%

Dashboard: Instant Agents Page

The Agents page now loads in two phases: a fast skeleton render from the chain registry, followed by parallel per-chain agent fetches that populate each section independently as responses arrive. Eliminates the serial O(chains × thoughts) blocking that made the page unusable with many chains.

Read Sounds

When MENTISDB_THOUGHT_SOUNDS=true, every logged read operation plays a unique 60–150 ms sine-wave chime (2.5–4.5 kHz). Write sounds remain square-wave at 250 Hz–1 kHz. You can tell read from write by ear.

Upgrade

cargo install mentisdb --force

No migration required. The incremental LexicalIndex is transparent — existing chains are indexed once on open and then maintained automatically.

MentisDB 0.9.3.39

18 Apr 20:53

Choose a tag to compare

MentisDB 0.9.3.39 — Full TUI with Drag-to-Copy, Seamless Startup, and Live Log Streaming

Full post: https://github.com/CloudLLM-ai/mentisdb/blob/master/docs/mentisdb-0.9.3.39.html

0.9.3.39 ships the ratatui terminal UI that was always planned for mentisdbd: a live three-pane dashboard with real-time log streaming, a tabbed registry for all your chains, agents, and skills, and a one-click agent primer. Along the way, we fixed a collection of bugs that made the TUI unreliable — a silent startup crash, a flash on startup, logs frozen at the oldest entry, and clipboard copy that silently did nothing. Every one of those is gone.

Select any text, get it in your clipboard. Drag the mouse across any content in the TUI — log lines, storage paths, chain keys, endpoint URLs, config values, the primer paste line — and release. The selected rectangle is read directly from ratatui's render buffer, written to the clipboard via arboard and OSC 52, and confirmed with a green toast. No pane restrictions, no key chords required.

The TUI at a Glance

Run mentisdbd in an interactive terminal and you get a full alternate-screen dashboard:

  • Top-left — ASCII banner (MENTIS in green, DB in cyan), version, daemon status, and configuration summary.
  • Top-right — live MCP, REST, HTTPS, and dashboard endpoint addresses with TLS status.
  • Prime panel — the single paste line agents need to bootstrap themselves. Press c to copy it instantly.
  • Tables — tabbed view of Chains, Agents, and Skills; keyboard arrows navigate rows, left/right arrows switch tabs, c copies the selected row's key.
  • Logs — live event log, newest entries at the top, with keyboard scroll and c to copy visible lines.
  • Hint bar — contextual keyboard shortcuts for whichever pane is focused.

All panes have scrollbars and respond to Tab/Shift-Tab for keyboard focus cycling. Run in background (nohup mentisdbd &) and you get the same daemon with no TUI overhead.

Drag-to-Select Copy — How It Works

Getting this right required solving a non-obvious ratatui timing problem. The naive approach — read terminal.current_buffer_mut() after terminal.draw() returns — silently fails every time. After draw(), ratatui swaps its internal buffer indices: the "current" buffer now points to the cleared, reset buffer prepared for the next frame. The just-rendered content lives in what was the previous buffer, and there is no direct public accessor for it.

The fix: queue the extraction as pending_extract = Some((start, end)) on MouseUp. On the next iteration, inside the terminal.draw() closure, frame.buffer_mut() is the live pre-swap buffer — full of the just-rendered characters. The extraction happens there, the result is stored, and immediately after draw() returns the clipboard write and toast fire.

Clipboard delivery uses two paths simultaneously:

  • arboard — programmatic clipboard via the OS API (NSPasteboard on macOS, X11/Wayland on Linux, Win32 on Windows).
  • OSC 52 — the terminal escape sequence \x1b]52;c;<base64>\x07 written directly to stdout. This instructs the terminal emulator to set the system clipboard, enabling Cmd+C in iTerm2, Terminal.app (macOS 14+), kitty, and WezTerm even while mouse capture is active.

Seamless Single-TUI Lifecycle

Previously the daemon ran two TUI instances: one for startup progress, one for the running state. Between them the alternate screen was exited and re-entered, causing a visible flash that looked like a crash. The daemon now runs exactly one run_tui() call for its entire lifetime. Startup transitions seamlessly from the progress overlay to the fully-populated running view without the terminal flickering.

Startup Crash Overlay

When startup fails — a port conflict, a bad config, a migration error — the previous daemon exited silently, leaving the user nothing to debug. Now a red full-screen overlay shows the error message and keeps the TUI alive with a scrollable log panel. The user reads the error, scrolls to find the relevant log line, and presses q to quit.

Log Auto-Scroll Fix

The log panel renders entries newest-first. Auto-scroll was setting log_scroll = len - 1 — the bottom of the reversed list, which is the oldest entry. New log messages appeared at position 0 (top) but the viewport was pinned to the bottom, making the panel appear frozen even while agents were actively writing to memory. Fixed: auto-scroll now keeps log_scroll = 0, pinned to the newest entry at the top.

Other Improvements

  • Column auto-sizing — chain key and skill name columns sized to the longest entry, no truncation.
  • Accurate startup status — "Checking chains for migrations…" instead of "Running migrations…" when there is nothing to migrate.
  • Clear widget in overlays — background content no longer bleeds through popup borders.
  • First-run wizard — deferred to a separate terminal; a note in the TUI directs users to mentisdbd wizard.
  • Render performancerender_logs no longer allocates an intermediate Vec<&str> on every frame tick.

Upgrade

cargo install mentisdb --force

MentisDB 0.9.2.38 — Smart Stdio MCP & Shared Service State

18 Apr 03:38

Choose a tag to compare

MentisDB 0.9.2.38 — Smart Stdio MCP, Shared Service State, and Reproducible Benchmarks

Released April 17, 2026. Cargo version 0.9.2, git tag 0.9.2.38.

This is a correctness release. Two fixes close long-standing integration gaps that were
easy to miss and expensive to debug: stdio MCP clients no longer need a pre-launched
daemon, and the multi-surface server no longer splits brain across HTTP, HTTPS, MCP, REST,
and the dashboard. Benchmarks are now reproducible bit-identical across full-scale runs.

Highlights

  • Smart stdio MCP mode. Zero pre-flight for Claude Desktop and other stdio MCP clients.
  • Cross-surface state coherency. One MentisDbService shared across every surface booted by start_servers.
  • Reproducible benchmarks. LoCoMo-10P R@10 = 71.9%, LongMemEval R@5 = 66.8%, R@10 = 72.2%, R@20 = 78.0%. Bit-identical across three full-scale runs.
  • Backup and restore. mentisdbd backup / mentisdbd restore with SHA-256 manifest, path-traversal rejection, and interactive conflict prompt.

Smart Stdio MCP Mode

When an MCP client (Claude Desktop, Cursor, or anything that spawns an stdio subprocess)
starts mentisdbd in stdio mode, the process now:

  1. Probes the local daemon's health endpoint.
  2. If a daemon is already running, proxies stdio requests to the HTTP MCP surface so every client sees the same live chain cache.
  3. If not, launches a background daemon (nohup on Unix, start /B on Windows), waits for health, and proxies to it.
  4. If launch fails, falls back to in-process stdio so the client still works.

Claude Desktop users stop fighting MCP bootstrap: one entry in
claude_desktop_config.json pointing at mentisdbd is the whole setup. Multiple stdio
clients observe each other's appends in real time because they share the daemon.

Background: Stdio MCP Mode with Smart Daemon Detection.

Cross-Surface State Coherency in start_servers

Before 0.9.2.38, start_servers constructed each surface — HTTP MCP, HTTP REST, HTTPS
MCP, HTTPS REST, and the dashboard — with its own MentisDbService::new(...). Each
service owned a private DashMap<chain_key, Arc<RwLock<MentisDb>>>, so an append via
REST was invisible to MCP (and vice versa) until the daemon restarted and both services
happened to reload the chain from disk.

The fix is small and surgical: start_servers now constructs one MentisDbService
and shares it across every surface it boots. Single-surface entry points
(start_mcp_server, start_rest_server, start_https_*_server) are unchanged.

Regression test start_servers_shares_state_across_mcp_and_rest pre-warms the MCP
service, appends via REST, and asserts the MCP side immediately sees the new
head_hash, thought_count, and latest_thought.index.

Backup and Restore

Two new subcommands, mentisdbd backup and mentisdbd restore, create and restore
.mbak archives of the full MENTISDB_DIR.

  • SHA-256 manifest for every file; verification before any file is written on restore.
  • Flags: --flush, --include-tls, --overwrite.
  • CLI auto-detects a running daemon and calls POST /v1/admin/flush before reading files.
  • Interactive conflict prompt lists conflicting files when --overwrite is absent; declining exits cleanly with no changes.
  • Restore rejects path-traversal entries (../escape.txt, absolute paths) with InvalidData before extraction.
  • 33 integration tests covering roundtrip, TLS inclusion, idempotent restore, overwrite, corruption detection, manifest round-trip, subdirectory creation.

POST /v1/admin/flush

New REST endpoint iterates every open chain and calls flush() on its
BinaryStorageAdapter. Backup uses it automatically; operators can call it directly
before snapshotting the data directory with an external tool.

Search and Relation Correctness

  • Federated search dedup keeps the higher-scoring duplicate occurrence instead of whichever chain surfaced the UUID first.
  • Relation dedup no longer collapses edges that differ by chain_key, valid_at, or invalid_at; only exact duplicates are removed.
  • Branch ancestor discovery is transitive — branch-aware search walks child to parent to grandparent.
  • Webhook registry persistence uses temp-file-plus-rename; delivery fan-out is bounded by a queue and semaphore so bursty appends no longer spawn unbounded tasks.
  • LoCoMo bench fix: --limit filter now rebuilds session_map after filtering, so evidence from filtered-out personas can't leak back into R@K scoring via neighbor lookups (dev runs only; full-scale was unaffected).

Wizard and Client Fixes

  • Wizard prompts before brew install mcp-remote on macOS (previously silent). brew is tried first, npm is the fallback. Dead check_node_version and detect_brew_mcp_remote helpers removed.
  • When mcp-remote is installed as an absolute executable, the wizard uses it directly without a node wrapper; shebang-based fallback retained for npm scripts.
  • Restore's interactive confirmation actually enables overwrite when the user answers yes (previously silently kept overwrite=false).
  • pymentisdb.context_bundles() decodes typed ContextBundleSeed and ContextBundleHit instead of nesting ContextBundle inside itself. append_thought() uses one canonical ThoughtInput builder. ranked_search() and context_bundles() accept MemoryScope enums directly.
  • LLM memory extraction no longer sends an OpenAI response_format hint — some OpenAI-compatible endpoints rejected the schema. Prompt plus strict JSON validation now preserves provider portability.

Startup: Terminal-Close Warning

mentisdbd prints a yellow warning at startup that closing the terminal stops the
process, followed by OS-specific background-launch guidance:

  • macOS: brew services start mentisdb (launchd) or a nohup one-liner.
  • Linux: systemd user service unit snippet or a nohup one-liner.
  • Windows: schtasks /create one-liner or Start-Process -WindowStyle Hidden.

Benchmarks

Deterministic on 0.9.2.38. Three independent full-scale runs (2026-04-14 and two on
2026-04-17) produced bit-identical scores.

Benchmark Metric Result
LoCoMo 10-persona R@10 71.9%
LongMemEval R@5 66.8%
LongMemEval R@10 72.2%
LongMemEval R@20 78.0%

The retrieval pipeline that produces these numbers is described end-to-end in
Inside MentisDB Ranked Search — One Call, One Pipeline.

WHITEPAPER Refresh

WHITEPAPER.md was
rewritten in academic register with formal definitions (Thought, Chain, BM25, RRF,
Jaccard dedup, temporal validity), a tamper-evidence proof sketch, and a References
section. A LaTeX port (WHITEPAPER.tex) uses amsmath/amsthm/booktabs, and
build-whitepaper.sh ships with macOS and Ubuntu install instructions plus
--open/--clean flags. Benchmark numbers now match the reproducible results; the
previously empty LoCoMo single-hop (75.8%), multi-hop (57.4%), and R@20 (79.1%) cells
are filled in.

Other Fixes and Chore

  • invalid_input_error() / not_found_error() helpers in the server replace four Box::new(io::Error::new(...)) callsites (net -8 lines, identical behavior).
  • Strengthened server-side signature-verification coverage for skill uploads: explicit checks for missing signature fields, unknown signing-key ids, and tampered signatures.
  • README and Rust docs coverage gaps filled for source_episode, entity_type, BranchesFrom, mentisdb_federated_search, mentisdb_extract_memories, mentisdb_list_entity_types, mentisdb_upsert_entity_type (MCP catalog count 37 → 42).
  • docs.mentisdb.com: added Advanced Retrieval, Entity Types & Provenance, Webhook Callbacks, LLM-Extracted Memories, and pymentisdb Python Client sections to user_docs.rs; added LLM-based reranking and Operations & Admin sections to developer_docs.rs.
  • Daemon endpoint catalog and REST rustdocs now include the live router surface (/v1/federated-search, /v1/import-markdown, entity types, chain merge, webhooks, extract-memories, admin flush).
  • mentisdbd --help documents MENTISDB_DASHBOARD_PIN.

Upgrade

cargo install mentisdb --locked --force

Claude Desktop users: you no longer need to pre-launch mentisdbd. Point your MCP
config at the mentisdbd binary in stdio mode and the process will find or start the
daemon itself.

No schema migration. Webhook registrations, backups, and existing chains from 0.9.1.x
carry forward unchanged.

Links

MentisDB 0.9.1 — The 0.9.x Journey: From Competitive Analysis to 74% R@10 on LoCoMo

14 Apr 19:38

Choose a tag to compare

MentisDB 0.9.1 — The 0.9.x Journey: From Competitive Analysis to 74% R@10

Four days after our April 10 competitive analysis, 11 releases later: 74.0% R@10 on the full 10-persona LoCoMo benchmark (1977 queries), every feature gap closed, federated cross-chain search, pymentisdb on PyPI, and a complete competitive update covering Hindsight, Cognee, LangMem, and more.


Benchmark Results

LoCoMo 10-Persona — 1,977 queries across 10 persona × ~197 sessions:

Metric Score
R@10 74.0% (1462/1977)
R@20 80.8%
R@50 88.5%
Single-hop 78.0%
Multi-hop 59.1%
Evaluation time 94s (20.9 q/s)

Near-miss analysis: 44.3% of misses don't appear in top-50 — lexical coverage gap, not a ranking problem.


What We Shipped: 0.8.2 → 0.9.1

In 11 releases, we closed every feature gap from the April 10 competitive analysis:

Core Retrieval Improvements (0.8.2)

  • Temporal Factsvalid_at/invalid_at on thoughts; as_of query parameter for point-in-time retrieval
  • Memory Dedup — Jaccard similarity threshold on append; auto-Supersedes relation for near-duplicates
  • Multi-Level ScopesMemoryScope enum (User, Session, Agent) on thoughts; scoped search filters
  • CLI Toolmentisdb add, search, list, agents, chain subcommands

Search Quality (0.8.6)

  • Reciprocal Rank Fusion (RRF) — opt-in reranking merging lexical + vector + graph signals
  • Memory BranchingBranchesFrom relation; POST /v1/chains/branch for divergent chains
  • Per-Field BM25 DF Cutoffs — document-frequency-based field weighting improves precision
  • Irregular Verb Lemma Expansion — query-time mapping of past tense to base form (~170 mappings)

Custom Ontology (0.8.7)

  • entity_type field — typed entity labels (e.g. "bug_report", "architecture_decision")
  • Per-chain entity type registry — auto-observed and persisted in a sidecar

Episode Provenance + LLM Reranking (0.8.8)

  • source_episode field — full lineage from derived fact to source
  • DerivedFrom relation kind
  • Optional LLM reranking — pluggable cross-encoder reranker interface

0.9.1: The Full-Feature Release

  • Federated Cross-Chain Searchancestor_chain_keys() walks BranchesFrom; ranked search transparently queries ancestor chains
  • Webhooks — HTTP POST callbacks on thought append; mentisdb_register_webhook MCP tool + REST endpoint
  • Opt-in LLM Extraction — GPT-4o (or any OpenAI-compatible endpoint) extracts structured ThoughtInput records from raw text; review-before-append workflow
  • pymentisdb Python Client — full MentisDbClient on PyPI; LangChain MentisDbMemory; typed enums
  • Wizard Brew-First Setup — interactive setup wizard detects Homebrew mcp-remote and writes correct Claude Desktop config automatically

Competitive Position

Feature MentisDB Hindsight Cognee LangMem
Language Rust Python Python Python
Storage Embedded (sled) External (PG) External External
LLM Required No (opt-in) Yes Yes Yes
Local-First Yes No No No
Crypto Integrity Hash chain No No No
Hybrid Retrieval BM25+vec+graph 4-signal RRF vec+graph vec only
Federated Search Yes No No No
Skills/Extensions Yes No No No
Webhooks Yes No No No
Benchmark 74.0% (self) SOTA (indep. verified) N/A N/A

MentisDB is still the only local-first, zero-dependency, cryptographically-integrity-verified semantic memory with built-in hybrid retrieval — in Rust.


What's Next

  1. Multi-hop recall — 19pp gap vs single-hop; entity coreference + deeper graph traversal
  2. Native LangChain storelangchain-mentisdb pip package
  3. Academic benchmark verification — partner with an academic group (Hindsight has Virginia Tech verification)
  4. MentisDB Cloud — managed service for zero-infrastructure deployments

Upgrade

cargo install mentisdb --force

Or download the binary from GitHub Releases.

pip install pymentisdb --upgrade

Full blog post: https://mentisdb.com/docs/mentisdb-0.9.1.html
Competitive analysis (April 2026 update): https://mentisdb.com/docs/competitive-analysis-april-2026.html