Code release for the paper Streaming Memory Benchmark: Stage-Level Diagnosis with Evidence Dependency Control, published at the Lifelong Agent Workshop @ ICLR 2026.
StreamMemBench evaluates memory systems in streaming interaction settings where evidence arrives episode by episode and must be formed, managed, retrieved, and applied later to answer queries.
This public repository focuses on the benchmark runner, protocol implementations, dataset exporters for bundled datasets, and the local adapters that are currently intended to be exercised from this codebase.
| Protocol | What it measures |
|---|---|
Protocol-F |
Formation quality: whether relevant evidence is extracted and stored after each episode |
Protocol-M |
Management quality: storage usage and management efficiency |
Protocol-R |
Retrieval quality: whether relevant memories are returned when queried |
Protocol-A |
Application quality: end-to-end answer accuracy using the system's retrieved memories |
Datasets with repo-local streaming exporters:
locomopersonamem
Adapters documented for the public release:
llm_baselinememos_localmem0_localmemoryos_localevermemos
Runtime notes:
llm_baselineuses the benchmark code in this repository, but its current LLM wrapper depends on EverOSmemory_layermodules.mem0_localrequires themem0aipackage in the active Python environment.memos_localrequires thememosruntime in the active Python environment.memoryos_localrequires thememoryosruntime in the active Python environment.evermemosdepends on EverMemOS runtime modules such asmemory_layer,api_specs, andcommon_utils, which are not vendored in this public release.
- Python
3.10+ - Local copies of the dataset files you plan to use
- API access for the LLM-backed evaluation paths you want to run
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtThis installs the core benchmark dependencies only. Optional adapter runtimes are not fully vendored or pinned in requirements.txt.
Copy .env.example to .env.
You do not need to fill every variable.
Minimal configuration for most bundled runs:
LLM_API_KEY
Common optional settings:
LLM_BASE_URLLLM_MODELLLM_PROVIDERSTREAMING_DATA_ROOT
If you plan to use local external memory-system runtimes, the relevant path variables are documented in .env.example.
Several local adapters rely on upstream repositories that are not vendored here.
| Adapter | Upstream source | Typical setup |
|---|---|---|
llm_baseline |
EverMind-AI/EverOS |
clone EverOS and set EVERMEMOS_SRC=<EverOS>/src, or otherwise make memory_layer importable |
evermemos |
EverMind-AI/EverOS |
clone EverOS and set EVERMEMOS_SRC=<EverOS>/src |
memos_local |
MemTensor/MemOS |
install the MemOS package, or clone the repo and set MEMOS_SRC=<MemOS>/src |
memoryos_local |
BAI-LAB/MemoryOS |
install the package, or point MEMORYOS_SRC at the upstream package path used by your checkout |
mem0_local |
mem0ai/mem0 |
install mem0ai, or clone the repo and install it in editable mode |
Example clone commands:
git clone https://github.com/EverMind-AI/EverOS
git clone https://github.com/MemTensor/MemOS
git clone https://github.com/BAI-LAB/MemoryOS
git clone https://github.com/mem0ai/mem0This repository does not redistribute benchmark dataset files.
Expected local paths if you use the repository-relative layout:
data/locomo/locomo10.jsondata/personamem_32k_locomo_style_v3.json
Alternative ways to point the benchmark to local data:
- pass
--data /absolute/path/to/file.json - set
STREAMING_DATA_ROOTfor LoCoMo and PersonaMem
See data/README.md for the expected filenames and resolution order.
Minimal example without LLM judging:
python run_streaming_eval.py \
--dataset locomo \
--adapter llm_baseline \
--data /absolute/path/to/locomo10.json \
--max-episodes 1 \
--no-llm-judgepython run_streaming_eval.py \
--dataset locomo \
--adapter mem0_local \
--data /absolute/path/to/locomo10.json \
--max-episodes 1 \
--no-llm-judgeThe local adapters require their corresponding upstream runtimes to be installed separately and made importable in the active environment.
python scripts/build_streaming_dataset.py \
--dataset custom \
--data /absolute/path/to/your_data.json \
--output ./output/custom_streaming \
--sample-index 0python scripts/dataset_ui_server.py --port 8765The UI writes session artifacts under output/ui_sessions/<timestamp>/, which are ignored by git.
| Task | Command |
|---|---|
| Interactive evaluation | ./run_eval.sh |
| Single evaluation | ./run_eval_easy.sh <adapter> <dataset> <episodes> |
| Evaluate multiple adapters | ./run_eval_loop.sh <dataset> <episodes> [adapter...] |
| Evaluate a UI-generated session | ./scripts/run_eval.sh <session_dir> [adapter] [episodes] |
These scripts resolve the repository root dynamically and do not depend on machine-specific checkout paths.
run_streaming_eval.py— main streaming evaluation entry pointevaluation/streaming/— streaming protocols, adapters, runner, and management logicevaluation/src/— shared evaluators and adapter implementationsdata_construction/— dataset loaders, exporters, and streaming construction pipelinescripts/build_streaming_dataset.py— CLI tool for dataset conversion and exportscripts/dataset_ui_server.py— local UI for authoring and inspecting datasetsdata/— documentation for expected local dataset filenamesdemo/— static assets used by the dataset UI
The public repository excludes:
- local
.envfiles and API keys - runtime outputs under
output/ - private or third-party dataset files unless redistribution rights are confirmed
- internal agent-instruction files and internal documentation that are not part of the public code release
This repository is a code release, not a fully self-contained artifact. The baseline path is bundled; several local adapter paths depend on separately installed upstream systems.
Current repository provenance:
- public git remote:
https://github.com/landian60/StreamMemBench - local adapter integrations currently reference upstream projects such as EverOS, MemOS, MemoryOS, and mem0, which should be obtained from their respective upstream repositories if you want to run those paths
If you use StreamMemBench in academic work, please cite the workshop paper.
BibTeX is provided in CITATION.bib and repeated here for convenience:
@inproceedings{liu2026streaming,
title={Streaming Memory Benchmark: Stage-Level Diagnosis with Evidence Dependency Control},
author={Liu, Guanming and Yin, Haoran and Li, Tianchen and Yan, Sikuan and Wang, Hongru and Chen, Baian and Ma, Xiaoteng},
booktitle={Lifelong Agent Workshop at ICLR 2026},
year={2026}
}This project is licensed under the MIT License.