v0.2.8
Release Notes for v0.2.8
This release adds OKF (Open Knowledge Format) export/migrate/sync support for portable, human-readable memory bundles, a VoltAgent TypeScript SDK integration, several new benchmark suites (Memanto vs. Mem0, adversarial resilience, multi-adapter retrieval), and a large batch of temporal recall correctness fixes covering TTL expiry, timezone-aware timestamps, tag filters, and limit validation.
New Features
-
OKF export / migrate / sync (
memanto/app/services/okf_export_service.py,
memanto/cli/migrate/okf_loader.py,memanto/cli/commands/{memory_mgmt,migrate}.py)- New
--okfflag onmemanto memory export/memanto memory syncwrites
an Open Knowledge Format v0.1
bundle: one markdown file per memory (or a stacked file per type once a
type exceeds a size threshold), YAML frontmatter, grouped by memory type. - Memanto-only fields (id, confidence, provenance, source, status) are
preserved under a namespacedx_memantofrontmatter block so
Memanto → OKF → Memanto round-trips are lossless; other OKF consumers
ignore the unknown keys. memanto migrategains an OKF source:memanto migrate <agent> --okf <path>
imports an OKF bundle back into an agent, alongside the existing
Mem0/Letta/Supermemory sources.
- New
-
VoltAgent TypeScript SDK integration (
sdks/typescript/src/integrations/voltagent.ts)- New
@voltagent/coreintegration mirroring the existing AI SDK / Mastra /
OpenAI integrations, with its own test suite and dependency wiring.
- New
-
New benchmark examples (
examples/benchmarks/)memanto-vs-mem0: live head-to-head harness with pluggable adapters,
an evaluator, dashboard, and reporter.memanto-vs-mem0-persona: shifting-persona/temporal-preference retention
benchmark (5 sessions, 22 turns, 7 contradictions).temporal-memory-showdown: dedicated timeline/temporal-amnesia benchmark
with its own metrics and dataset.submission_freq1062: multi-adapter raw-retrieval benchmark (Mem0, Letta,
Supermemory, Cognee, Zep/Graphiti, vector baseline) against LoCoMo and
MemoryAgentBench datasets.- Adversarial memory resilience benchmark.
Improvements
-
Temporal recall correctness (
memanto/app/services/memory_read_service.py,
memanto/app/utils/temporal_helpers.py,memanto/app/routes/memory.py)- Large batch of fixes to the recall/
as-of/changed-sincetemporal paths:- Tag filters are now actually applied on temporal recall (
tagswas
accepted but silently dropped). - Date-only
as-ofqueries (e.g.2026-06-01) now include the full day
instead of being treated as midnight. - Malformed/unparseable timestamps are now skipped instead of raising
during temporal filtering. changed-sincesorting no longer breaks on memories with a null
updated_at.- Delete-and-recreate updates that briefly expose both the old and new
document with the same id now resolve to the newest version by
timestamp (previously could return the stale duplicate). - The candidate pool fetched from Moorcheh is now widened when
post-retrieval filters (tags, type, temporal bounds) are active, so
filtering no longer starves the result set below the requested limit. - Temporal recall limits are now validated before hitting the backend and
capped to sane defaults; boolean and non-positive limits are rejected;
duplicate recall-limit validation logic was consolidated into one shared
helper.
- Tag filters are now actually applied on temporal recall (
- Session expiry: session info now handles timezone-aware expiry
timestamps consistently, fixing spurious "session expired" states.
- Large batch of fixes to the recall/
-
LangGraph integration (
integrations/langgraph/langgraph_memanto/{nodes,tools}.py)- Refined recall/remember node behavior; expanded test coverage
(tests/test_nodes.py).
- Refined recall/remember node behavior; expanded test coverage
Tests
- New
tests/test_okf.py,tests/test_memory_read_as_of.py,
tests/test_memory_read_temporal_recall.py, and substantial expansion of
tests/test_temporal_helpers.py,tests/test_api.py,tests/test_cli.py,
andtests/test_unit.pycovering every temporal-recall fix above plus OKF
round-tripping.
Full Changelog
Full Changelog: v0.2.7...v0.2.8