Skip to main content

What You’ll Need

Before installing the CEMS client, you need two things from your CEMS admin:

Server URL

Example: https://cems.example.com

API Key

Starts with cems_usr_...
Don’t have a server yet? See Server Deployment to set up your own CEMS server.

Installation

1

Run the installer

The easiest way to install CEMS is with the one-line installer:
curl -fsSL https://getcems.com/install.sh | bash
The installer will:
  1. Install uv if missing
  2. Install CEMS CLI tools (cems, cems-server, cems-observer)
  3. Prompt for your API URL and key
  4. Let you choose which IDEs to configure
Set environment variables and pipe directly:
CEMS_API_KEY=your-key-here CEMS_API_URL=https://cems.example.com \
  curl -fsSL https://getcems.com/install.sh | bash
2

Choose your IDE

The installer will ask which IDE(s) to configure:
Installs to ~/.claude/:
  • 6 hooks (session lifecycle)
  • 6 skills (/remember, /recall, /share, /forget, /context, memory guide)
  • 2 commands
  • Settings merged into settings.json
You can select multiple IDEs or choose “all” to configure everything.
3

Verify installation

Check that CEMS is installed and can connect to your server:
cems --version
cems health
Expected output:
✓ Connected to CEMS server
✓ API key valid
✓ User: yourname

Your First Memory

Now let’s add your first memory and recall it.
# Add a personal preference
cems add "I prefer Python for backend development"

# Search for it
cems search "backend preferences"

# List all your memories
cems list

Try Automatic Memory Injection

CEMS automatically injects relevant memories when you chat with your AI assistant.
1

Add project-specific memories

In a git repository, add some project context:
/remember This project uses PostgreSQL with snake_case column names
/remember We follow REST conventions with /api/v1/ prefix
/remember Tests use pytest with fixtures in tests/conftest.py
2

Start a new session

Close and reopen your IDE, or start a new Claude Code session.
3

Ask a related question

Try asking something related to your memories:
"How should I name this new database table?"
Your AI assistant will have your project conventions in context automatically!

Understanding Memory Scope

CEMS supports two memory scopes:

Personal Memory

Use /remember for personal preferences and private notes.Only you can see these memories.
/remember I prefer dark mode
/remember My testing style uses fixtures

Shared Memory

Use /share for team conventions and decisions.Everyone on your team can see these.
/share API endpoints use /api/v1/ prefix
/share We deploy to production via Coolify

Advanced Features

Organize memories with categories and tags:
/remember --category preferences I prefer Python type hints
/remember --category decisions --tags db,postgres We use PostgreSQL
Search by category:
/recall --category decisions database choice
Memories automatically capture the git project context.When you create a memory in myorg/webapp, it gets tagged with project:myorg/webapp.When you search from that same project, those memories get boosted. When you search from a different project, they’re deprioritized.This prevents cross-project noise while preserving access to all memories.
The observer daemon runs in the background and watches your session transcripts.It extracts high-level observations like:
  • “User prefers to deploy via Docker Compose”
  • “Project uses PostgreSQL for primary storage”
  • “Team follows conventional commits style”
These observations are stored as memories and help build context over time.Check observer status:
ps aux | grep cems-observer
CEMS runs scheduled maintenance to keep your memory clean:
JobSchedulePurpose
ConsolidationNightly 3 AMMerge duplicates
Observation ReflectionNightly 3:30 AMCondense observations
SummarizationWeekly Sun 4 AMCompress old memories
Re-indexingMonthly 1st 5 AMRebuild embeddings
Trigger maintenance manually:
cems maintenance --job consolidation

CLI Reference

Here are the most common CLI commands:
cems status        # System status
cems health        # Server health check
cems --version     # Show version

What’s Installed?

The installer creates these files:
~/.claude/
├── settings.json           # Hooks config (merged)
├── hooks/
│   ├── cems_session_start.py
│   ├── cems_user_prompts_submit.py
│   ├── cems_post_tool_use.py
│   ├── cems_pre_tool_use.py
│   ├── cems_stop.py
│   ├── cems_pre_compact.py
│   └── utils/
├── skills/cems/
│   ├── recall.md
│   ├── remember.md
│   ├── share.md
│   ├── forget.md
│   ├── context.md
│   └── memory-guide.md
└── commands/
    ├── recall.md
    └── remember.md

Updating CEMS

CEMS auto-updates when you start a new Claude Code session (if >24 hours old). To update manually:
cems update          # Pull latest + re-deploy hooks/skills
cems update --hooks  # Re-deploy hooks only (skip package upgrade)
Auto-update can be disabled: export CEMS_AUTO_UPDATE=0

Troubleshooting

  1. Check credentials: cat ~/.cems/credentials
  2. Test connection: cems health
  3. Test search: cems search "test"
  4. Check hook output:
    echo '{"prompt": "test"}' | uv run ~/.claude/hooks/cems_user_prompts_submit.py
    
  1. Verify files exist:
    • Claude Code: ls ~/.claude/skills/cems/
    • Cursor: ls ~/.cursor/skills/cems-recall/
  2. Restart your IDE
  3. Type / and look for remember, recall, etc.
cems setup    # Re-runs the full setup

Next Steps

Installation Details

Learn about all installation methods and configuration options

Deploy Server

Set up CEMS server for your team

API Reference

Explore the full API and CLI

Architecture

Deep dive into how CEMS works

Build docs developers (and LLMs) love