Python 3.13+
Required for the MCP server and hook CLIs. Verify with python3 --version.
Palimem runs as a local service on your machine. No cloud account. No mandatory SaaS. Your memory data lives in a SQLite database on disk you control.
Python 3.13+
Required for the MCP server and hook CLIs. Verify with python3 --version.
Node.js 18+
Required for the MCP stdio wrapper and operator CLI. Verify with node --version.
Git
Clone the repository to get started.
Claude Code, Cursor, or another MCP harness
At least one supported coding agent.
Homebrew (recommended):
brew install python@3.13 nodeVerify:
python3 --version # Python 3.13.xnode --version # v18.x or highermacOS data directory default: .ai-memory/data inside your project root.
Ubuntu/Debian:
sudo apt updatesudo apt install python3.13 python3.13-venv nodejs npmFedora/RHEL:
sudo dnf install python3.13 nodejs npmVerify:
python3 --versionnode --versionwinget:
winget install Python.Python.3.13winget install OpenJS.NodeJS.LTSOr download installers:
Windows data directory default: .ai-memory\data inside your project root. Use %APPDATA%\palimem\data for a user-global store.
Windows MCP path note: Use absolute paths with forward slashes in MCP config files, or use the ai-memory connect CLI which resolves paths automatically.
Clone the repository
git clone https://github.com/palimem/palimemcd palimemInstall Node.js dependencies
cd appnpm installcd ..This installs the MCP stdio wrapper (memory-service-mcp.js) and the operator CLI (ai-memory.js).
Verify the component validation entrypoint (optional, for contributors)
python3 tests/run_validation.pyExpect 143/143 behaviors passing against spec v1.7.0. This is the orchestrator-facing black-box validation suite.
Optional maintainer release gate:
bash examples/claude-code/demo/phase6-readiness.shbash integrations/run_readiness.shVerify the MCP server (after connecting a harness)
Ask your agent to call tools/list (expect 11 tools), then memory_status with scope and namespace (expect ok: true and index_status.state: "current").
Connect to your harness
Use ai-memory connect <harness> to write the MCP config for your coding agent:
# Claude Code: copy .mcp.json manually (see integration page)# Cursor:node app/scripts/ai-memory.js connect cursor \ --project-root "$(pwd)" --data-dir .ai-memory/data
# Windsurf:node app/scripts/ai-memory.js connect windsurf \ --project-root "$(pwd)" --data-dir .ai-memory/data
# Copilot CLI:node app/scripts/ai-memory.js connect copilot \ --project-root "$(pwd)" --data-dir .ai-memory/data
# Codex:node app/scripts/ai-memory.js connect codex \ --project-root "$(pwd)" --data-dir .ai-memory/data
# VS Code + Copilot Agent / Copilot IDE:node app/scripts/ai-memory.js connect vscode \ --project-root "$(pwd)" --data-dir .ai-memory/data
# Gemini CLI:node app/scripts/ai-memory.js connect gemini \ --project-root "$(pwd)" --data-dir .ai-memory/dataPalimem stores all memory in a SQLite database. The default location is .ai-memory/data relative to your project root.
| Environment variable | Default | Purpose |
|---|---|---|
MEMORY_SERVICE_DATA_DIR |
.ai-memory/data |
Override the data directory path |
MEMORY_SERVICE_NAMESPACE |
workspace folder name | Default namespace for session scope |
MEMORY_SERVICE_PYTHON |
python3 / py -3 |
Python interpreter for hook CLIs |
Using an absolute path (recommended for shared machines):
export MEMORY_SERVICE_DATA_DIR="$HOME/.local/share/palimem/data"Future rename: The .ai-memory/ prefix will become .palimem/ in a future version. Both names resolve to the same store during the migration window.
A Docker image is available for operators who prefer containerised deployment. The image exposes the MCP stdio server via a subprocess entrypoint.
# Informational — package publish pendingdocker run --rm -v "$(pwd)/.ai-memory:/data" \ ghcr.io/palimem/palimem-service:1.7.0 \ --data-dir /dataSee the component spec for Docker deployment details.
If you prefer to run the Python MCP server directly without the Node wrapper:
python3 app/run_production_stdio_server.pyPoint your MCP config at python3 with run_production_stdio_server.py as the argument.
After connecting to your harness, ask your agent to call:
memory_status with scope "repository" and namespace "<project-name>"Expected: 11 tools from tools/list, and memory_status with ok: true and index_status.state: "current" for your scope and namespace.
Choose your harness for full setup instructions: