Hippocortex OS — Beta Troubleshooting

Solutions to common issues encountered during beta usage.


Server Issues

Server won't start

Symptom: Container exits immediately or process crashes on launch.

Check 1: Port conflict

lsof -i :3100
# If something else is using 3100, either stop it or change the port:
# HIPPOCORTEX_PORT=3200 docker run ...

Check 2: Node.js version

node --version
# Must be v22.0.0 or higher

Check 3: Storage path permissions

# Docker
docker run --rm -v ~/hippocortex-data:/data alpine ls -la /data
# Ensure the directory exists and is writable

# Local
ls -la ./hippocortex.db
# Ensure the directory where the DB lives is writable

Check 4: Config validation error

docker logs hippocortex 2>&1 | head -20
# Look for "ConfigValidationError" — usually a bad env var value

Server starts but health check fails

Symptom: curl http://localhost:3100/api/v1/health returns connection refused or error.

Check 1: Is the server actually running?

docker ps | grep hippocortex
# If not listed, check: docker ps -a | grep hippocortex
# Then: docker logs hippocortex

Check 2: Is it binding to the right interface?

# If running in Docker, make sure you published the port:
docker run -p 3100:3100 ...
# Default bind is 0.0.0.0 — correct for Docker

Check 3: Firewall

# macOS
sudo pfctl -sr 2>/dev/null | grep 3100

# Linux
sudo iptables -L -n | grep 3100
sudo ufw status | grep 3100

Server becomes slow over time

Symptom: API responses that used to be fast now take seconds.

Check 1: Database size

ls -lh ~/hippocortex-data/hippocortex.db
# If > 5 GB, performance may degrade. Consider pruning old episodes.

Check 2: Memory usage

curl http://localhost:3100/api/v1/metrics | grep heap_used
# If heap > 1.5 GB, restart the server
docker restart hippocortex

Check 3: WAL file size

ls -lh ~/hippocortex-data/hippocortex.db-wal
# If WAL is > 100 MB, a checkpoint may be needed
# A clean restart triggers WAL checkpoint automatically
docker restart hippocortex

Authentication Issues

401 Unauthorized on every request

Cause 1: Wrong header name

# Correct:
curl -H "X-API-Key: hx_beta_yourkey" http://localhost:3100/api/v1/health/detailed

# Wrong:
curl -H "Authorization: Bearer hx_beta_yourkey" ...  # NOT supported

Cause 2: Key mismatch

# Check what keys the server expects:
docker exec hippocortex printenv HIPPOCORTEX_API_KEYS
# Compare with what your SDK is sending

Cause 3: Whitespace in key

# Check for trailing newline or spaces in your .env file
cat -A .env | grep API_KEYS
# '$' at end of line is normal. '^M$' (carriage return) is not.

429 Too Many Requests

Cause: Rate limit exceeded (default: 60 req/min).

# Check current rate limit setting
docker exec hippocortex printenv HIPPOCORTEX_RATE_LIMIT_RPM

# Increase if needed (requires restart):
# HIPPOCORTEX_RATE_LIMIT_RPM=120
docker restart hippocortex

Tip: If you're hitting rate limits during bulk import, batch your captures and add delays between calls.


SDK Issues

ConnectionRefusedError / ECONNREFUSED

Cause: SDK can't reach the server.

# Verify server is running and reachable
curl http://localhost:3100/api/v1/health

# Check SDK config
# baseUrl should match your server address exactly
# Common mistake: using https:// when server is http://

synthesize() returns empty results

Possible causes:

  1. No events captured yet — call capture() first
  2. learn() not called — memories aren't created until you trigger learning
  3. Query doesn't match any memories — try broader search terms
# Verify data exists
curl -H "X-API-Key: hx_beta_yourkey" \
  http://localhost:3100/api/v1/health/detailed
# Check episodic count, semantic count

learn() is slow

Expected: learn() processes all unprocessed episodes. First call after many captures will be slow.

Mitigation:

  • Call learn() after each session instead of batching
  • Don't call more than once per minute
  • Run learn() in a background task, not in the request path

Data Issues

"Conflict detected" warnings

This is normal behavior. Hippocortex detected contradictory information and quarantined it. Examples:

  • "User's timezone is UTC" vs "User's timezone is EST"
  • "Deploy to staging first" vs "Deploy directly to prod"

The most recent information wins by default. You can inspect conflicts via the detailed health endpoint.

Database file is locked

Symptom: SQLITE_BUSY errors in logs.

Cause: Another process has the database open.

# Find what's using the file
fuser ~/hippocortex-data/hippocortex.db
# Or on macOS:
lsof ~/hippocortex-data/hippocortex.db

Fix: Ensure only one Hippocortex instance accesses the database at a time. Stop duplicate containers:

docker ps | grep hippocortex
# If multiple, stop extras:
docker stop hippocortex-duplicate

Restoring from backup

# 1. Stop the server
docker stop hippocortex

# 2. Replace the database
cp ~/hippocortex-data/backup-20260312.db ~/hippocortex-data/hippocortex.db

# 3. Remove WAL/SHM files (they belong to the old DB)
rm -f ~/hippocortex-data/hippocortex.db-wal
rm -f ~/hippocortex-data/hippocortex.db-shm

# 4. Start the server
docker start hippocortex

# 5. Verify
curl http://localhost:3100/api/v1/health

Docker Issues

Container keeps restarting

# Check exit code and logs
docker inspect hippocortex --format='{{.State.ExitCode}}'
docker logs --tail 50 hippocortex
Exit CodeMeaningFix
0Clean exitCheck if restart policy is causing loops
1Application errorRead logs for the error message
137OOM killedIncrease container memory limit
143SIGTERM (normal stop)Normal, no fix needed

Volume mount issues

# Verify volume is mounted correctly
docker inspect hippocortex --format='{{json .Mounts}}' | jq

# Common mistake: mounting a file instead of a directory
# Wrong:  -v ~/hippocortex.db:/data/hippocortex.db
# Right:  -v ~/hippocortex-data:/data

Still Stuck?

  1. Collect these before reaching out:

    • Server logs: docker logs hippocortex 2>&1 | tail -100
    • Health check: curl http://localhost:3100/api/v1/health/detailed
    • Metrics: curl http://localhost:3100/api/v1/metrics
    • OS and Docker version: uname -a && docker --version
    • SDK version: npm list @hippocortex/sdk or pip show hippocortex
  2. Email the beta support alias or post in the beta Discord/Slack channel with the above info.