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