--- title: CLI description: "Manage memories from your terminal. Available for Python and Node.js." icon: "terminal" iconType: "solid" --- The mem0 CLI lets you add, search, list, update, and delete memories directly from the terminal. It works with the Mem0 Platform API and is available as both a Python package and an npm package. Both implementations provide identical behavior — same commands, same options, same output formats. ## Installation ```bash pip pip install mem0-cli ``` ```bash npm npm install -g @mem0/cli ``` ## Authentication Run the interactive setup wizard to configure your API key: ```bash mem0 init ``` This prompts for your API key and a default user ID, validates the connection, and saves the configuration locally. For CI/CD or non-interactive environments, pass both values as flags: ```bash mem0 init --api-key m0-xxx --user-id alice ``` You can also set your API key via environment variable: ```bash export MEM0_API_KEY="m0-xxx" ``` ## Quick start ```bash # Add a memory mem0 add "I prefer dark mode and use vim keybindings" --user-id alice # Search memories mem0 search "What are Alice's preferences?" --user-id alice # List all memories for a user mem0 list --user-id alice # Get a specific memory mem0 get # Update a memory mem0 update "I prefer light mode now" # Delete a memory mem0 delete ``` ## Commands ### `mem0 init` Interactive setup wizard. Prompts for your API key and default user ID. ```bash mem0 init mem0 init --api-key m0-xxx --user-id alice ``` ### `mem0 add` Add a memory from text, a JSON messages array, a file, or stdin. ```bash mem0 add "I prefer dark mode" --user-id alice mem0 add --file conversation.json --user-id alice echo "Loves hiking on weekends" | mem0 add --user-id alice ``` | Flag | Description | |------|-------------| | `-u, --user-id` | Scope to a user | | `--agent-id` | Scope to an agent | | `--messages` | Conversation messages as JSON | | `-f, --file` | Read messages from a JSON file | | `-m, --metadata` | Custom metadata as JSON | | `--categories` | Categories (JSON array or comma-separated) | | `--graph / --no-graph` | Enable or disable graph memory extraction | | `-o, --output` | Output format: `text`, `json`, `quiet` | ### `mem0 search` Search memories using natural language. ```bash mem0 search "dietary restrictions" --user-id alice mem0 search "preferred tools" --user-id alice --output json --top-k 5 ``` | Flag | Description | |------|-------------| | `-u, --user-id` | Filter by user | | `-k, --top-k` | Number of results (default: 10) | | `--threshold` | Minimum similarity score (default: 0.3) | | `--rerank` | Enable reranking | | `--keyword` | Use keyword search instead of semantic | | `--filter` | Advanced filter expression (JSON) | | `--graph / --no-graph` | Enable or disable graph in search | | `-o, --output` | Output format: `text`, `json`, `table` | ### `mem0 list` List memories with optional filters and pagination. ```bash mem0 list --user-id alice mem0 list --user-id alice --category preferences --output json mem0 list --user-id alice --after 2024-01-01 --page-size 50 ``` | Flag | Description | |------|-------------| | `-u, --user-id` | Filter by user | | `--page` | Page number (default: 1) | | `--page-size` | Results per page (default: 100) | | `--category` | Filter by category | | `--after` | Created after date (YYYY-MM-DD) | | `--before` | Created before date (YYYY-MM-DD) | | `-o, --output` | Output format: `text`, `json`, `table` | ### `mem0 get` Retrieve a specific memory by ID. ```bash mem0 get 7b3c1a2e-4d5f-6789-abcd-ef0123456789 mem0 get 7b3c1a2e-4d5f-6789-abcd-ef0123456789 --output json ``` ### `mem0 update` Update the text or metadata of an existing memory. ```bash mem0 update "Updated preference text" mem0 update --metadata '{"priority": "high"}' echo "new text" | mem0 update ``` ### `mem0 delete` Delete a single memory, all memories for a scope, or an entire entity. ```bash # Delete a single memory mem0 delete # Delete all memories for a user mem0 delete --all --user-id alice --force # Delete all memories project-wide mem0 delete --all --project --force # Preview what would be deleted mem0 delete --all --user-id alice --dry-run ``` | Flag | Description | |------|-------------| | `--all` | Delete all memories matching scope filters | | `--entity` | Delete the entity and all its memories | | `--project` | With `--all`: delete all memories project-wide | | `--dry-run` | Preview without deleting | | `--force` | Skip confirmation prompt | ### `mem0 import` Bulk import memories from a JSON file. ```bash mem0 import data.json --user-id alice ``` The file should be a JSON array where each item has a `memory` (or `text` or `content`) field and optional `user_id`, `agent_id`, and `metadata` fields. ### `mem0 config` View or modify the local CLI configuration. ```bash mem0 config show # Display current config (secrets redacted) mem0 config get api_key # Get a specific value mem0 config set user_id bob # Set a value ``` ### `mem0 entities` List or delete entities (users, agents, apps). ```bash mem0 entities list mem0 entities list --type agent --output json mem0 entities delete --user-id alice --force ``` ### `mem0 status` Verify your API connection and display the current project. ```bash mem0 status ``` ### `mem0 version` Print the CLI version. ```bash mem0 version ``` ## Output formats All commands support the `--output` flag to control how results are displayed: | Format | Description | |--------|-------------| | `text` | Human-readable output with colors and formatting (default for most commands) | | `json` | Structured JSON, suitable for piping to `jq` or consumption by AI agents | | `table` | Tabular format (default for `list`) | | `quiet` | Minimal output — just IDs or status codes | Example with JSON output: ```bash mem0 search "user preferences" --user-id alice --output json | jq '.data.results[].memory' ``` ## Use with AI agents The CLI is designed to be used by AI agents and automation tools. Two features make this straightforward: - **`--output json`** returns structured data that agents can parse directly - **`mem0 help --json`** returns the full command tree as JSON, so agents can discover available commands programmatically ```bash # Agent adds a memory mem0 add "User prefers concise responses" --user-id user-42 --output quiet # Agent searches memories and parses results mem0 search "response preferences" --user-id user-42 --output json ``` For non-interactive environments (CI, agent runtimes), use `mem0 init --api-key --user-id` or set the `MEM0_API_KEY` environment variable to skip interactive prompts. ## Environment variables | Variable | Description | |----------|-------------| | `MEM0_API_KEY` | API key (overrides config file) | | `MEM0_BASE_URL` | API base URL | | `MEM0_USER_ID` | Default user ID | | `MEM0_AGENT_ID` | Default agent ID | | `MEM0_APP_ID` | Default app ID | | `MEM0_RUN_ID` | Default run ID | | `MEM0_ENABLE_GRAPH` | Enable graph memory (`true` / `false`) | Environment variables take precedence over values in the config file, which take precedence over defaults. ## Global flags These flags are available on all commands that interact with the API: | Flag | Description | |------|-------------| | `--api-key` | Override the configured API key for this request | | `--base-url` | Override the configured API base URL for this request | | `-o, --output` | Set the output format | ## What's next Store your first memory in under five minutes using the SDK or CLI Learn about add, search, update, and delete operations in depth See the complete REST API documentation