Skip to main content

Bench'd Harness

The neutral benchmark harness for AI memory systems. Every score is independently run, cryptographically signed, and verifiable by anyone.

Leaderboard | Docs | Methodology | Submit Results

Quick Start

pip install benchd-harness

# Generate signing keys
benchd keys generate --out ./keys

# Set your LLM API key (for the judge)
export OPENROUTER_API_KEY=sk-or-...

# Run LongMemEval against your MCP-compatible memory system
benchd run -a mcp -b longmemeval-v1 --judge --key ./keys/private.key \
  --adapter-config '{"endpoint": "http://localhost:3000/mcp"}'

# Submit results to the leaderboard
benchd submit ./runs/run_xxx/manifest.signed.json

MCP Systems: Zero-Code Testing

If your memory system exposes an MCP server with ingest and query tools, you don't need to write any adapter code:

benchd run -a mcp -b longmemeval-v1 --judge \
  --adapter-config '{"endpoint": "http://localhost:3000/mcp"}'

The MCP adapter auto-discovers your tools and maps them to Bench'd's interface.

Available Benchmarks

Benchmark Slug Questions What it tests
LongMemEval longmemeval-v1 500 Recall, temporal reasoning, knowledge updates
LoCoMo locomo-v1 1,540 Multi-session conversational memory
Smoke smoke-memory-v0 10 Quick sanity check

Built-in Adapters

Adapter System Install
mcp Any MCP server Built-in
mem0-local Mem0 OSS pip install benchd-harness[mem0]
langchain-memory LangChain pip install benchd-harness[langchain]
llamaindex-memory LlamaIndex pip install benchd-harness[llamaindex]
llm-baseline Raw LLM (no memory) pip install openai
echo Test adapter Built-in

Writing a Custom Adapter

from benchd_harness.adapters.base import BaseAdapter

class MyAdapter(BaseAdapter):
    @property
    def name(self) -> str:
        return "my-system"

    def setup(self) -> None:
        self.client = MyMemoryClient()

    def ingest(self, turns: list[dict]) -> None:
        for turn in turns:
            self.client.add(role=turn["role"], content=turn["content"])

    def recall(self, query: str) -> str:
        return self.client.search(query).text

    def reset(self) -> None:
        self.client.clear()

Register in benchd_harness/adapters/__init__.py and run with benchd run -a my-system.

Commands

Command Description
benchd run Run a benchmark against a memory system
benchd submit Submit signed results to benchd.ai
benchd verify Verify a signed manifest
benchd keys generate Generate Ed25519 signing keys
benchd list List available adapters and benchmarks

Signing & Verification

Every run produces an Ed25519-signed manifest containing all inputs, outputs, scores, and failure traces. Anyone can verify:

benchd verify ./runs/run_xxx/manifest.signed.json

Current Results (May 2026)

# System LongMemEval Status
1 LlamaIndex 59.0% Verified
1 LangChain 59.0% Verified
3 LLM Baseline 57.6% Verified
4 Mem0 OSS 32.4% Verified

Full results at benchd.ai/leaderboard.

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

benchd_harness-0.2.0.tar.gz (67.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

benchd_harness-0.2.0-py3-none-any.whl (87.5 kB view details)

Uploaded Python 3

File details

Details for the file benchd_harness-0.2.0.tar.gz.

File metadata

  • Download URL: benchd_harness-0.2.0.tar.gz
  • Upload date:
  • Size: 67.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for benchd_harness-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9c8b988d36a11825c1330de7b105a96fa583dff2e20e8dc0e05b8244e536f23e
MD5 02c13dcb67ea845a093e6df3155d6e71
BLAKE2b-256 947435099771caffe572c93f1165e191589216d8f598c56e3dee10b3e74cfb35

See more details on using hashes here.

File details

Details for the file benchd_harness-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: benchd_harness-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 87.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for benchd_harness-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ab3738968df77891fa3276549add62c6494dfe70c1a6abe1aee2d2e301707eb7
MD5 2a17ba7084cda4183c732c153e134106
BLAKE2b-256 faaab7a39a72e9d86bc4e0475a24de1ca7e14968f3a3acbc3a8fc492279f85f5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page