Target Audience: Developers building claude-mem integrations (VSCode extensions, IDE plugins, CLI tools).
Quick Reference
Worker Service Basics
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
- Dependency health
API Reference
Session Lifecycle (SessionRoutes)
Create/Get Session + Queue Observation (New API)
Privacy Check: Skips if user prompt was entirely wrapped in
<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 (New API)
Complete Session (New API)
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
Search query text (optional, omit for filter-only)
“observations” | “sessions” | “prompts”
“index” | “full”
Number of results
Filter by project name
Filter by observation type (discovery, decision, bugfix, feature, refactor)
Filter by concepts (comma-separated)
Filter by file paths (comma-separated)
ISO timestamp (filter start)
ISO timestamp (filter end)
Response
Format Options:
index: Minimal fields for list display (id, title, preview)full: Complete entity with all fields
Unified Timeline
Anchor point (observation ID, “S123” for session, or ISO timestamp)
Records before anchor
Records after anchor
Filter by project
Response
Search by File Path
Get Recent Context
Response
Context Preview (for Settings UI)
Returns plain text with ANSI colors for terminal display
Context Injection (for Hooks)
Returns pre-formatted context string ready for display
Settings & Configuration (SettingsRoutes)
Get/Update User Settings
MCP Server Status/Toggle
Viewer & Real-Time Updates (ViewerRoutes)
Health Check
Response
Viewer UI
Returns HTML for React app
SSE Stream
Server-Sent Events streamEvent Types:
processing_status:session_started:observation_queued:summarize_queued:observation_created:summary_created:new_prompt:
Data Models
Active Session (In-Memory)
Database Entities
- Observation
- Session Summary
- User Prompt
Search Results
Timeline Item
Integration Patterns
Mapping Claude Code Hooks to Worker API
1
SessionStart Hook
Not needed for new API - sessions are auto-created on first observation
2
UserPromptSubmit Hook
No API call needed - user_prompt is captured by first observation in the prompt
3
PostToolUse Hook
4
Summary Hook
5
SessionEnd Hook
VSCode Extension Integration
Language Model Tool Registration
Chat Participant Implementation
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
Project Structure (Recommended)
Build Configuration (esbuild)
package.json (VSCode Extension)
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 extension host
Debug Configuration (.vscode/launch.json)
Testing Strategy
Unit Tests (Worker Client)
Integration Tests (With Worker Spawning)
Manual Testing Checklist
Phase 1: Connection & Health
Phase 1: Connection & Health
- Worker starts successfully (
npm run worker:status) - Health endpoint responds (
curl http://127.0.0.1:$WORKER_PORT/api/health) - SSE stream connects (
curl http://127.0.0.1:$WORKER_PORT/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
Code Examples
Complete WorkerClient Implementation
Search Language Model Tool
Critical Implementation Notes
Asynchronous Processing
Workers process observations/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

