v0.2.14
Release Notes for v0.2.14
This release adds a Langfuse integration — a live observability-to-memory bridge (langfuse-memanto) plus a memanto migrate --langfuse import path and a Web UI sync tile — fixes memanto-mcp breaking on MCP SDK 2.0, adds per-client write attribution to MCP tool calls, and closes a couple of install/runtime correctness bugs (loopback client misuse, source-archive version resolution).
New Features
- Langfuse integration (
integrations/langfuse/,memanto/cli/migrate/langfuse_*.py,
memanto/cli/analyze/langfuse_export.py,memanto/app/ui/static/index.html)- New
langfuse-memantopackage:attach(agent_id=...)wires into an
existing Langfuse setup and turns failing/notable spans into durable
Memanto memories live, so lessons from observability data don't have to be
re-learned on every run. Includes aSpanMapperfor translating Langfuse
spans into typed memory candidates and a full handler/config layer. memanto migrate --langfuseadds Langfuse as a fourth migration source
(alongside Mem0, Letta, Supermemory), with its own discovery step,
configurable mapping rules (langfuse_rules.py), and state tracking for
incremental sync.- New Langfuse tile in the Web UI's Migrate/Connect surface, wired
throughui_router.py, for discovering and syncing a Langfuse project
without touching the CLI.
- New
Bug Fixes
-
memanto-mcpbroken on MCP SDK 2.0 (integrations/mcp/pyproject.toml,
integrations/mcp/memanto_mcp/{__init__,server}.py)- The published
memanto-mcp0.1.1 declared an unboundedmcp[cli]>=1.2.0
dependency; MCP SDK 2.0 removedmcp.server.fastmcp(FastMCPmoved to
mcp.server.mcpserver.MCPServer), so a fresh install silently resolved to
a version the server couldn't import and failed to start. Pinned themcp
dependency to stay below 2.0 and bumped tomemanto-mcp0.1.2.
- The published
-
Per-client write attribution in MCP (
integrations/mcp/memanto_mcp/tools.py)- MCP-written memories now default
sourceto the connected client's
identity (e.g.cursor,codex,claude-ai) instead of a single generic
value, falling back tomcp-agentwhen the transport carries no client
identity — reusing core's ownSOURCE_MAX_LENGTH/SOURCE_PATTERN
validation so the advertised tool schema matches what the write path
actually accepts.
- MCP-written memories now default
-
Loopback client misused as a real API key (
memanto/app/clients/moorcheh.py)get_moorcheh_api_key()and friends are FastAPI dependencies but are also
called directly as plain functions elsewhere in the codebase; called
directly, the unresolvedHeader(...)default object is truthy and was
being forwarded to the SDK as if it were a real API key, raising a
TypeErrorinside httpx for internal/loopback UI operations. Now only a
genuine string is treated as a supplied key.
-
Version resolution for source-archive installs (
pyproject.toml)- Added a
hatch-vcsfallback version so editable installs and installs
from a source archive (e.g. a GitHub ZIP with no.gitmetadata) no
longer fail version resolution at install time.
- Added a
Tests
- New
tests/test_langfuse_{config,discover,export,rules,state,sync}.pyand
integrations/langfuse/tests/{test_handler,test_span_mapper}.pycovering
the new integration end-to-end. - New
integrations/mcp/tests/test_packaging.pyguarding the SDK version pin;
expandedintegrations/mcp/tests/{test_server,test_tools}.py.
Full Changelog
Full Changelog: v0.2.13...v0.2.14