v0.2.0

ByteDance-Seed/SeedVRv0.2.0Jun 10, 2026by het0814

AI Summary

This release introduces a pluggable on-prem Moorcheh backend, expands analysis capabilities with a new command suite, adds an official LangGraph integration, splits conflict detection into a separate job, and significantly upgrades the UI with timeline views and pagination.

Key Highlights

  • Pluggable on-prem Moorcheh backend with runtime switching capability
  • New `memanto analyze` command suite for comparing Memanto against Mem0, Letta, and Supermemory
  • Official `langgraph-memanto` integration package
  • Split of conflict detection into its own `detect-conflicts` command and job
  • Major UI upgrades including Connect tab, memory history timeline, and cursor-based file pagination

Breaking Changes

  • On-prem data lives under `~/.memanto/on-prem/`; switching backends clears the active session
  • Renamed `daily_summary_service.py` to `daily_analysis_service.py`

New Features

  • On-prem Moorcheh backend with `MEMANTO_BACKEND` setting and health checks
  • Official `langgraph-memanto` integration with `create_memanto_tools`
  • New `memanto detect-conflicts` command and REST endpoint
  • Connect tab UI for installing/removing Memanto skills into agents
  • Memory History page with a vertical timeline of changes
  • Daily summary and Unreviewed conflicts widget on the dashboard
  • Cursor-based pagination for file uploads and memory explorer

Full Release Notes

  # 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: https://github.com/moorcheh-ai/memanto/compare/v0.1.3...v0.2.0