june-bench
A pip-installable, reproducible benchmark suite for memory / QA systems — June + pluggable competitors — over LoCoMo, LongMemEval, HotpotQA/2Wiki/MuSiQue, and FinanceBench, with the same data and the same scorer.
pip install june-bench
june-bench list
june-bench run --system echo --dataset smoke --split smoke # offline, no key, no download
Reproduce the June vs Cognee head-to-head
One command runs both systems over the same HotpotQA open-pool, the same answer model, and the same judge, and prints a side-by-side with the metered API cost:
pip install "june-bench[cognee,june-api]" # bundles cognee + fastembed
june-bench reproduce-h2h --key <YOUR_ACCESS_KEY> --questions 100
- Access key — June's endpoint is hardware-limited (not yet funded), so runs are key-gated. Request one at access@januraine.ai; the reply includes your key and this exact command.
- Same-embedder by default — Cognee automatically embeds with
bge-large-en-v1.5, the commodity open model June's dense lane uses, so it's a same-embedder matched run out of the box (nothing to export). This embedder is a disclosed benchmark parameter, not June's moat; pass--embedder <id>to swap it. - You bring an OpenRouter key (prompted) — it pays for both systems' gpt-4o answers (~$21 for the chain-of-thought tier at n=100); the host never holds or pays for it.
- Cognee runs locally (needs RAM + a one-time ~1.3 GB fastembed download); June answers over its endpoint. The command batches the pool upload, blocks the $90 Opus-on-Cognee path, and meters real cost.
june-bench reproduce runs the June-only HotpotQA number the same way; reproduce-retrieval scores
June's recall@k/nDCG/MRR. All three are plain-language and need no JUNE_BENCH_* env vars.
A benchmark is run(system, dataset) → records → score. Two typed ports are the only extension
points:
System— the thing benchmarked.JuneApiSystem(default; a thin HTTP client to June's/v1/answer, so no June source is shipped),JuneLocalSystem([june-local]extra; a source-protected compiled wheel),CogneeSystem([cognee]extra), or any future system as one adapter.Dataset— what it runs on. The four benchmarks behind a registry.
The scorer is the canonical SQuAD/HotpotQA EM/F1 + selective-accuracy/coverage/cost — Cognee-comparable. Tiny smoke fixtures ship in the wheel (offline wiring proof); full splits are fetched, sha-verified, from a pinned release. No score is ever baked into the package — every result row records dataset + scorer + system + model + cost, so a published number is reproducible by a stranger, with the exact command above.
Honest-measurement notes
Both systems get the same documents, questions, gold answers, scorer, and embedder. Databases are reset before runs so results are never contaminated by prior state. Costs are measured from provider billing deltas, not estimated.
Protocol notes (read before comparing numbers)
june-bench runs a matched-pair protocol: identical evidence pool, answer model, and judge for every system, scored with EM/F1 plus a fixed LLM judge. Two deliberate differences from the official benchmark settings: the default mode pools QA over the corpus (the official LoCoMo/LongMemEval settings are per-conversation), and default runs use 100-question slices. This makes results directly comparable between systems run here — and NOT comparable to published leaderboard numbers, which use different protocols. Compare systems, not leaderboards.
Note on difficulty: pooling is the harder direction. The official settings give each question its own haystack (e.g. ~40 sessions in LongMemEval_S); the pool is the union of every conversation in the run, so each question faces strictly more distractors — including cross-conversation confusables the official design never tests. Both systems face the same pool.
Dataset licenses
Full splits are fetched from their official sources, sha-verified (see june-bench fetch). The small
bundled reproduce/smoke fixtures are subsets of HotpotQA (CC BY-SA 4.0), LongMemEval (MIT),
LoCoMo (CC BY-NC 4.0), and FinanceBench (CC BY-NC 4.0) — see DATA_LICENSES.md for attribution
and modification notes.
Links
- Junê: https://june.januraine.ai
- Published results: https://june.januraine.ai (benchmarks section)
- Releases (desktop apps): https://github.com/Junemind/June_releases
Serving platform matters (measured, July 2026)
The answer model's serving platform is part of the experiment, and June is the system honest enough to show it. June answers only what its evidence supports and refuses the rest — it does not gamble. An aggregator (OpenRouter) routes each request to an unpinned, changing provider mix, and when that serving drifts conservative, June's honest refusals rise; guess-style systems have no refusal channel, so the same drift hides inside silently-changed guesses instead.
Measured on an identical engine and identical questions (2026-07-27):
| serving | gpt-4o | claude-opus-4-8 |
|---|---|---|
| via OpenRouter (aggregator) | 45–49 / 100 right-per-asked | 55 / 100 |
| served DIRECT (vendor API) | 62 / 100 | 71–72 / 100 |
Use OpenRouter for one-key convenience and real-time cost metering. For accuracy-representative
or publishable numbers, choose a direct platform in the menu — every result stamps the
platform it ran on (As-run:), so numbers from different serving paths are never conflated.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file june_bench-0.1.2.tar.gz.
File metadata
- Download URL: june_bench-0.1.2.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ce33b9467511706cd17d1fd77fbcc849a5b18f68a55672248c90088ac3b3750
|
|
| MD5 |
d9cd51b55c0a849c23950741789a4c8b
|
|
| BLAKE2b-256 |
91865cf198acafdc16863e25804161e4e1dded7fa151deeabf2a5deff99dbe37
|
Provenance
The following attestation bundles were made for june_bench-0.1.2.tar.gz:
Publisher:
publish-bench.yml on Junemind/june-brain
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
june_bench-0.1.2.tar.gz -
Subject digest:
4ce33b9467511706cd17d1fd77fbcc849a5b18f68a55672248c90088ac3b3750 - Sigstore transparency entry: 2281412593
- Sigstore integration time:
-
Permalink:
Junemind/june-brain@d3a2cf2df5a490989384cb1abf5f516315e855c7 -
Branch / Tag:
refs/tags/bench-v0.1.2 - Owner: https://github.com/Junemind
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-bench.yml@d3a2cf2df5a490989384cb1abf5f516315e855c7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file june_bench-0.1.2-py3-none-any.whl.
File metadata
- Download URL: june_bench-0.1.2-py3-none-any.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac6e99c9d265906322a850e22194d5b7aaef6500d5ce706036e74283707c0435
|
|
| MD5 |
277091a7660a869aa6bb3da181c2382f
|
|
| BLAKE2b-256 |
85c427c211545072eac0c9b047526f5ccf9dce11f971155d1b1df04da3c49de5
|
Provenance
The following attestation bundles were made for june_bench-0.1.2-py3-none-any.whl:
Publisher:
publish-bench.yml on Junemind/june-brain
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
june_bench-0.1.2-py3-none-any.whl -
Subject digest:
ac6e99c9d265906322a850e22194d5b7aaef6500d5ce706036e74283707c0435 - Sigstore transparency entry: 2281413079
- Sigstore integration time:
-
Permalink:
Junemind/june-brain@d3a2cf2df5a490989384cb1abf5f516315e855c7 -
Branch / Tag:
refs/tags/bench-v0.1.2 - Owner: https://github.com/Junemind
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-bench.yml@d3a2cf2df5a490989384cb1abf5f516315e855c7 -
Trigger Event:
push
-
Statement type: