docs: improve CLI dev workflow and prioritize Node.js installation (#4579)

This commit is contained in:
Saket Aryan
2026-03-28 06:20:03 +05:30
committed by GitHub
parent 3225e30859
commit 13d42a99e9
8 changed files with 118 additions and 61 deletions
+1 -1
View File
@@ -37,8 +37,8 @@ The `cli/` directory provides the mem0 CLI in two languages with a shared specif
| Language | Directory | Package Name | Install Command |
|------------|------------|---------------|----------------------------|
| Python | `python/` | `mem0-cli` | `pip install mem0-cli` |
| TypeScript | `node/` | `@mem0/cli` | `npm install -g @mem0/cli` |
| Python | `python/` | `mem0-cli` | `pip install mem0-cli` |
Both implementations produce a binary named `mem0` and provide **identical CLI behavior** -- same commands, same options, same output formats, same error messages.
+3 -3
View File
@@ -5,11 +5,11 @@ The official command-line interface for [mem0](https://mem0.ai) — the memory l
## Installation
```bash
pip install mem0-cli
npm install -g @mem0/cli
```
```bash
npm install -g @mem0/cli
pip install mem0-cli
```
Both packages install a `mem0` binary with identical behavior.
@@ -86,8 +86,8 @@ mem0 search "preferences" --user-id alice --output json | jq '.data.results[].me
| Language | Directory | Package | Docs |
|----------|-----------|---------|------|
| Python | [`python/`](./python/) | `mem0-cli` | [README](./python/README.md) |
| TypeScript | [`node/`](./node/) | `@mem0/cli` | [README](./node/README.md) |
| Python | [`python/`](./python/) | `mem0-cli` | [README](./python/README.md) |
## Documentation
+3
View File
@@ -21,6 +21,9 @@
"license": "Apache-2.0",
"author": "mem0.ai <founders@mem0.ai>",
"keywords": ["mem0", "memory", "ai", "agents", "cli"],
"publishConfig": {
"access": "public"
},
"dependencies": {
"commander": "^12.0.0",
"chalk": "^5.3.0",
+30 -17
View File
@@ -1,30 +1,43 @@
.PHONY: install dev lint format test build clean publish publish-test
VENV := .venv
PYTHON := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
install:
pip install -e .
.PHONY: install dev lint format test build clean publish publish-test shell
dev:
pip install -e ".[dev]"
$(VENV)/bin/activate:
python3 -m venv $(VENV)
$(PIP) install -U pip
lint:
ruff check .
ruff format --check .
install: $(VENV)/bin/activate
$(PIP) install -e .
format:
ruff check --fix .
ruff format .
dev: $(VENV)/bin/activate
$(PIP) install -e ".[dev]"
test:
pytest
lint: dev
$(VENV)/bin/ruff check .
$(VENV)/bin/ruff format --check .
build: clean
hatch build
format: dev
$(VENV)/bin/ruff check --fix .
$(VENV)/bin/ruff format .
test: dev
$(VENV)/bin/pytest
build: clean $(VENV)/bin/activate
$(PIP) install hatch
$(VENV)/bin/hatch build
clean:
rm -rf dist/
publish: build
hatch publish
$(VENV)/bin/hatch publish
publish-test: build
hatch publish --repo test
$(VENV)/bin/hatch publish --repo test
shell: $(VENV)/bin/activate
@echo "Spawning a new shell with the virtual environment activated..."
@VIRTUAL_ENV=$(CURDIR)/$(VENV) PATH=$(CURDIR)/$(VENV)/bin:$$PATH exec $(SHELL)
+10
View File
@@ -4,10 +4,20 @@ The official command-line interface for [mem0](https://mem0.ai) — the memory l
## Installation
### Using pipx (recommended)
```bash
pipx install mem0-cli
```
### Using pip
```bash
pip install mem0-cli
```
> **Note:** On macOS with Homebrew Python, `pip install` outside a virtual environment will fail with an `externally-managed-environment` error ([PEP 668](https://peps.python.org/pep-0668/)). Use `pipx` instead, or install inside a virtual environment.
## Quick Start
```bash
+64 -33
View File
@@ -3,8 +3,7 @@
## Prerequisites
- Python **3.10+**
## Setup
- `make` (optional — you can use plain Python commands instead)
All commands below should be run from the `python/` directory:
@@ -12,7 +11,21 @@ All commands below should be run from the `python/` directory:
cd python
```
## Install local (editable) + run
## Setup
### Using Make (recommended)
All `make` targets automatically create a virtual environment (`.venv/`) and install the required dependencies — no manual setup needed.
```bash
# Install the CLI in editable mode
make install
# Install with dev tools (tests + linting)
make dev
```
### Using Python directly
```bash
python3 -m venv .venv
@@ -22,43 +35,32 @@ python -m pip install -U pip
# Install in editable mode
pip install -e .
# Run
mem0 --help
mem0 version
```
> **After moving to the new directory structure:** If you previously had the CLI installed from the old repo root, you need to re-run `pip install -e .` from inside the `python/` directory to pick up the new location.
## Run without installing globally
This still installs the package into your active virtualenv (editable), but you can invoke it via module execution:
```bash
source .venv/bin/activate
pip install -e .
python -m mem0_cli --help
```
## Optional extras
### OSS integration extras
```bash
pip install -e ".[oss]"
```
### Dev tools (tests/lint)
```bash
# With dev tools
pip install -e ".[dev]"
```
## Make targets
| Target | Description |
| ------------------- | ------------------------------------------------ |
| `make install` | Create venv and install the CLI (editable mode) |
| `make dev` | Create venv and install CLI + dev dependencies |
| `make test` | Run all tests (installs dev deps if needed) |
| `make lint` | Run linter and format check |
| `make format` | Auto-fix lint issues and format code |
| `make build` | Build distribution packages |
| `make clean` | Remove `dist/` |
| `make publish` | Build and publish to PyPI |
| `make publish-test` | Build and publish to Test PyPI |
| `make shell` | Open a new shell with the venv activated |
## Run tests
```bash
pip install -e ".[dev]"
# Using Make
make test
# Run all tests
# Using Python directly
pytest
# Run a specific test file
@@ -68,9 +70,38 @@ pytest tests/test_cli_integration.py
pytest -k test_help
```
## Run the CLI
```bash
# Using Make — drop into an activated shell
make shell
mem0 --help
# Using Python directly (with venv activated)
source .venv/bin/activate
mem0 --help
mem0 version
# Or run without activating
.venv/bin/mem0 --help
```
## Lint
```bash
# Using Make
make lint # check only
make format # auto-fix
# Using Python directly (with venv activated)
ruff check .
ruff format .
```
## Optional extras
### OSS integration
```bash
pip install -e ".[oss]"
```