Version: 7.0.0 (December 2025)
Target Audience: Developers building claude-mem integrations (VSCode extensions, IDE plugins, CLI tools)
Target Audience: Developers building claude-mem integrations (VSCode extensions, IDE plugins, CLI tools)
Quick Reference
Worker Base URL
http://localhost:37777Override with
CLAUDE_MEM_WORKER_PORTHealth Check
GET /api/healthReturns
{ "status": "ok" }Queue Observation
POST /api/sessions/observationsPass
claudeSessionId + tool dataSSE Stream
GET /streamReal-time events for UI updates
Most Common Operations
Environment Variables
Build Commands (Local Development)
Worker Architecture
Request Flow
Domain Services
DatabaseManager
SQLite connection management, initialization
SessionManager
Event-driven session lifecycle, message queues
SearchManager
Search orchestration (FTS5 + Chroma)
SSEBroadcaster
Server-Sent Events for real-time updates
SDKAgent
Claude Agent SDK for generating observations/summaries
PaginationHelper
Query pagination utilities
SettingsManager
User settings CRUD
FormattingService
Result formatting (index vs full)
TimelineService
Unified timeline generation
Route Organization
ViewerRoutes
ViewerRoutes
- Health check endpoint
- Viewer UI (React app)
- SSE stream for real-time updates
SessionRoutes
SessionRoutes
- Session lifecycle (init, observations, summarize, complete)
- Privacy checks and tag stripping
- Auto-start SDK agent generators
DataRoutes
DataRoutes
- Data retrieval (observations, summaries, prompts, stats)
- Pagination support
- Processing status
SearchRoutes
SearchRoutes
- All search operations
- Unified search API
- Timeline context
- Semantic shortcuts
SettingsRoutes
SettingsRoutes
- User settings
- MCP toggle
- Git branch switching
API Reference
Session Lifecycle (SessionRoutes)
Create/Get Session + Queue Observation
Privacy Check: Skips if the user prompt was entirely wrapped in
Tag Stripping: Removes
Auto-Start: Ensures SDK agent generator is running to process the queue.
<private> tags.Tag Stripping: Removes
<private> and <claude-mem-context> tags before storage.Auto-Start: Ensures SDK agent generator is running to process the queue.
Queue Summary
Complete Session
Legacy Endpoints (Still Supported)
- Initialize Session
- Queue Observations
- Queue Summary
- Complete Session
New integrations should use
/api/sessions/* endpoints with claudeSessionId.Data Retrieval (DataRoutes)
Get Paginated Data
- Observations
- Summaries
- User Prompts
Response Format
Get by ID
- Observation
- Session
- Prompt
Get Database Stats
Response
Get Projects List
Response
Get Processing Status
Response
Search Operations (SearchRoutes)
Unified Search
string
Search query text (optional, omit for filter-only)
string
default:"all"
"observations" | "sessions" | "prompts"string
default:"index"
"index" | "full"number
default:20
Number of results
string
Filter by project name
string
Filter by observation type:
discovery, decision, bugfix, feature, refactorstring
Filter by concepts (comma-separated)
string
Filter by file paths (comma-separated)
string
ISO timestamp (filter start)
string
ISO timestamp (filter end)
Response
Format Options:
index: Minimal fields for list display (id, title, preview)full: Complete entity with all fields
Unified Timeline
string
required
Anchor point (observation ID,
"S123" for session, or ISO timestamp)number
default:10
Records before anchor
number
default:10
Records after anchor
string
Filter by project
Response
Semantic Shortcuts
Decisions
Changes
How It Works
Search by Concept
Search by File Path
Search by Type
Get Recent Context
Response
Context Preview (for Settings UI)
Returns plain text with ANSI colors for terminal display.
Context Injection (for Hooks)
Returns a pre-formatted context string ready for display or system prompt injection.
Settings & Configuration (SettingsRoutes)
Get/Update User Settings
MCP Server Status/Toggle
Git Branch Operations
- Get Status
- Switch Branch
- Update Branch
Viewer & Real-Time Updates (ViewerRoutes)
Health Check
Response
Viewer UI
Returns the HTML shell for the React viewer app.
SSE Stream
Server-Sent Events streamEvent Types:
processing_status:{ type, isProcessing, queueDepth }session_started:{ type, sessionDbId, project }observation_queued:{ type, sessionDbId }summarize_queued:{ type }observation_created:{ type, observation }summary_created:{ type, summary }new_prompt:{ type, id, claude_session_id, project, prompt_number, prompt_text, created_at_epoch }
Data Models
Active Session (In-Memory)
Database Entities
- SDK Session
- Observation
- Session Summary
- User Prompt
Search Results
Timeline Item
Integration Patterns
Mapping Claude Code Hooks to Worker API
1
SessionStart Hook
Not needed for the new API — sessions are auto-created on the first observation.
2
UserPromptSubmit Hook
No API call needed — the user prompt is captured by the first observation in the prompt.
3
PostToolUse Hook
4
Summary Hook
5
SessionEnd Hook
VSCode Extension Integration
Language Model Tool Registration
Chat Participant Implementation
package.json (VSCode Extension)
Error Handling & Resilience
Connection Failures
Retry Logic with Exponential Backoff
Worker Health Check
Privacy Tag Handling
The worker automatically strips privacy tags before storage:
<private>content</private>— User-level privacy control<claude-mem-context>content</claude-mem-context>— System-level tag (prevents recursive storage)
<private> tags.Custom Error Classes
SSE Stream Error Handling
Development Workflow
Local Testing Loop
1
Terminal 1: Watch build
2
Terminal 2: Check worker status
3
Terminal 3: Test API manually
4
VSCode: Launch extension host
Press F5 to launch the extension host.
Complete WorkerClient Implementation
Testing Strategy
Manual Testing Checklist
Phase 1: Connection & Health
Phase 1: Connection & Health
- Worker starts successfully (
npm run worker:status) - Health endpoint responds (
curl http://localhost:37777/api/health) - SSE stream connects (
curl http://localhost:37777/stream)
Phase 2: Session Lifecycle
Phase 2: Session Lifecycle
- Queue observation creates session
- Observation appears in database
- Privacy tags are stripped
- Private prompts are skipped
- Queue summary creates summary
- Complete session stops processing
Phase 3: Search & Retrieval
Phase 3: Search & Retrieval
- Search observations by query
- Search sessions by query
- Search prompts by query
- Get recent context for project
- Get timeline around observation
- Semantic shortcuts (decisions, changes, how-it-works)
Phase 4: Real-Time Updates
Phase 4: Real-Time Updates
- SSE broadcasts processing status
- SSE broadcasts new observations
- SSE broadcasts new summaries
- SSE broadcasts new prompts
Phase 5: Error Handling
Phase 5: Error Handling
- Graceful degradation when worker unavailable
- Timeout handling for slow requests
- Retry logic for transient failures
Critical Implementation Notes
Asynchronous Processing
Workers process observations and summaries asynchronously. Results appear in the database 1–2 seconds after queuing. Use SSE events for real-time notifications.Additional Resources
Documentation
Complete claude-mem documentation
GitHub
Source code and issue tracker
Worker Service
Worker architecture details
Database Schema
Database structure and queries