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).

Install
npx skills add 'https://github.com/mem0ai/mem0/tree/main/skills/mem0-cli'
Download bundle ↓
main · 0df3e4bScanned 2026-09-17

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

references/configuration.md

references/configuration.mdBrowse 6 files
View on GitHub
← Back to SKILL.md

Mem0 CLI Configuration

Everything about configuring the mem0 CLI: config file format, environment variables, the init wizard, and precedence rules.


Config File Location

PathPermissionsDescription
~/.mem0/0700 (owner rwx)Config directory. Created automatically by mem0 init.
~/.mem0/config.json0600 (owner rw)Config file. Contains API key, defaults, and platform settings.

The restricted permissions ensure API keys are not world-readable.


Config File Schema

{
  "version": 1,
  "defaults": {
    "user_id": "",
    "agent_id": "",
    "app_id": "",
    "run_id": ""
  },
  "platform": {
    "api_key": "",
    "base_url": "https://api.mem0.ai"
  }
}

Field Reference

FieldTypeDefaultDescription
versioninteger1Config schema version.
defaults.user_idstring""Default user ID for scoping commands.
defaults.agent_idstring""Default agent ID for scoping commands.
defaults.app_idstring""Default app ID for scoping commands.
defaults.run_idstring""Default run ID for scoping commands.
platform.api_keystring""API key for the Mem0 Platform.
platform.base_urlstring"https://api.mem0.ai"Base URL for API requests.

mem0 init Wizard

The init command provides two authentication flows:

API Key Flow (default)

# Fully interactive:
mem0 init

# Fully non-interactive:
mem0 init --api-key m0-xxx --user-id alice

Interactive mode steps:

  1. Displays the mem0 banner.
  2. Checks for existing config. If found with an API key, asks for confirmation to overwrite.
  3. Prompts for API key (input masked with * characters; supports backspace and Ctrl+U to clear).
  4. Prompts for default user ID (default value: mem0-cli).
  5. Validates the connection by calling the status endpoint.
  6. Saves config to ~/.mem0/config.json with 0600 permissions.
  7. Prints success message.

Non-interactive mode: When both --api-key and --user-id are provided, skips all prompts and saves directly. When running in a non-TTY without both flags, prints an error:

Non-interactive terminal detected and missing required flags.
Usage: mem0 init --api-key <key> --user-id <id>

Email Login Flow

# Interactive (prompts for code):
mem0 init --email alice@company.com

# Fully non-interactive:
mem0 init --email alice@company.com --code 482901

Steps:

  1. Sends a 6-digit verification code to the email via POST /api/v1/auth/email_code/.
  2. If --code is provided, verifies immediately. Otherwise prompts for the code.
  3. On success: receives API key, org_id, and project_id from the server.
  4. Saves to config. Creates a new account if the email is not registered.

Cannot be combined with --api-key.

Force Overwrite

If ~/.mem0/config.json already exists with an API key, mem0 init warns and asks for confirmation. Use --force to skip:

mem0 init --api-key m0-new-key --user-id alice --force

mem0 config Subcommands

mem0 config show

Displays the current configuration as a formatted table (text mode) or JSON envelope (json mode). API keys are always redacted.

mem0 config show
mem0 config show -o json

mem0 config get <key>

Reads a single configuration value. The key uses dotted notation.

mem0 config get platform.api_key     # prints: m0-x...xxxx (redacted)
mem0 config get defaults.user_id     # prints: alice

Valid keys:

  • platform.api_key
  • platform.base_url
  • defaults.user_id
  • defaults.agent_id
  • defaults.app_id
  • defaults.run_id

Unknown keys print an error message.

mem0 config set <key> <value>

Sets a configuration value and saves the config file.

mem0 config set defaults.user_id alice
mem0 config set platform.base_url https://api.mem0.ai

Type coercion:

  • Boolean fields accept true, 1, yes (case-insensitive) as true. Anything else is false.
  • Integer fields are parsed with parseInt.
  • String fields are stored as-is.

mem0 config clear

Removes the config file (~/.mem0/config.json).

mem0 config clear

Environment Variables

Environment variables override config file values but are overridden by CLI flags.

VariableConfig PathTypeDefault
MEM0_API_KEYplatform.api_keystring""
MEM0_BASE_URLplatform.base_urlstring"https://api.mem0.ai"
MEM0_USER_IDdefaults.user_idstring""
MEM0_AGENT_IDdefaults.agent_idstring""
MEM0_APP_IDdefaults.app_idstring""
MEM0_RUN_IDdefaults.run_idstring""

Precedence

Configuration values are resolved in this order (highest priority first):

1. CLI flags        --api-key, --user-id, --base-url, etc.
2. Environment vars MEM0_API_KEY, MEM0_USER_ID, etc.
3. Config file      ~/.mem0/config.json
4. Defaults         Hardcoded defaults (empty strings, false, https://api.mem0.ai)

Example: If your config file has user_id: "bob", the env var MEM0_USER_ID=charlie is set, and you pass --user-id alice on the command line, the effective user_id is alice.


API Key Redaction Rules

Whenever an API key is displayed (in config show, config get, status output, etc.), it is redacted:

ConditionOutput
Empty string(not set)
Length <= 8First 2 characters + ***
Length > 8First 4 characters + ... + last 4 characters

Examples:

  • "" -> (not set)
  • "m0-abc" -> m0***
  • "m0-abcdefghijklmnop" -> m0-a...mnop

The redaction function is named redact_key (Python) / redactKey (Node).


Dotted Key Map

The config get and config set commands use dotted key paths. Here is the full mapping:

Dotted KeySectionField
platform.api_keyplatformapi_key
platform.base_urlplatformbase_url
defaults.user_iddefaultsuser_id
defaults.agent_iddefaultsagent_id
defaults.app_iddefaultsapp_id
defaults.run_iddefaultsrun_id
Referenced from SKILL.md