Memanto Changelog
Security
Path traversal via agent_id / session_id / dates
- Unsanitized
agent_id/session_idvalues were concatenated directly intopathlib.Pathexpressions (e.g.sessions_dir / f"{agent_id}.json"), letting a caller escape the storage directory with input like"../../etc/passwd". All filesystem call-sites now run throughvalidate_safe_id(). - Extended the same guard to
memory_export_service,daily_analysis_service(including the date parameter used in glob patterns and JSON output paths), and the--output-pathCLI flag (anchored to a base dir viarelative_to()containment checks).
CORS reflected-origin credential exposure
- Default
ALLOWED_ORIGINS=["*"]combined withallow_credentials=Truecaused Starlette to mirror any requestOriginback inAccess-Control-Allow-Originwhile also sendingAccess-Control-Allow-Credentials: true— letting any website make credentialed cross-origin requests to the Memanto API. - Fixed to stop mirroring arbitrary origins when credentials are allowed.
Sensitive Web UI endpoints gated to localhost-only
POST /api/ui/shutdown,GET /api/ui/browse,PATCH /api/ui/config,PUT /api/ui/api-key,POST /api/ui/onprem/restart, plus the connections and migrate endpoints, were reachable from any network host with no authentication (remote DoS, arbitrary file listing, config/API-key overwrite).- Added a
_require_local()dependency that returns 403 for any caller that isn’t127.0.0.1/::1(including IPv4-mapped IPv6 loopback), and blocked glob-pattern injection in the browse endpoint.
Unpredictable session secret
- Removed the hardcoded default JWT signing secret (
"memanto-default-secret-change-in-production"). - When
MEMANTO_SECRET_KEYisn’t set, a per-instance random secret is now generated (secrets.token_hex(32)) and persisted locally instead of falling back to a publicly-known constant.
Session token lifecycle hardening
- Deactivated/terminated session tokens are now rejected outright (401) instead of continuing to authorize writes.
- Cross-agent session/agent mismatches now consistently raise
AuthorizationError→ HTTP 403 (was a generic 500) across all session-scoped endpoints. - CLI clients now validate cached sessions before reuse instead of trusting a stale cached token.
- TypeScript SDK resets its local session state after
deleteAgent().
Improvements
Legacy scope model collapsed to agent_id
- Removed the
scope_type/scope_idpair (and the underlyingMemoryScope/ namespace-parsing machinery) in favor of a singleagent_idfield; namespaces are now built by one free function (agent_namespace(agent_id)). - Dead code from this and prior cleanups moved to
memanto/app/legacy/(excluded from CI lint/type-check). - Removed orphaned “trust” fields that were never populated by any live write/read path (
superseded_by,validation_count,contradiction_detected, etc.) and the unusedValidationPolicyclass.
Confidence filtering bug fix
- Numeric
min_confidencefiltering in memory search previously relied on Moorcheh keyword syntax that never matched; it’s now applied as a post-filter on the numericconfidencefield, fixing a zero-threshold edge case that silently returned nothing.
Manual conflict resolution validation
ConflictResolveRequestnow requires non-emptymanual_contentwhenaction == "manual", both on the API and in the UI (blank submissions show a warning toast and refocus the textarea).
Timestamp normalization
- Parsed ISO timestamps are now consistently normalized to UTC, whether the input has an explicit offset or is naive.
CLI: honor custom title for short memories
memanto rememberno longer overrides an explicit--titlewith an auto-truncated content snippet when the memory content is short.
Memory deletion response handling
- Tightened success/failure detection for memory deletion and update-then-delete flows so partial or malformed backend responses aren’t reported as success.
TypeScript SDK & CI
- Updated dependencies, CI workflow permissions, regenerated
openapi.json, and added an npm publishing workflow (.github/workflows/publish.yml).
Tests
- New
tests/test_cors_fix.py,tests/test_output_path_traversal.py,tests/test_ui_auth.py,tests/test_remaining_ui_auth.pycovering the CORS, path-traversal, and localhost-gating fixes. - New
tests/test_memory_read_confidence.pyandtests/test_temporal_helpers.py. - Expanded
tests/test_api.py,tests/test_cli.py,tests/test_unit.pyfor session-secret generation, inactive-token rejection, and deletion handling.
New Features
TypeScript SDK (sdks/typescript/)
- New
@moorcheh-ai/memantonpm package — a fully-typed client generated from the API’s OpenAPI spec (openapi-ts), covering agents, sessions, remember, recall, answer, upload, and the extract/edit endpoints. - Lifecycle helpers (
src/lifecycle.ts) for session start/stop memory flows, plus adoctorcommand (src/doctor.ts) for config/connectivity checks. - All recently-added API features exposed as first-class SDK methods.
- CI workflow
.github/workflows/sdk-typescript.ymlbuilds, tests (Vitest), and publishes the package; full test suite (memanto.test.ts,lifecycle.test.ts,doctor.test.ts). - See the TypeScript SDK reference for the full method list.
memanto edit command and PATCH endpoint
- New
PATCH /{agent_id}/memories/{memory_id}endpoint withMemoryEditRequestfor partial in-place updates. - CLI
memanto edit <memory_id>with--title,--content,--type,--confidence,--tags,--sourceoptions (at least one required). - Field validation on both the API and direct-client paths: non-empty content with length limits, confidence range 0.0–1.0, and valid memory-type membership — matching the create-endpoint contract.
- See
memanto editand Edit Memory.
v2 memory route response models
- Explicit Pydantic
response_modelschemas added to the v2 memory routes, giving typed/validated responses and accurate OpenAPI documentation (which in turn feeds the TypeScript SDK codegen).
Improvements
Local metadata logging
- Session service now logs memory metadata locally alongside the memory write, keeping the local session summary in sync with stored memories.
Security
Cross-agent authorization returns 403
- All 12 agent-scoped endpoints now return HTTP 403 (not 500) when a session’s
agent_iddoesn’t match the URL’sagent_id, correctly signaling an authorization failure instead of a server error.
Upload path-traversal fixed (CWE-22)
- Uploaded filenames are stripped to their basename (
Path.name) with a defense-in-depth realpath check, preventing a crafted filename (e.g.../../../etc/cron.d/backdoor.txt) from escaping the temp directory.
Secrets removed from UI config endpoint
GET /api/ui/configno longer returns the plaintext Moorcheh API key or session JWT; only safe metadata (api_key_configured,api_key_preview) remains, closing an unauthenticated secret-disclosure path.
Tests
- Expanded
tests/test_api.pyandtests/test_cli.pyfor the edit endpoint, v2 response models, the 403 scope guard, and filename sanitization. - New TypeScript test suites under
sdks/typescript/test/.
New Features
Conversation memory extraction
- New
POST /{agent_id}/remember/extractendpoint that distills chat-style conversation turns into typed memory candidates, using the same Moorcheh answer-generation path as the RAGanswerendpoint. - Candidates are auto-classified into valid memory types, de-duplicated, confidence-scored, and tagged
conversation-extract; secrets, API keys, and tokens are explicitly excluded by the extraction prompt. dry_runreturns candidates without persisting; otherwise they’re written through the standardbatch_rememberpath and logged to the session summary.- New
ExtractMemoriesRequest/ConversationMessagemodels with bounded limits (≤200 messages, ≤100 memories, 12k-char cap). - CLI
memanto remember --from-conversation <path|->reads a JSON message array from a file or stdin, with--dry-run,--max-memories, and--ai-modelflags, and renders each extracted candidate as a panel. - SDK and direct clients gain
extract_memories_from_conversation().
Improvements
Provenance metadata in recall
recalloutput now displaysSource,Ref, andProvenancefor each memory (in addition to tags), unifying file-upload source names and origin (user / agent / tool) into one consistent block.- MCP
MemoryHitmodel extended withstatus,source,source_ref, andprovenancefields so MCP clients receive full memory metadata. - Web UI memory cards surface the same source / provenance metadata.
Tests
- New
tests/test_conversation_memory_extraction.pycovering extraction, JSON parsing / normalization, validation limits, and dry-run behavior. - Expanded
tests/test_api.pyandtests/test_cli.pyfor the extract endpoint and--from-conversationCLI flow.
New Features
memanto migrate command suite
- Replaces the old
analyzecommand with a full migration workflow: export a provider’s data (Mem0, Letta, Supermemory), map each source row onto Memanto memory types (auto-classified via the rule-based parser), bulk-write viabatch_remember(100 items/request), and optionally generate a storage/token/latency savings report — all in one command. - Provider metadata (scope IDs, confidence scores, hashes) is preserved in a bounded
[Supporting data]footer so nothing is lost; originalcreated_at/source/source_refmap naturally onto the schema. --dry-runpreviews the mapping (types, confidence, tags) without writing.--reportgenerates the Markdown comparison on real runs. Outputs live in~/.memanto/migrate/<provider>/<timestamp>/(separate from legacyanalyze/artifacts).- Works on both cloud and on-prem backends; on-prem
batch_rememberrespects the same chunking.
memanto forget command and REST endpoint
- New
DELETE /{agent_id}/memories/{memory_id}endpoint for single-memory deletion. Checks session scope (the session must own the agent) and removes the memory from Moorcheh. - CLI
memanto forget <memory_id>for quick terminal deletion. - UI Delete button on each memory card in the Memory Explorer.
Improvements
On-prem backend enhancements
- Session namespace creation now reuses an existing namespace on-prem instead of erroring when the namespace already exists (idempotent namespace setup).
- On-prem
forgeterror messages are now clear and actionable (differentiate “memory not found” from “namespace issue”). - On-prem threshold boundary checks fixed (no off-by-one on min-similarity validation).
Mapper robustness
- Mappers now extract all available info from source exports, including less-common fields like interaction hashes, scope IDs, and custom metadata, preserving them in the
[Supporting data]footer for compliance and audit trails.
Migrate + on-prem API key handling
- The migrate command correctly propagates the API key dependency for the on-prem backend (no double-init of the backend client).
Tests
- New
tests/test_cli.pycoverage for themigrateandforgetcommands (dry-run, report generation, single-memory delete flow). - New
tests/test_unit.pycoverage for mappers (all three providers) and session namespace idempotency. - Integration tests expanded across CrewAI and LangGraph tooling.
New Features
On-prem Moorcheh backend
- New
MEMANTO_BACKENDsetting (cloud|on-prem) routes every call through a backend-aware dispatcher that exposes the samenamespaces/documents/similarity_search/answer/files/vectorsshape 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.jsonbeforemoorcheh 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, plusBackend,MOORCHEH_ONPREM_URL(defaulthttp://localhost:8080) andMOORCHEH_ONPREM_TIMEOUT(default300) rows inmemanto config show. - Health check, startup validation, and the agent delete flow are all backend-aware.
memanto detect-conflicts + scheduled job split
- Conflict detection split out of daily-summary into its own command,
POST /{agent_id}/conflicts/generateREST endpoint, andDirectClient.generate_conflict_report()method. - New hidden
memanto schedule _runentrypoint 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.pyrenamed →daily_analysis_service.py.
UI: Connect tab, memory timeline, daily summary, file pagination
- Connect tab installs/removes Memanto skills into any registered agent (Claude Code, Cursor, etc.) via the underlying
install_agent/remove_agentengine, with aconnections.jsonregistry 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.jsonwithout polluting the shared cloud yaml. - Memory Explorer 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
recall_as_of,recall_changed_since,recall_recentand the underlyingMemoryReadServicemethods now treatlimit=Noneas “fetch all” — theCostGuard.validate_k_limitcap is only applied when a limit is explicitly set.answer.generatecalls route throughget_active_llm_model()so the LLM identifier comes from cloud settings on cloud,on-prem state.jsonon on-prem, with the field omitted entirely when on-prem has no LLM configured (server picks its own default).
Stale active-session handling
get_active_session()now clears the stale active marker and returnsNonewhen the session has expired, instead of returning an expiredSession.- All datetimes flow through a single
utc_now()helper; Pydantic v1Config.json_encodersblocks removed from session models.
Connect engine ↔ registry sync
install_agent/remove_agentnow sync their results into~/.memanto/connections.jsonso the UI’s Connections page reflects what the CLI did and vice versa.
Tests
- New
tests/test_backend.pycovering cloud/on-prem dispatcher behavior andget_active_llm_modelfallbacks. - New
tests/test_analyze.pycovering the Mem0/Letta/Supermemory export + compare + report flow end-to-end with mocked provider responses. tests/test_cli.pyandtests/test_unit.pyexpanded to cover the newdetect-conflicts/schedule _runpaths.
New Features
Recall similarity threshold
- New
recall.min_similaritysetting (0.0–1.0) in CLI config with validation; default0.0. - REST
POST /memories/recalland SDK/Directrecall()resolvemin_similarityfrom the request, then fall back to the config value, then to unset. - CLI flag renamed
--min-confidence→--min-similarityonmemanto recall. memanto config showsurfaces the newMin Similarityrow.
Agents page in the Web UI
- New sidebar entry listing every registered agent with status, pattern, memory and session counts; activate/deactivate from the table.
GET /api/v2/agentsandGET /api/v2/agents/{agent_id}now populatememory_countfrom the live Moorcheh namespace document count instead of the stale local metadata value.
File upload in the Playground
- New
Upload Filetab accepts.pdf,.docx,.xlsx,.json,.txt,.csv,.md(max 5 GB) and ingests into the active agent’s namespace, with client-side size/extension validation.
Fuzzy fallback for auto memory-type parsing
- When deterministic rules abstain, a
rapidfuzz-backed pass scans tokens against a curated list of long, distinctive keywords per type and picks the best match aboveFUZZY_SCORE_CUTOFF = 88.0— recovering obvious misspellings like “decded” →decision, “crahsed” / “tracebck” →error. - New runtime dependency:
rapidfuzz>=3.0.0.
Smart-parse config switch
- New
memanto.cli.smart_parsesetting inconfig.yamlpropagates to theAUTO_PARSE_ENABLEDenv var on startup, letting users toggle auto-parsing without editing code.
Improvements
CrewAI tool schema
MemantoRecallToolnow exposesmin_similarity(0.0–1.0) to the LLM, raises the defaultlimitfrom5to10, and enforcesge=1, le=100via Pydantic instead of a hardcodedmin(limit, 20)clamp.
UI timestamps & filters
fmtDateappendsZto naive UTC timestamps so the browser converts them to the user’s locale instead of treating them as local time.- Memory Explorer gains an
All Sourcesfilter dropdown; navigation helpergoToPage()added; favicon shipped.
memanto connect agent templates rewritten
- Reframed as an “active memory companion” with five non-negotiable rules (read
MEMORY.md, search before guessing, store proactively, always pass--type/--confidence/--provenance/--source, never keep mental scratchpads). - Adds an operations table (
recallvsanswervsremember), workedmemanto rememberexamples per type, full memory-type/provenance/confidence references, and the new temporal flags (--recent,--as-of,--changed-since). - Cursor MDC rules file mirrors the same content under
alwaysApply: true.
Tests
- New fuzzy-fallback cases in
tests/test_memory_parsing.py(typo’ddecision/errordetection; confirms no false-fire on unrelated text). tests/conftest.pyresetssettings.AUTO_PARSE_ENABLED = Truebefore every test so localsmart_parseconfig can’t leak into the suite.
New Features
Configurable rule-based memory parsing
MemoryParsingService(memory_parsing_service.py) auto-detects a memory’s type at ingestion using score-based classification with priority tie-breaking across all 13 supported types — no more blind default tofact.MemoryRecord.typeis now optional (None); the parser assigns the type when the caller omits it.- New
AUTO_PARSE_ENABLEDsetting (defaultTrue). rememberandbatch-rememberrun the parser whentypeis omitted and return the resolvedtypein the response.- CLI —
memanto rememberno longer forces--type fact; it displays the parsed type instead.
MCP server integration
- The MCP server integration is now available — it exposes Memanto memory operations to any MCP client. Install it with:
- See the Integrations section for setup details.
Hermes Agents integration
- The Hermes Agents integration is now available — a
hermes_memantoprovider for Hermes Agents. Install it with: - See the Integrations section for setup details.
Improvements
Unified content-length cap across layers
- SDK/Direct clients now use
InputLimits.MAX_TEXT_LENGTHinstead of a hardcoded500, aligning the cap with the REST/Pydantic models (10,000 chars). - Removed the unused
MAX_MEMORY_SIZE/MAX_TITLE_SIZEsettings.
Chronological recall --recent
- New
recall_recent()onSdkClientandDirectClientreturns the most recently stored memories (newest first). - New
memanto recall --recentflag — lists recent memories directly, no search query required (mutually exclusive with--as-of/--changed-since).
Unified kiosk_mode and threshold defaults
kiosk_modeandthresholddefaults now resolve fromconfig.yaml.thresholdis only applied whenkiosk_modeis on; the kiosk-mode fallback threshold is unified to0.15across REST and config defaults.
CrewAI integration
- Install the CrewAI integration with:
- LLM tool schemas now enumerate all 13 memory types with definitions to guide classification.
- See the Integrations section for setup details.
Docker
- The Docker image can now be pulled directly:
Breaking Changes
Temporal endpoints no longer accept a query
Temporal endpoints now list every memory that falls inside the requested time window instead of running a similarity-matched subset.- API —
POST /{agent_id}/recall/as-ofandPOST /{agent_id}/recall/changed-sincerequest bodies dropped thequeryfield; response bodies dropped the echoedqueryfield. - CLI —
memanto recall --as-of …/--changed-since …now errors if aQUERYargument is also supplied. Remove the query to list all memories for that window. - Python clients —
recall_as_of()onDirectClientandSdkClientno longer take aqueryargument.
Improvements
Temporal retrieval switched to documents.fetch_text_data
- New
_fetch_all_memories()helper (memory_read_service.py) paginates through Moorcheh’sfetch_text_dataendpoint across all matched namespaces, applies optionaltype/tagsfilters in-process, deduplicates by ID, and strips summary chunks. - Fewer round trips —
search_as_ofandrecall_changed_sinceuse the fetch path instead of iteratingsimilarity_search.query()per memory type, returning complete result sets within Moorcheh’s 100-item-per-namespace fetch limit.
CrewAI integration as a publishable package
- New
memanto-crewaipackage (v0.1.0) inintegrations/crewai/withpyproject.toml,hatchlingbuild backend, MIT license, Python>=3.10. - Public exports —
MemantoSetup,MemantoRememberTool,MemantoRecallTool,MemantoAnswerTool,create_memanto_toolsfrommemanto_crewai.
Breaking Changes
Memory endpoints migrated to POST
recall,answer,recall/as-of,recall/changed-since— now accept JSON request bodies instead of query parameters.memory_typesrenamed totype— accepts a list of strings across all recall endpoints and CLI recall commands.
Session and auth changes
/session/currentrenamed to/status— requires no session token; reads active session from local state./session/extendremoved — session extension is no longer supported./sessionslist endpoint removed.Authorizationheader dropped for API key —MOORCHEH_API_KEYis read from server config only;Bearerheader auth is removed.X-Session-Tokenis the only auth mechanism for per-request memory operations.
Legacy routes removed
/api/v1/namespaces,/api/v1/memory,/api/v2/context— moved tomemanto/app/legacy/.
New Features
Recall and conflict endpoints
POST /{agent_id}/recall/recent— retrieves most recent memories without a query string; replaces/recall/current.GET /{agent_id}/conflicts— lists detected memory contradictions.POST /{agent_id}/conflicts/resolve— resolves a flagged contradiction.DELETE /agents/{agent_id}?delete-backup-too=true— optionally wipes the agent’s remote Moorcheh namespace on deletion.
Startup validation
- Fail-fast API key check — server validates
MOORCHEH_API_KEYon startup and refuses to start if missing or authentication fails.
Improvements
Structured request body models
- Pydantic models (
RecallRequest,RecallAsOfRequest,RecallChangedSinceRequest,RecallRecentRequest) with full field validation and bounds checking. - Smart date defaults — date-only
as_ofdefaults to end-of-day;sincedefaults to start-of-day, so full ISO datetimes are not required for daily windows.
Auth and session service
get_moorcheh_api_key()reads from server config only — no per-request header parsing.verify_moorcheh_api_key()validates once at startup instead of on every request.extend_session()removed;moorcheh_api_keyparameter removed fromcreate_session(),validate_session(), andrenew_session().
Health check
/healthno longer requires client dependency injection.- Status reports
"unhealthy"(was"degraded") when Moorcheh is unreachable.
CLI
memanto session extendremoved.- “Activation” terminology replaces “session” across
agent create,agent activate,agent deactivate, andmemanto status. memanto statuspanel renamed to Active Agent (was “Active Session”).
UI Fixes
UI shutdown fix
- Server stability — fixed an issue where the API server would unexpectedly shut down when refreshing or closing the browser tab. The server now stays alive unless explicitly stopped or running in specific UI-only modes.
Tests
- Added
tests/test_e2e.pywith end-to-end API coverage.
Improvements
API input validation
- Content fields —
remember,recall,answer,recall/as-of,recall/current, andrecall/changed-sinceenforcemin_length=1on query/content fields andmax_length=500ontitle. - Numeric bounds —
confidence,min_similarity,threshold, andtemperaturebounded[0.0, 1.0];limitenforcedge=1. - CostGuard validators (
validate_text_length,validate_query_length,validate_k_limit) applied across all memory read/write endpoints.
Session extension guard
- API — extending a session with
additional_hours <= 0now returns HTTP 422. - CLI —
memanto session extendrejects non-positive--hoursvalues before sending the request.
Daily summary custom output path
output_pathparameter added togenerate_summary()andgenerate_daily_summary().- When provided, the summary Markdown file is written to the specified path; parent directories are created automatically.
Agent pattern options
memanto agent create --patternhelp text updated to list only available patterns:project,support,tool(removes unavailablechat,research,custom).
Dependencies
moorcheh-sdkminimum version bumped from>=0.1.0to>=1.3.5.
Bug Fixes
UI dashboard authentication
- Root cause — the masked API key was being used for backend authentication, causing all dashboard data to fail loading after login.
- Fix — restored transmission of the full API key in the configuration response so the dashboard can authenticate backend requests properly.
- Display —
api_key_previewremains masked (........XXXXXX) in the settings tab; only the backend communication is affected.
Result: The Web UI dashboard now correctly initializes session state upon login, resolving the “no data” issue introduced in v0.0.6.
Tests
- Full test suite: 54 passed. UI connectivity verified.
Improvements
API key verification
- First-run setup —
memantonow actively verifies the key against Moorcheh before saving; invalid keys are rejected immediately; transient network issues surface as a warning rather than blocking setup. - Lighter auth ping — verification switched from
client.namespaces.list()toclient.documents.get(...)against a sentinel namespace.NamespaceNotFoundis treated as success (key authenticated; namespace simply doesn’t exist). - Clearer error codes — auth dependency returns 401 on
AuthenticationErrorand 500 on unexpected errors.
Server health check
/healthuses the same documents-based ping, so health reflects real authentication state.
Configurable summary model
SUMMARY_MODELsetting (defaultanthropic.claude-sonnet-4-6) used for daily summary and conflict reports.~/.memanto/config.yamlnow supportsmemanto.summary.model,memanto.answer.model,temperature, andanswer_limit— loaded at startup so models can be swapped without code changes.
UI security
/api/ui/configand the API-key update endpoint now return a masked preview (••••••••<last6>) instead of the raw key — plaintext key is no longer sent to the browser.
Tests
- Full test suite: 54 passed.
Bug Fixes
Web UI authentication after CLI activation
- Dashboard, Memory Explorer, recall, and analytics views now load correctly after
memanto agent activate. - “Session may be expired” and “Activate an agent via CLI to explore memories” error states are resolved.
Existing
api_key_preview and has_active_session fields are retained for backward compatibility with older UI surfaces.Improvements
Simplified first-run setup
- Single-step onboarding —
memantosetup now prompts only for the Moorcheh API key. - Removed the schedule time (
HH:MM) prompt, related validation, and automaticScheduleManager().enable(...)call from onboarding.
Improvements
Onboarding and documentation
- README quick start de-emphasizes
memanto serveas a prerequisite — users can runmemanto, create an agent, and try memories without keeping a local API process running. memanto servedocumented as optional, for HTTP/REST use only.- Agent integration guide shortens quick start to create → remember → recall, and updates Python examples.
- Session architecture doc notes that
memanto agent createauto-activates in the CLI.
CLI output polish
memanto status/memanto serveuse Local REST API wording; healthy API shows online.- Success messages drop the
OKprefix across agent create, remember, upload, and daily summary flows. - Welcome Quick Start lists
memanto ui, reorders commands, and describesmemanto serveas starting the local REST API.
memanto connect list
- Column renamed to Agent Name; rows show agent
nameinstead ofdisplay_name.
Behavioral Changes
memanto agent createalready auto-started a session; docs and Quick Start now consistently reflect this so separatememanto agent activateis not shown as a required step.- Default session/extension examples reference 6 hours where updated.
Tests
- Full test suite: 54 passed.
Improvements
CLI onboarding flow
- Quick start now shows
memanto servefirst and guides users to open a new terminal for agent commands. memanto serveprints a clear “next step” hint after startup.memanto agent create <agent-id>now starts a session automatically.
Documentation
- Updated
README.md,docs/CLI_USER_GUIDE.md,docs/CLI_INSTALLATION.md,docs/AGENT_INTEGRATION_GUIDE.md.
Behavioral Changes
memanto agent createauto-activates a session — separatememanto agent activateis usually not required in the quick start flow.
Tests
- Updated CLI tests for auto-session behavior. Full test suite: 54 passed.
New Features
Semantic memory engine
- Agents — persistent identity with isolated memory namespaces (e.g.
customer-support-bot,dev-assistant). - Sessions — 6-hour active windows; memories persist forever and remain accessible across all future sessions.
- 13 memory types —
fact,preference,decision,goal,instruction,event, and more, each stored with a confidence score. - Zero-indexing semantic search — memories are available for retrieval the exact millisecond they are written; no indexing delay.
- State-of-the-art accuracy — 89.8% on LongMemEval, 87.1% on LoCoMo.
Memanto CLI
pip install memanto— fullmemantocommand-line interface with organized command groups:agent,memory,session,schedule,config,connect, and core utilities.- Quickstart workflow:
REST API
- Full v2 HTTP API for agent lifecycle, session management, memory read/write, recall, and generative answers.
- Dual authentication —
Authorization: Bearer <moorcheh-api-key>for all requests;X-Session-Token: <jwt>for memory operations.
Developer integrations
- 13+ AI coding assistants and IDEs — Claude Code, Cursor, Cline, Windsurf, Continue, GitHub Copilot, OpenCode, Goose, Roo, Antigravity, Augment, Gemini CLI, Codex.
- Connect via
memanto connect <tool>with project-local or--globalscope.
MemantoClaw
- Open-source reference stack combining OpenClaw, NVIDIA OpenShell, and Memanto memory.
- One-command provisioning —
memantoclaw onboardconfigures inference routing, credentials, and memory bridge automatically. - Enhanced security — stricter seccomp/Landlock policies, credential filtering, immutable gateway config, host-bridge memory architecture.