The official CLI for mem0 — the memory layer for AI agents
Project description
mem0 CLI (Python)
The official command-line interface for mem0 — the memory layer for AI agents. Python implementation.
Built for AI agents. Pass
--agent(or--json) as a global flag on any command to get structured JSON output optimized for programmatic consumption — sanitized fields, no colors or spinners, and errors as JSON too.
Prerequisites
- Python 3.10+
Installation
Using pipx (recommended)
pipx install mem0-cli
Using pip
pip install mem0-cli
Note: On macOS with Homebrew Python,
pip installoutside a virtual environment will fail with anexternally-managed-environmenterror (PEP 668). Usepipxinstead, or install inside a virtual environment.
Quick start
# Interactive setup wizard
mem0 init
# Or login via email
mem0 init --email alice@company.com
# Or authenticate with an existing API key
mem0 init --api-key m0-xxx
# 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 <memory-id>
# Update a memory
mem0 update <memory-id> "I switched to light mode"
# Delete a memory
mem0 delete <memory-id>
Commands
mem0 init
Interactive setup wizard. Prompts for your API key and default user ID.
mem0 init
mem0 init --api-key m0-xxx --user-id alice
mem0 init --email alice@company.com
If an existing configuration is detected, the CLI asks for confirmation before overwriting. Use --force to skip the prompt (useful in CI/CD).
mem0 init --api-key m0-xxx --user-id alice --force
| Flag | Description |
|---|---|
--api-key |
API key (skip prompt) |
-u, --user-id |
Default user ID (skip prompt) |
--email |
Login via email verification code |
--code |
Verification code (use with --email for non-interactive login) |
--force |
Overwrite existing config without confirmation |
mem0 add
Add a memory from text, a JSON messages array, a file, or stdin.
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.
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.
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.
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.
mem0 update <memory-id> "Updated preference text"
mem0 update <memory-id> --metadata '{"priority": "high"}'
echo "new text" | mem0 update <memory-id>
mem0 delete
Delete a single memory, all memories for a scope, or an entire entity.
# Delete a single memory
mem0 delete <memory-id>
# 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.
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.
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 entity
List or delete entities (users, agents, apps, runs).
mem0 entity list users
mem0 entity list agents --output json
mem0 entity delete --user-id alice --force
mem0 event
Inspect background processing events created by async operations (e.g. bulk deletes, large add jobs).
# List recent events
mem0 event list
# Check the status of a specific event
mem0 event status <event-id>
| Flag | Description |
|---|---|
-o, --output |
Output format: text, json |
mem0 status
Verify your API connection and display the current project.
mem0 status
mem0 version
Print the CLI version.
mem0 version
Agent mode
Pass --agent (or its alias --json) as a global flag on any command to get output designed for AI agent tool loops:
mem0 --agent search "user preferences" --user-id alice
mem0 --agent add "User prefers dark mode" --user-id alice
mem0 --agent list --user-id alice
mem0 --agent delete --all --user-id alice --force
Every command returns the same envelope shape:
{
"status": "success",
"command": "search",
"duration_ms": 134,
"scope": { "user_id": "alice" },
"count": 2,
"data": [
{ "id": "abc-123", "memory": "User prefers dark mode", "score": 0.97, "created_at": "2026-01-15", "categories": ["preferences"] }
]
}
What agent mode does differently from --output json:
- Sanitized
data: only the fields an agent needs (id, memory, score, etc.) — no internal API noise - No human output: spinners, colors, and banners are suppressed entirely
- Errors as JSON: errors go to stdout as
{"status": "error", "command": "...", "error": "..."}with a non-zero exit code
Use mem0 help --json to get the full command tree as JSON — useful for agents that need to self-discover available commands.
Output formats
Control how results are displayed with --output:
| Format | Description |
|---|---|
text |
Human-readable with colors and formatting (default) |
json |
Structured JSON for piping to jq (raw API response) |
table |
Tabular format (default for list) |
quiet |
Minimal — just IDs or status codes |
agent |
Structured JSON envelope with sanitized fields (set by --agent/--json) |
Global flags
These flags are available on all commands:
| Flag | Description |
|---|---|
--json |
Enable agent mode: structured JSON envelope output, no colors or spinners |
--agent |
Alias for --json |
--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 |
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.
Development
cd cli/python
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# Run during development
python -m mem0_cli --help
mem0 add "test memory" --user-id alice
Releasing
- Update
versioninpyproject.toml - Create a GitHub Release with tag
cli-v<version>(e.g.cli-v0.2.1)
For a pre-release, use a beta version like 0.2.1b1 and check the pre-release checkbox.
Documentation
Full documentation is available at docs.mem0.ai/platform/cli.
License
Apache-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mem0_cli-0.2.2.tar.gz.
File metadata
- Download URL: mem0_cli-0.2.2.tar.gz
- Upload date:
- Size: 34.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68ba27228e9e3ec0598138d31bdf291ba3c0136feceb1d07d087ee7c74319cb4
|
|
| MD5 |
721bffcd1ebf41f7562882ed4c5f751e
|
|
| BLAKE2b-256 |
9126d19eb2e4c6ab90b230865eb23914a719fcd612e5682c122bd856caaf4cd7
|
Provenance
The following attestation bundles were made for mem0_cli-0.2.2.tar.gz:
Publisher:
cli-python-cd.yml on mem0ai/mem0
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mem0_cli-0.2.2.tar.gz -
Subject digest:
68ba27228e9e3ec0598138d31bdf291ba3c0136feceb1d07d087ee7c74319cb4 - Sigstore transparency entry: 1243253568
- Sigstore integration time:
-
Permalink:
mem0ai/mem0@07f0d4f1e0af1815c1ecb730fbc56380cd38ee6a -
Branch / Tag:
refs/tags/cli-v0.2.2 - Owner: https://github.com/mem0ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cli-python-cd.yml@07f0d4f1e0af1815c1ecb730fbc56380cd38ee6a -
Trigger Event:
release
-
Statement type:
File details
Details for the file mem0_cli-0.2.2-py3-none-any.whl.
File metadata
- Download URL: mem0_cli-0.2.2-py3-none-any.whl
- Upload date:
- Size: 41.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2309994baca41a25f183841fcfb0e0929ce246cf1f3d344e77fd15dc62d1cde6
|
|
| MD5 |
e66e4180dae635ae3d53fac4aeedc128
|
|
| BLAKE2b-256 |
3a896a4253a060001c81641d584aaf82180d85b3635d0b711612410be197db31
|
Provenance
The following attestation bundles were made for mem0_cli-0.2.2-py3-none-any.whl:
Publisher:
cli-python-cd.yml on mem0ai/mem0
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mem0_cli-0.2.2-py3-none-any.whl -
Subject digest:
2309994baca41a25f183841fcfb0e0929ce246cf1f3d344e77fd15dc62d1cde6 - Sigstore transparency entry: 1243253583
- Sigstore integration time:
-
Permalink:
mem0ai/mem0@07f0d4f1e0af1815c1ecb730fbc56380cd38ee6a -
Branch / Tag:
refs/tags/cli-v0.2.2 - Owner: https://github.com/mem0ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cli-python-cd.yml@07f0d4f1e0af1815c1ecb730fbc56380cd38ee6a -
Trigger Event:
release
-
Statement type: