Skip to content

V0.2.0

Choose a tag to compare

@het0814 het0814 released this 10 Jun 18:32
6848f42

Release Notes for v0.2.0

This release adds a pluggable on-prem backend (talk to a local Moorcheh server instead of the cloud), a new memanto analyze command suite for comparing Memanto against Mem0 / Letta / Supermemory, an official langgraph-memanto integration package, a separate detect-conflicts job entrypoint, plus large UI upgrades (Connect tab, memory-history timeline, daily summary view, file pagination).

New Features

  • On-prem Moorcheh backend (memanto/app/clients/{backend,onprem,moorcheh}.py,
    memanto/app/config.py, memanto/app/routes/{health,auth_deps}.py,
    memanto/cli/commands/{core,config_cmd}.py)

    • New MEMANTO_BACKEND setting (cloud | on-prem) routes every call through
      a backend-aware dispatcher that exposes the same
      namespaces / documents / similarity_search / answer / files / vectors
      shape regardless of target — service code never branches.
    • First-run wizard now asks Cloud vs On-Prem; on-prem path installs
      moorcheh-client>=0.1.3, prompts for embedding + LLM provider
      (ollama / openai / cohere), persists choices to
      ~/.memanto/on-prem/state.json, writes the full LLM block to
      ~/.moorcheh/config.json before moorcheh up, then pulls Ollama
      models into the container.
    • On-prem data lives under ~/.memanto/on-prem/ (sessions, agents, summaries)
      so cloud and on-prem never share local state; switching backends clears the
      active session.
    • New memanto config backend [cloud|on-prem] CLI command for runtime
      switching, plus Backend, MOORCHEH_ONPREM_URL (default
      http://localhost:8080) and MOORCHEH_ONPREM_TIMEOUT (default 300) rows
      in memanto config show.
    • Health check, startup validation, and the agent delete flow are all
      backend-aware.
  • Official LangGraph integration package (integrations/langgraph/)

    • New langgraph-memanto PyPI package: create_memanto_tools returns native
      LangChain @tool wrappers (memanto_remember, memanto_recall,
      memanto_answer); create_recall_node / create_remember_node are
      pre-built graph nodes; MemantoStore is a drop-in BaseStore
      implementation for the official LangGraph Store API.
    • Lazy, exception-driven, thread-safe setup so agents are created only on
      first tool call; auto-detects type via the parser; uses recall_recent
      when no query is provided.
  • memanto detect-conflicts + scheduled job split (memanto/cli/commands/memory.py,
    memanto/cli/commands/schedule.py, memanto/app/services/daily_analysis_service.py,
    memanto/app/routes/memory.py)

    • Conflict detection split out of daily-summary into its own command,
      POST /{agent_id}/conflicts/generate REST endpoint, and
      DirectClient.generate_conflict_report() method.
    • New hidden memanto schedule _run entrypoint executes daily-summary +
      detect-conflicts back-to-back; OS scheduler now points at it. On-prem
      backend short-circuits with a clear error (scheduled job depends on
      cloud-only LLM Answer).
    • daily_summary_service.py renamed → daily_analysis_service.py.
  • UI: Connect tab, memory timeline, daily summary, file pagination
    (memanto/app/ui/static/index.html, memanto/app/ui/routes/ui_router.py)

    • Connect tab installs/removes Memanto skills into any registered agent
      (Claude Code, Cursor, etc.) via the underlying install_agent /
      remove_agent engine, with a connections.json registry tracking
      project-local vs global installs.
    • Memory History page with a vertical timeline of every change (created,
      updated, conflict resolved) per memory.
    • Daily summary + Unreviewed conflicts widget surfaced on the
      dashboard (Daily Summary tab renders the generated MD and shows days with
      pending conflict review).
    • Answer panel is backend-aware: on-prem shows
      provider/model/api-key only (no cloud-only knobs) and writes to
      ~/.moorcheh/config.json without polluting the shared cloud yaml.
    • Memory Explorer + file uploads now use cursor pagination through
      documents.fetch_text_data (next_token / has_more) instead of being
      capped at 100 items per namespace.

Improvements

  • Backend-aware recall_* REST endpoints (memanto/app/routes/memory.py)

    • recall_as_of, recall_changed_since, recall_recent, and the
      underlying MemoryReadService methods now treat limit=None as
      "fetch all" — the CostGuard.validate_k_limit cap is only applied when a
      limit is explicitly set.
    • answer.generate calls route through get_active_llm_model() so the LLM
      identifier comes from cloud settings on cloud, on-prem state.json on
      on-prem, with the field omitted entirely when on-prem has no LLM
      configured (server picks its own default).
  • Stale active-session handling (memanto/app/services/session_service.py,
    memanto/app/models/session.py)

    • get_active_session() now clears the stale active marker and returns
      None when the session has expired, instead of returning an expired
      Session.
    • All datetimes flow through a single utc_now() helper; Pydantic v1
      Config.json_encoders blocks removed from session models.
  • Connect engine ↔ registry sync (memanto/cli/connect/engine.py,
    memanto/cli/config/manager.py)

    • install_agent / remove_agent now sync their results into
      ~/.memanto/connections.json so the UI's Connections page reflects what
      the CLI did and vice versa.
  • CrewAI integration (integrations/crewai/...)

    • Sessions are validated and refreshed on tool init so long-running CrewAI
      runs don't fail on a silently-expired session.

Tests

  • New tests/test_backend.py covering cloud/on-prem dispatcher behavior and
    get_active_llm_model fallbacks.
  • New tests/test_analyze.py covering the Mem0/Letta/Supermemory export +
    compare + report flow end-to-end with mocked provider responses.
  • tests/test_cli.py and tests/test_unit.py expanded to cover the new
    detect-conflicts / schedule _run paths.

Full Changelog

Full Changelog: v0.1.3...v0.2.0