Skip to main content

Configuration

Settings File

Settings are managed in ~/.claude-mem/settings.json. The file is auto-created with defaults on first run.

Core Settings

SettingDefaultDescription
CLAUDE_MEM_MODELsonnetAI model for processing observations (when using Claude)
CLAUDE_MEM_PROVIDERclaudeAI provider: claude, gemini, or openrouter
CLAUDE_MEM_MODEcodeActive mode profile (e.g., code--es, email-investigation)
CLAUDE_MEM_CONTEXT_OBSERVATIONS50Number of observations to inject
CLAUDE_MEM_WORKER_PORT37777Worker service port
CLAUDE_MEM_SKIP_TOOLSListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestionComma-separated tools to exclude from observations

Gemini Provider Settings

SettingDefaultDescription
CLAUDE_MEM_GEMINI_API_KEYGemini API key (get free key)
CLAUDE_MEM_GEMINI_MODELgemini-2.5-flash-liteGemini model: gemini-2.5-flash-lite, gemini-2.5-flash, gemini-3-flash
See Gemini Provider for detailed configuration and free tier information.

OpenRouter Provider Settings

SettingDefaultDescription
CLAUDE_MEM_OPENROUTER_API_KEYOpenRouter API key (get key)
CLAUDE_MEM_OPENROUTER_MODELxiaomi/mimo-v2-flash:freeModel identifier (supports 100+ models)
CLAUDE_MEM_OPENROUTER_MAX_CONTEXT_MESSAGES20Max messages in conversation history
CLAUDE_MEM_OPENROUTER_MAX_TOKENS100000Token budget safety limit
CLAUDE_MEM_OPENROUTER_SITE_URLOptional: URL for analytics
CLAUDE_MEM_OPENROUTER_APP_NAMEclaude-memOptional: App name for analytics
See OpenRouter Provider for detailed configuration, free model list, and usage guide.

System Configuration

SettingDefaultDescription
CLAUDE_MEM_DATA_DIR~/.claude-memData directory location
CLAUDE_MEM_LOG_LEVELINFOLog verbosity (DEBUG, INFO, WARN, ERROR, SILENT)
CLAUDE_MEM_PYTHON_VERSION3.13Python version for chroma-mcp
CLAUDE_CODE_PATH(auto-detect)Path to Claude Code CLI (for Windows)

Model Configuration

Configure which AI model processes your observations.

Available Models

Shorthand model names automatically forward to the latest version:
  • haiku - Fast, cost-efficient
  • sonnet - Balanced (default)
  • opus - Most capable

Using the Interactive Script

./claude-mem-settings.sh
This script manages settings in ~/.claude-mem/settings.json.

Manual Configuration

Edit ~/.claude-mem/settings.json:
{
  "CLAUDE_MEM_MODEL": "sonnet"
}

Mode Configuration

Configure the active workflow mode and language.

Settings

SettingDefaultDescription
CLAUDE_MEM_MODEcodeDefines behavior and language. See Modes & Languages.

Examples

Spanish Code Mode:
{
  "CLAUDE_MEM_MODE": "code--es"
}
Email Investigation Mode:
{
  "CLAUDE_MEM_MODE": "email-investigation"
}

Files and Directories

Data Directory Structure

The data directory location depends on the environment:
  • Production (installed plugin): ~/.claude-mem/ (always, regardless of CLAUDE_PLUGIN_ROOT)
  • Development: Can be overridden with CLAUDE_MEM_DATA_DIR
~/.claude-mem/
├── claude-mem.db           # SQLite database
├── .install-version        # Cached version for smart installer
├── worker.port             # Current worker port file
└── logs/
    ├── worker-out.log      # Worker stdout logs
    └── worker-error.log    # Worker stderr logs

Plugin Directory Structure

${CLAUDE_PLUGIN_ROOT}/
├── .claude-plugin/
│   └── plugin.json         # Plugin metadata
├── .mcp.json               # MCP server configuration
├── hooks/
│   └── hooks.json          # Hook configuration
├── scripts/                # Built executables
│   ├── smart-install.js    # Smart installer script
│   ├── context-hook.js     # Context injection hook
│   ├── new-hook.js         # Session creation hook
│   ├── save-hook.js        # Observation capture hook
│   ├── summary-hook.js     # Summary generation hook
│   ├── worker-service.cjs  # Worker service (CJS)
│   └── mcp-server.cjs      # MCP search server (CJS)
└── ui/
    └── viewer.html         # Web viewer UI bundle

Plugin Configuration

Hooks Configuration

Hooks are configured in plugin/hooks/hooks.json:
{
  "description": "Claude-mem memory system hooks",
  "hooks": {
    "SessionStart": [{
      "hooks": [{
        "type": "command",
        "command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/smart-install.js && node ${CLAUDE_PLUGIN_ROOT}/scripts/context-hook.js",
        "timeout": 120
      }]
    }],
    "UserPromptSubmit": [{
      "hooks": [{
        "type": "command",
        "command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/new-hook.js",
        "timeout": 120
      }]
    }],
    "PostToolUse": [{
      "matcher": "*",
      "hooks": [{
        "type": "command",
        "command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/save-hook.js",
        "timeout": 120
      }]
    }],
    "Stop": [{
      "hooks": [{
        "type": "command",
        "command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/summary-hook.js",
        "timeout": 120
      }]
    }]
  }
}

Search Configuration (v5.4.0+)

Migration Note: As of v5.4.0, Claude-Mem uses skill-based search instead of MCP tools. As of v5.5.0, the skill was renamed to “mem-search” for better scope differentiation. Previous (v5.3.x and earlier): MCP search server with 9 tools (~2,500 tokens per session) Current (v5.4.0+): mem-search skill with HTTP API (~250 tokens per session) No configuration required - the mem-search skill is automatically available in Claude Code sessions. Search operations are now provided via:
  • Skill: plugin/skills/mem-search/SKILL.md (auto-invoked when users ask about past work)
  • HTTP API: 10 endpoints on worker service port 37777
  • Progressive Disclosure: Full instructions loaded on-demand only when needed

Version Channel

Claude-Mem supports switching between stable and beta versions via the web viewer UI.

Accessing Version Channel

  1. Open the viewer at http://localhost:37777
  2. Click the Settings gear icon
  3. Find the Version Channel section

Switching Versions

  • Try Beta: Click “Try Beta (Endless Mode)” to switch to the beta branch with experimental features
  • Switch to Stable: Click “Switch to Stable” to return to the production release
  • Check for Updates: Pull the latest changes for your current branch
Your memory data is preserved when switching versions. Only the plugin code changes.
Endless Mode is experimental and slower than standard mode. See Beta Features for full details and important limitations.

Worker Service Management

Worker service is managed by Bun as a background process. The worker auto-starts on first session and runs continuously in the background.

Context Injection Configuration

Claude-Mem injects past observations into each new session, giving Claude awareness of recent work. You can configure exactly what gets injected using the Context Settings Modal.

Context Settings Modal

Access the settings modal from the web viewer at http://localhost:37777:
  1. Click the gear icon in the header
  2. Adjust settings in the right panel
  3. See changes reflected live in the Terminal Preview on the left
  4. Settings auto-save as you change them
The Terminal Preview shows exactly what will be injected at the start of your next Claude Code session for the selected project.

Loading Settings

Control how many observations are injected:
SettingDefaultRangeDescription
Observations501-200Total number of recent observations to include
Sessions101-50Number of recent sessions to pull observations from
Considerations:
  • Higher values = More context but slower SessionStart and more tokens used
  • Lower values = Faster SessionStart but less historical awareness
  • Default of 50 observations from 10 sessions balances context richness with performance

Filter Settings

Control which observation types and concepts are included: Types (select any combination):
  • bugfix - Bug fixes and error resolutions
  • feature - New functionality additions
  • refactor - Code restructuring
  • discovery - Learnings about how code works
  • decision - Architectural or design decisions
  • change - General code changes
Concepts (select any combination):
  • how-it-works - System behavior explanations
  • why-it-exists - Rationale for code/design
  • what-changed - Change summaries
  • problem-solution - Problem/solution pairs
  • gotcha - Edge cases and pitfalls
  • pattern - Recurring patterns
  • trade-off - Design trade-offs
Use “All” or “None” buttons to quickly select/deselect all options.

Display Settings

Control how observations appear in the context: Full Observations:
SettingDefaultOptionsDescription
Count50-20How many observations show expanded details
Fieldnarrativenarrative, factsWhich field to expand
The most recent N observations (set by Count) show their full narrative or facts. Remaining observations show only title, type, and token counts in a compact table format. Token Economics (toggles):
SettingDefaultDescription
Read costtrueShow tokens to read each observation
Work investmenttrueShow tokens spent creating the observation
SavingstrueShow total tokens saved by reusing context
Token economics help you understand the value of cached observations vs. re-reading files.

Advanced Settings

SettingDefaultDescription
ModelsonnetAI model for generating observations
Worker Port37777Port for background worker service
MCP search servertrueEnable Model Context Protocol search tools
Include last summaryfalseAdd previous session’s summary to context
Include last messagefalseAdd previous session’s final message

Manual Configuration

Settings are stored in ~/.claude-mem/settings.json:
{
  "CLAUDE_MEM_CONTEXT_OBSERVATIONS": "100",
  "CLAUDE_MEM_CONTEXT_SESSION_COUNT": "20",
  "CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES": "bugfix,decision,discovery",
  "CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS": "how-it-works,gotcha",
  "CLAUDE_MEM_CONTEXT_FULL_COUNT": "10",
  "CLAUDE_MEM_CONTEXT_FULL_FIELD": "narrative",
  "CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS": "true",
  "CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS": "true",
  "CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT": "true",
  "CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY": "false",
  "CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE": "false"
}
Note: The Context Settings Modal (at http://localhost:37777) is the recommended way to configure these settings, as it provides live preview of changes.

Customization

Settings can be customized in ~/.claude-mem/settings.json.

Custom Data Directory

Edit ~/.claude-mem/settings.json:
{
  "CLAUDE_MEM_DATA_DIR": "/custom/path"
}

Custom Worker Port

Edit ~/.claude-mem/settings.json:
{
  "CLAUDE_MEM_WORKER_PORT": "38000"
}
Then restart the worker:
npm run worker:restart

Custom Model

Edit ~/.claude-mem/settings.json:
{
  "CLAUDE_MEM_MODEL": "opus"
}
Then restart the worker:
export CLAUDE_MEM_MODEL=opus
npm run worker:restart

Custom Skip Tools

Control which tools are excluded from observations. Edit ~/.claude-mem/settings.json:
{
  "CLAUDE_MEM_SKIP_TOOLS": "ListMcpResourcesTool,SlashCommand,Skill"
}
Default excluded tools:
  • ListMcpResourcesTool
  • SlashCommand
  • Skill
  • TodoWrite
  • AskUserQuestion
Common customizations:
  • Include TodoWrite: Remove from skip list to track task planning
  • Include AskUserQuestion: Remove to capture decision-making conversations
  • Skip additional tools: Add tool names to reduce observation noise
Changes take effect on the next tool execution (no worker restart needed).

Advanced Configuration

Hook Timeouts

Modify timeouts in plugin/hooks/hooks.json:
{
  "timeout": 120  // Default: 120 seconds
}
Recommended values:
  • SessionStart: 120s (needs time for smart install check and context retrieval)
  • UserPromptSubmit: 60s
  • PostToolUse: 120s (can process many observations)
  • Stop: 60s
  • SessionEnd: 60s
Note: With smart install caching (v5.0.3+), SessionStart is typically very fast (10ms) unless dependencies need installation.

Worker Memory Limit

The worker service is managed by Bun and will automatically restart if it encounters issues. Memory usage is typically low (~100-200MB).

Logging Verbosity

Enable debug logging:
export DEBUG=claude-mem:*
npm run worker:restart
npm run worker:logs

Configuration Best Practices

  1. Use defaults: Default configuration works for most use cases
  2. Override selectively: Only change what you need
  3. Document changes: Keep track of custom configurations
  4. Test after changes: Verify worker restarts successfully
  5. Monitor logs: Check worker logs after configuration changes

Troubleshooting Configuration

Configuration Not Applied

  1. Restart worker after changes:
    npm run worker:restart
    
  2. Verify environment variables:
    echo $CLAUDE_MEM_MODEL
    echo $CLAUDE_MEM_WORKER_PORT
    
  3. Check worker logs:
    npm run worker:logs
    

Invalid Model Name

If you specify an invalid model name, the worker will fall back to sonnet and log a warning. Valid shorthand models (forward to latest version):
  • haiku
  • sonnet
  • opus

Port Already in Use

If port 37777 is already in use:
  1. Set custom port:
    export CLAUDE_MEM_WORKER_PORT=38000
    
  2. Restart worker:
    npm run worker:restart
    
  3. Verify new port:
    cat ~/.claude-mem/worker.port
    

Next Steps