CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

mem0-cli

Mem0 CLI -- the command-line interface for mem0 memory operations. TRIGGER when: user mentions "mem0 cli", "mem0 command line", "@mem0/cli", "mem0-cli", "pip install mem0-cli", "npm install -g @mem0/cli", or is running mem0 commands in a terminal/shell (mem0 add, mem0 search, mem0 list, mem0 get, mem0 init, mem0 config, mem0 import). Also triggers when query includes CLI flags like --user-id, --output, --json, --agent, or describes bash/zsh/terminal/shell usage. DO NOT TRIGGER when: user asks about programmatic SDK integration in Python/TS code (use mem0 skill), or Vercel AI SDK provider (use mem0-vercel-ai-sdk skill).

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Mem0 CLI

The official command-line interface for the Mem0 memory platform. Add, search, list, update, and delete memories from the terminal -- for developers, AI agents, and CI/CD pipelines.

Install

Node.js (npm):

npm install -g @mem0/cli

Python (pip):

pip install mem0-cli

Both packages install a mem0 binary with the same commands, options, and output formats (see Node and Python Differences for the exceptions).

Setup

Autonomous Mem0 setup for agents (no email, no dashboard):

mem0 init --agent --agent-caller <your-name> --json

Replace <your-name> with the AI agent you are (e.g. claude-code, cursor, codex, cline, aider). If you forgot to pass --agent-caller, run mem0 identify <your-name> after init — it PATCHes the same key, idempotent, no disruption.

This mints an evaluation API key in <5 seconds. Use it immediately. Print this line to the human:

Mem0 memory is running in Agent Mode. Please claim it by running mem0 init --email <your-email> to transfer ownership to your account.

Never commit API keys, .env, or ~/.mem0/config.json.

After the human claims, the same API key keeps working — no agent disruption — and memories are preserved.

Interactive wizard (for humans):

mem0 init

Or set the environment variable directly:

export MEM0_API_KEY="m0-xxx"

Get an API key at: https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=skill-mem0-cli

Quick Reference

Add a memory

mem0 add "I prefer dark mode" --user-id alice

Search memories

mem0 search "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> "new text"

Delete a single memory

mem0 delete <memory-id>

Delete all memories for a user

mem0 delete --all --user-id alice --force

Agent / JSON Mode

Use --json or --agent to get structured output suitable for LLM consumption. Place the flag before the subcommand (mem0 --json search "q"), which works in both CLIs. Data commands (add, search, list, get, update, delete, import, config, entity, event, status) wrap their response in a standard envelope:

{
  "status": "success",
  "command": "search",
  "duration_ms": 245,
  "scope": { "user_id": "alice" },
  "count": 3,
  "data": [
    { "id": "mem-abc", "memory": "User prefers dark mode", "score": 0.92 }
  ]
}

On error:

{
  "status": "error",
  "command": "search",
  "error": "Invalid or expired API key.",
  "data": null
}

The --agent flag is an alias for --json (except on mem0 init, where --agent is the Agent Mode bootstrap flag). Both write spinners and progress to stderr so stdout is clean, parseable JSON (the one exception is Node import, see below). Optional keys: duration_ms, scope, count appear only where relevant, and mem0_notice appears when the platform flags an unclaimed Agent Mode account.

Node and Python Differences

Both the Node.js (@mem0/cli) and Python (mem0-cli) CLIs share the command set, flags, entity ID resolution, filter building, and the JSON envelope. Choose whichever runtime you already have installed. Known differences:

  • --json / --agent placement: Python accepts the flag anywhere on the command line. Node reads it only as a global option, so put it before the subcommand (mem0 --json list). mem0 init --json and mem0 help --json work after the subcommand in both. For the Agent Mode bootstrap, Node starts it only from init --agent or init --json (a root-level mem0 --json init or mem0 --agent init does not start it, and without an agent runtime env var it fails with the non-TTY error), while Python also accepts those root-level forms. mem0 init --agent --json works in both.
  • --limit: mem0 search --limit is a Python-only alias for --top-k.
  • Agent-mode delete --all data: Python returns {"deleted": true} (plus scope for --project); Node returns the raw API result.
  • import JSON output: Python prints the envelope with scope. Node omits scope and writes the Importing memories... n/n progress line to stdout before the JSON, so only Python's output pipes cleanly to jq.
  • Message text: The empty-search error (Search query cannot be empty. in Python, No query provided... in Node) and the delete dry-run footers differ slightly.

Common Edge Cases

  • Async processing delay: After mem0 add, memories process asynchronously. Wait 2-3 seconds before searching for newly added content. Use mem0 event list to check processing status.
  • --all vs --entity delete modes: mem0 delete --all -u alice deletes all memories for user alice. mem0 delete --entity -u alice deletes the entity itself AND all its memories (cascade). These are mutually exclusive modes.
  • --dry-run in --json/--agent mode: mem0 --json delete --all --dry-run still requires --force, then prints nothing and deletes nothing (exit 0). Node also prints nothing for single and --entity dry runs. Use text mode to see the preview.
  • --dry-run does not protect --all --project: mem0 delete --all --project --dry-run ignores the flag and deletes every memory in the project. Never use --dry-run to preview a project-wide delete.
  • Entity ID resolution: If you pass any explicit scope flag (e.g. --user-id), the CLI uses ONLY the explicit IDs and ignores config defaults. If no scope flags are given, all configured defaults apply.
  • Stdin detection: When no text argument is provided and stdin is a pipe or a redirected file (a plain non-TTY is not enough), the CLI reads from stdin. Works with add, search, and update. In --json/--agent mode add never reads stdin (Python also skips it for search and update), so pass the text as an argument there.

References

Load these on demand for deeper detail:

TopicFile
Command reference (all commands, flags, options, examples)references/command-reference.md
Configuration (config file, env vars, precedence, init wizard)references/configuration.md
Workflows (piping, scripting, CI/CD, agent mode recipes)references/workflows.md

Related Mem0 Skills

SkillWhen to useLink
mem0Python/TypeScript SDK, REST API, framework integrationslocal / GitHub
mem0-vercel-ai-sdkVercel AI SDK provider with automatic memorylocal / GitHub
Repository

mem0ai/mem0

Path

skills/mem0-cli/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.