# Common Issue Resolutions Quick fixes for frequently encountered claude-mem problems. ## Issue: Nothing is Remembered After `/clear` {#nothing-remembered} **Symptoms:** - Data doesn't persist across sessions - Context is empty after `/clear` - Search returns no results for past work **Root cause:** Sessions are marked complete but data should persist. This suggests: - Worker not processing observations - Database not being written to - Context hook not reading from database **Fix:** 1. Verify worker is running: ```bash pm2 jlist | grep claude-mem-worker ``` 2. Check database has recent observations: ```bash sqlite3 ~/.claude-mem/claude-mem.db "SELECT COUNT(*) FROM observations WHERE created_at > datetime('now', '-1 day');" ``` 3. Restart worker and start new session: ```bash pm2 restart claude-mem-worker ``` 4. Create a test observation: `/skill version-bump` then cancel 5. Check if observation appears in viewer: ```bash open http://127.0.0.1:37777 # Or manually check database: sqlite3 ~/.claude-mem/claude-mem.db "SELECT * FROM observations ORDER BY created_at DESC LIMIT 1;" ``` ## Issue: Viewer Empty After Every Claude Restart {#viewer-empty} **Symptoms:** - Viewer shows no data at http://127.0.0.1:37777 - Stats endpoint returns all zeros - Database appears empty in UI **Root cause:** - Database being recreated on startup (shouldn't happen) - Worker reading from wrong database location - Database permissions issue **Fix:** 1. Check database file exists and has data: ```bash ls -lh ~/.claude-mem/claude-mem.db sqlite3 ~/.claude-mem/claude-mem.db "SELECT COUNT(*) FROM observations;" ``` 2. Check file permissions: ```bash ls -la ~/.claude-mem/claude-mem.db # Should be readable/writable by your user ``` 3. Verify worker is using correct database path in logs: ```bash pm2 logs claude-mem-worker --lines 50 --nostream | grep "Database" ``` 4. Test viewer connection manually: ```bash curl -s http://127.0.0.1:37777/api/stats # Should show non-zero counts if data exists ``` ## Issue: Old Memory in Claude {#old-memory} **Symptoms:** - Context contains outdated observations - Irrelevant past work appearing in sessions - Context feels stale **Root cause:** Context hook injecting stale observations **Fix:** 1. Check the observation count setting: ```bash grep CLAUDE_MEM_CONTEXT_OBSERVATIONS ~/.claude/settings.json ``` 2. Default is 50 observations - you can adjust this: ```json { "env": { "CLAUDE_MEM_CONTEXT_OBSERVATIONS": "25" } } ``` 3. Check database for actual observation dates: ```bash sqlite3 ~/.claude-mem/claude-mem.db "SELECT created_at, project, title FROM observations ORDER BY created_at DESC LIMIT 10;" ``` 4. Consider filtering by project if working on multiple codebases ## Issue: Worker Not Starting {#worker-not-starting} **Symptoms:** - PM2 shows worker as "stopped" or "errored" - Health check fails - Viewer not accessible **Root cause:** - Port already in use - PM2 not installed or not in PATH - Missing dependencies **Fix:** 1. Try manual worker start to see error: ```bash cd ~/.claude/plugins/marketplaces/thedotmack/ node plugin/scripts/worker-service.cjs # Should start server on port 37777 or show error ``` 2. If port in use, change it: ```bash mkdir -p ~/.claude-mem echo '{"env":{"CLAUDE_MEM_WORKER_PORT":"37778"}}' > ~/.claude-mem/settings.json ``` 3. If dependencies missing: ```bash cd ~/.claude/plugins/marketplaces/thedotmack/ npm install pm2 start ecosystem.config.cjs ``` ## Issue: Search Results Empty **Symptoms:** - Search skill returns no results - API endpoints return empty arrays - Know there's data but can't find it **Root cause:** - FTS5 tables not synchronized - Wrong project filter - Database not being queried correctly **Fix:** 1. Check if observations exist in database: ```bash sqlite3 ~/.claude-mem/claude-mem.db "SELECT COUNT(*) FROM observations;" ``` 2. Check FTS5 table sync: ```bash sqlite3 ~/.claude-mem/claude-mem.db "SELECT COUNT(*) FROM observations_fts;" # Should match observation count ``` 3. Try search via API directly: ```bash curl "http://127.0.0.1:37777/api/search/observations?q=test&format=index" ``` 4. If FTS5 out of sync, restart worker (triggers reindex): ```bash pm2 restart claude-mem-worker ``` ## Issue: Port Conflicts **Symptoms:** - Worker won't start - Error: "EADDRINUSE: address already in use" - Health check fails **Fix:** 1. Check what's using port 37777: ```bash lsof -i :37777 ``` 2. Either kill the conflicting process or change claude-mem port: ```bash mkdir -p ~/.claude-mem echo '{"env":{"CLAUDE_MEM_WORKER_PORT":"37778"}}' > ~/.claude-mem/settings.json pm2 restart claude-mem-worker ``` ## Issue: Database Corrupted **Symptoms:** - SQLite errors in logs - Worker crashes on startup - Queries fail **Fix:** 1. Backup the database: ```bash cp ~/.claude-mem/claude-mem.db ~/.claude-mem/claude-mem.db.backup ``` 2. Try to repair: ```bash sqlite3 ~/.claude-mem/claude-mem.db "PRAGMA integrity_check;" ``` 3. If repair fails, recreate (loses data): ```bash rm ~/.claude-mem/claude-mem.db pm2 restart claude-mem-worker # Worker will create new database ``` ## Prevention Tips **Keep claude-mem healthy:** - Regularly check viewer UI to see if observations are being captured - Monitor database size (shouldn't grow unbounded) - Update plugin when new versions are released - Keep Claude Code updated **Performance tuning:** - Adjust `CLAUDE_MEM_CONTEXT_OBSERVATIONS` if context is too large/small - Use `/clear` to mark sessions complete and start fresh - Use search skill to query specific memories instead of loading everything