@memtensor/memos-cloud-cli
v1.0.5
Published
MemOS CLI - Universal memory interface for AI agents
Maintainers
Keywords
Readme
MemOS CLI
Universal memory interface for AI agents.
Project Structure
MemOS-CLI/
├── src/memos_cli/
│ ├── __init__.py # Package version
│ ├── __main__.py # python -m memos_cli entry
│ ├── main.py # Main CLI app (Typer)
│ ├── config.py # Configuration management
│ ├── output.py # Output formatting (text/json)
│ ├── branding.py # Brand colors and symbols
│ ├── state.py # State management (agent mode)
│ ├── telemetry.py # Telemetry reporting
│ ├── backend/ # API backend layer
│ │ ├── base.py # Abstract base class
│ │ ├── memos_api.py # MemOS Cloud API implementation
│ │ ├── message_api.py # Message API
│ │ └── kb_api.py # Knowledge base API
│ └── commands/ # CLI commands
│ ├── init.py # memos init
│ ├── config_cmd.py # memos config (show/get/set)
│ ├── memory.py # add/search/get/origin/delete/extract/rerank/feedback/chat
│ ├── memory_cmd.py # Memory command execution layer
│ ├── message.py # memos message / memos status
│ ├── message_cmd.py # Message command execution layer
│ ├── kb.py # memos kb (create/remove/add-file/get-file/list-file/delete-file)
│ └── kb_cmd.py # Knowledge base command execution layer
├── skills/
│ └── memos-memory/ # Memory domain skill
│ ├── SKILL.md # Skill entry and usage protocol
│ └── references/ # Skill reference docs
│ ├── memos-add.md
│ ├── memos-chat.md
│ ├── memos-delete.md
│ ├── memos-extract.md
│ ├── memos-get.md
│ ├── memos-origin.md
│ ├── memos-search.md
│ ├── memos-uninstall.md
│ ├── memos-kb-create.md
│ ├── memos-kb-remove.md
│ ├── memos-kb-add-file.md
│ ├── memos-kb-get-file.md
│ ├── memos-kb-list-file.md
│ └── memos-kb-delete-file.md
├── pyproject.toml
├── package.json
├── bin/
│ └── memos.js # npm launcher
├── scripts/
│ └── postinstall.js # npm binary installer
├── npm/
│ └── README.md # npm binary payload directory
└── README.mdInstallation
End Users
npm install -g @memtensor/memos-cloud-cli@betaThe npm package downloads a prebuilt MemOS CLI binary for the current platform during installation, so end users do not need a local Python environment.
Development
pip install -e .Uninstall
memos uninstall --agent codex --yes
npm uninstall -g @memtensor/memos-cloud-cliRun memos uninstall --agent <agent> --yes before removing the npm package. It removes the installed MemOS skill and cleans the managed MemOS block from agent guidance files such as AGENTS.md or CLAUDE.md; npm uninstall only removes the global binary.
See skills/memos-memory/references/memos-uninstall.md for the agent-facing uninstall workflow.
Quick Start
1. Initialize
memos init --agent codexThis command installs the bundled MemOS operation skill and writes the matching agent guidance.
--agent is required, and installation to a generic global directory is not supported.
--memos-plugin defaults to false. Set it to true when the target agent already has the MemOS memory plugin installed and should prefer plugin search/add flows.
It also installs shell completion automatically for the current shell when shell detection succeeds.
Supported targets:
--agent codex→~/.codex/skills/memos/--agent cursor→~/.cursor/skills/memos/--agent claude→~/.claude/skills/memos/--agent openclaw→~/.openclaw/skills/memos/--agent hermes→~/.hermes/skills/memos/--agent trae→~/.trae/skills/memos/--agent trae-cn→~/.trae-cn/skills/memos/--agent opencode→~/.config/opencode/skills/memos/--agent antigravity→~/.gemini/antigravity/skills/memos/--agent workbuddy→~/.codebuddy/skills/memos/--agent cline→~/.cline/skills/memos/--agent copilot→~/.copilot/skills/memos/
Or with arguments:
memos init --api-key YOUR_API_KEY --agent codex2. Add Memory
memos add "User likes Python programming"3. Search Memories
memos search "programming languages"4. Chat with MemOS
memos chat "What do you know about my preferences?"5. Get Memories
memos get user_1236. Delete Memory
memos delete mem_1234567. Get Memory Origin
memos origin mem_123456Command Reference
memos add
Write a memory into MemOS using simple text input.
Example:
memos add "User likes Python programming"Parameters:
[MESSAGE]: Memory content to add; required; use[MESSAGE]or--message.-m, --message: Memory content to add; optional; alias of[MESSAGE]; no separate default.--user-id: User scope for the memory write; optional; defaults to configureddefaults.user_id.
memos search
Search memories with semantic retrieval and optional preference/tool/skill expansion.
Example:
memos search "programming languages" --user-id user_123 --format table --detail simpleParameters:
[QUERY]: Search query text; required; use[QUERY]or--query.-q, --query: Search query text; optional; alias of[QUERY]; no separate default.--user-id: User scope for retrieval; optional; defaults to configureddefaults.user_id.--memory-limit-number: Main memory recall count; optional; defaults to9.--include-preference: Whether to include preference memory; optional; acceptstrueorfalse; defaults totruewhen omitted.--preference-limit-number: Preference memory recall count; optional; defaults to9.--include-tool-memory: Whether to include tool memory; optional; acceptstrueorfalse; defaults tofalsewhen omitted.--tool-memory-limit-number: Tool memory recall count; optional; defaults to6.--include-skill-memory: Whether to include skill memory; optional; acceptstrueorfalse; defaults tofalsewhen omitted.--skill-memory-limit-number: Skill memory recall count; optional; defaults to6.--relativity: Retrieval threshold; not exposed in the current CLI; API default is0.45.--format: Output format; optional; defaults toagent.--detail: Output detail level for non-JSON formats; optional; defaults tosimple; supported values:simple,detail.
memos get
Call the documented get_memory API to retrieve memories for a user.
Example:
memos get user_123 --format json --detail detailParameters:
[USER_ID]: Retrieval scope; effectively required, but if omitted the CLI falls back to configureddefaults.user_id.--user-id: Alias of[USER_ID]; optional; same fallback as[USER_ID].--page: Page number; optional; API default is1when omitted.--size: Number of items returned per memory category on the current page; optional; API default is10when omitted.--include-preference: Whether to include preference memory; optional; acceptstrueorfalse; defaults totruewhen omitted.--include-tool-memory: Whether to include tool memory; optional; acceptstrueorfalse; current CLI exposes this flag, but the officialget_memorydocs do not state the API default when omitted.--format: Output format; optional; defaults toagent.--detail: Output detail level for non-JSON formats; optional; defaults tosimple; supported values:simple,detail.
memos delete
Delete one memory, or delete all memories for a user, using the documented delete API.
Example:
memos delete mem_123456 --format json
memos delete --user-id user_123 --format jsonParameters:
MEMORY_ID: Memory ID to delete; conditionally required; useMEMORY_IDto delete one memory.--user-id: Delete all memories for the given user ID; conditionally required; use--user-idto delete all memories for a user.
memos origin
Get the original source payload for a specific memory by memory ID.
Example:
memos origin mem_123456
memos origin mem_123456 --detail simple
memos origin mem_123456 --detail detail
memos origin mem_123456 --format markdown --detail detail
memos origin mem_123456 --format jsonParameters:
[MEMORY_ID]: Memory ID; required.--format: Output format; optional; defaults toagent.--detail: Output detail level; optional; defaults tosimple; supported values:simple,detail.
Default display includes:
simple:memory_id,memorysummary, and source content.detail:memory_id,memorysummary, source type, role, time, language, and source content.- source messages are extracted from
data.metadata.sources.
memos extract
Preview memory candidates from messages without storing them.
Example:
memos extract "User likes coffee and prefers dark mode" --format jsonParameters:
[MESSAGE]: Message content to extract from; required; use[MESSAGE]or--message.-m, --message: Message content to extract from; optional; alias of[MESSAGE]; no separate default.--user-id: User scope; optional; defaults to configureddefaults.user_id.
memos rerank
Rerank candidate documents for a query.
Example:
memos rerank "python backend" "Flask guide" "React guide" --format jsonParameters:
[QUERY]: Query used for reranking; required; use[QUERY]or--query.[DOCUMENTS]...: Candidate documents; required; provide one or more documents as positional arguments, repeated--documents, or stdin.-q, --query: Query used for reranking; optional; alias of[QUERY]; no separate default.--documents: Candidate document, repeatable; optional; repeatable alternative to positional[DOCUMENTS]....--top-n: Return only the top N results; optional; no CLI default; omitted from the request unless provided.--format: Output format; optional; defaults toagent.
memos feedback
Submit feedback content to MemOS.
Example:
memos feedback "Prefer concise technical answers." --user-id user_123 --format jsonParameters:
[FEEDBACK_TEXT]: Feedback content to submit; required; use[FEEDBACK_TEXT]or--feedback-content.--feedback-content: Feedback content to submit; optional; alias of[FEEDBACK_TEXT]; no separate default.--user-id: User scope; optional; defaults to configureddefaults.user_id.
memos chat
Ask MemOS for a memory-informed answer using the documented chat request fields.
Example:
memos chat "What do you know about my preferences?" --user-id user_123 --format agentParameters:
[QUERY]: Chat query text; required; use[QUERY]or--query.-q, --query: Chat query text; optional; alias of[QUERY]; no separate default.--user-id: User scope; optional; defaults to configureddefaults.user_id.
memos message
Retrieve original conversation messages.
Example:
memos message --user-id user_123 --conversation-id conv_001 --format json
memos message --user-id user_123 --limit 10 --format tableParameters:
--user-id: User ID; required.--conversation-id: Conversation ID; optional; defaults to configureddefaults.conversation_id.--limit: Max messages to return; optional; default 6, max 50.--format: Output format; optional; defaultagent.
memos status
Query async task processing status (from task_id returned by add or feedback with async_mode).
Example:
memos status abc123-task-id --format jsonParameters:
[TASK_ID]: Async task ID; required.--format: Output format; optional; defaultagent.
Returned status values: running, completed, failed.
memos kb
Knowledge base management subcommand group.
memos kb create
Create a knowledge base.
memos kb create --name "Product FAQ" --description "Common product questions" --format jsonParameters:
--name: Knowledge base name; required.--description: Knowledge base description; optional.--format: Output format; optional; defaultagent.
memos kb remove
Remove (delete) a knowledge base.
memos kb remove base_xxxxx --format jsonParameters:
[KB_ID]: Knowledge base ID; required.--format: Output format; optional; defaultagent.
memos kb add-file
Upload documents to a knowledge base. Supports PDF, DOCX, DOC, TXT, JSON, MD, XML.
memos kb add-file --kb-id base_xxxxx --files '["https://example.com/doc.pdf"]' --format json
memos kb add-file --kb-id base_xxxxx --files '[{"content":"https://cdn.example.com/file.docx"}]' --format jsonParameters:
--kb-id: Target knowledge base ID; required.--files: JSON array of file entries — URL strings or{"content": "..."}objects; required.--format: Output format; optional; defaultagent.
memos kb get-file
Get knowledge base file details and processing status.
memos kb get-file --file-ids '["file_id_1", "file_id_2"]' --format jsonParameters:
--file-ids: JSON array of file IDs; required.--format: Output format; optional; defaultagent.
memos kb list-file
List files in a knowledge base with pagination and optional type filtering.
memos kb list-file --kb-id base_xxxxx
memos kb list-file --kb-id base_xxxxx --type document
memos kb list-file --kb-id base_xxxxx --type skill --page 2 --page-size 10 --format jsonParameters:
--kb-id: Knowledge base ID; required.--type: Filter by file type:documentorskill; optional.--page: Page number; optional; default1.--page-size: Items per page; optional; default20.--format: Output format; optional; defaultagent.
memos kb delete-file
Delete files from a knowledge base.
memos kb delete-file --kb-id base_xxxxx --file-ids '["file_id_1"]' --format jsonParameters:
--kb-id: Knowledge base ID; required.--file-ids: JSON array of file IDs to delete; required.--format: Output format; optional; defaultagent.
Output Modes
Each subcommand supports trailing --format. Only search and get also support trailing --detail:
memos search "python" --format table --detail simple
memos search "python" --format markdown --detail detail
memos search "python" --format agent --detail simple
memos search "python" --format json --detail detail
memos get user_123 --format json --detail detail
memos add "User prefers TypeScript" --format jsonGlobal Options
--api-key KEY: Override API key from config--base-url URL: Override API base URL from config--version: Show version
Configuration
View current config:
memos config showExample output includes:
API KeyBase URLSourceFramework- default
User IDandConversation ID
Get/Set specific values:
memos config get platform.api_key
memos config set defaults.user_id user123Environment Variables
MEMOS_API_KEY: Your API keyMEMOS_BASE_URL: API base URL (default: https://memos.memtensor.cn/api/openmem/v1)MEMOS_FRAMEWORK: Override framework attribution (for examplecodex)
Agent Integration
Use the provided skill to enable memory operations in your agent framework.
Use this skill when:
- you need memory operations such as
extract,add,search,chat,get, anddelete:skills/memos-memory/SKILL.md - you need to remove the MemOS skill and managed agent guidance:
skills/memos-memory/references/memos-uninstall.md
Recommended entry point:
- Start with
skills/memos-memory/SKILL.md.
Telemetry & Source Tracking
All CLI requests include:
source=cli-<framework>header when the framework can be identified, for examplesource=cli-codex- Framework detection (OpenClaw, Hermes, etc.)
Memory API requests also attach framework metadata when it can be detected from environment variables or the parent process.
This enables usage analytics and framework-specific optimizations.
Framework detection is resolved in this order:
- runtime override
- saved config value from
memos init --agent ... MEMOS_FRAMEWORK- shell / parent-process inference
Development
Run from source
python -m memos_cli --helpAdd new commands
- Create command file in
src/memos_cli/commands/ - Register in
src/memos_cli/main.py - Add to appropriate help panel
