Morphee Troubleshooting Guide
This guide helps you diagnose and resolve common issues with Morphee (V2.0 — Rust/axum backend).
For the legacy Python/FastAPI troubleshooting guide, see archive/troubleshooting-python.md.
Quick Diagnostics
Check System Status
# Check all services are running
docker compose -f docker-compose.dev.yml ps
# View logs for all services
docker compose -f docker-compose.dev.yml logs
# View logs for a specific service
docker compose -f docker-compose.dev.yml logs morphee-server
docker compose -f docker-compose.dev.yml logs redis
Health Checks
# Check morphee-server health
curl http://localhost:3000/health
# Check Redis connectivity
docker compose -f docker-compose.dev.yml exec redis redis-cli ping
Common Issues
1. Docker Services Won't Start
Symptoms:
- Services fail to start
- Port already in use errors
- Container exits immediately
Solutions:
# Check if ports are already in use
lsof -i :3000 # morphee-server
lsof -i :5432 # PostgreSQL
lsof -i :6379 # Redis
# Stop all containers and restart
docker compose -f docker-compose.dev.yml down
docker compose -f docker-compose.dev.yml up -d
# Rebuild containers if needed
docker compose -f docker-compose.dev.yml down
docker compose -f docker-compose.dev.yml build --no-cache
docker compose -f docker-compose.dev.yml up -d
# Check Docker disk space
docker system df
docker system prune # Clean up if needed
2. Morphee Server Not Responding
Symptoms:
- Connection refused on port 3000
- morphee-server container keeps restarting
- 500 errors on all endpoints
Diagnosis:
# Check morphee-server logs
docker compose -f docker-compose.dev.yml logs morphee-server
# Check if morphee-server container is running
docker compose -f docker-compose.dev.yml ps morphee-server
# Enter container for debugging
docker compose -f docker-compose.dev.yml exec morphee-server /bin/sh
Common Causes:
-
Missing Environment Variables
# Verify required MORPHEE_* env vars are set
docker compose -f docker-compose.dev.yml exec morphee-server env | grep MORPHEE_
# Key variables:
# MORPHEE_DATABASE_URL — PostgreSQL connection string
# MORPHEE_GOTRUE_URL — Supabase GoTrue endpoint
# MORPHEE_SUPABASE_ANON_KEY — Supabase anonymous key
# MORPHEE_SERVICE_ROLE_KEY — Service role key for admin operations -
Database Connection Issues
# Check DATABASE_URL format
# Should be: postgres://user:password@host:port/database
# Test database connectivity
docker compose -f docker-compose.dev.yml exec supabase-db psql -U morphee -d morphee -c "SELECT 1;" -
sqlx Migration Failures
# Check migration status
docker compose -f docker-compose.dev.yml logs morphee-server | grep -i migration
# Manually run migrations (if supported)
docker compose -f docker-compose.dev.yml exec morphee-server /app/morphee-server migrate -
Cargo Build Issues (local development)
# Ensure Rust toolchain is available
export PATH="$HOME/.cargo/bin:$PATH"
rustc --version
cargo --version
# Clean and rebuild
cd crates/morphee-server && cargo clean && cargo build
# Check for missing system dependencies (OpenSSL, pkg-config)
pkg-config --libs openssl
3. Database Connection Errors
Symptoms:
- "Connection refused" to PostgreSQL
- morphee-server can't query database
- sqlx connection pool errors
Solutions:
# Check PostgreSQL is running
docker compose -f docker-compose.dev.yml ps supabase-db
# Check PostgreSQL logs
docker compose -f docker-compose.dev.yml logs supabase-db
# Connect to PostgreSQL directly
docker compose -f docker-compose.dev.yml exec supabase-db psql -U morphee -d morphee
# Run migrations if tables are missing
docker compose -f docker-compose.dev.yml exec supabase-db psql -U morphee -d morphee \
-f /docker-entrypoint-initdb.d/001_core_tables.sql
4. Redis Connection Issues
Symptoms:
- Events not publishing/receiving
- WebSocket updates not working
- "Connection refused" to Redis
Solutions:
# Check Redis is running
docker compose -f docker-compose.dev.yml ps redis
# Test Redis connectivity
docker compose -f docker-compose.dev.yml exec redis redis-cli ping
# Should return: PONG
# Check Redis memory usage
docker compose -f docker-compose.dev.yml exec redis redis-cli INFO memory
# Clear Redis cache if needed
docker compose -f docker-compose.dev.yml exec redis redis-cli FLUSHALL
5. WebSocket Connection Failures
Symptoms:
- WebSocket connection fails
- No real-time updates
- Browser shows WebSocket error
Solutions:
# Check WebSocket endpoint
wscat -c ws://localhost:3000/v1/ws
# Or use browser console: new WebSocket('ws://localhost:3000/v1/ws')
# Check morphee-server logs for WebSocket errors
docker compose -f docker-compose.dev.yml logs morphee-server | grep -i websocket
# Verify Redis pub/sub is working
docker compose -f docker-compose.dev.yml exec redis redis-cli PSUBSCRIBE '*'
6. Performance Issues
Symptoms:
- Slow API response times
- High CPU/memory usage
- Database queries taking too long
Diagnosis:
# Check Docker resource usage
docker stats
# Check PostgreSQL slow queries
docker compose -f docker-compose.dev.yml exec supabase-db psql -U morphee -d morphee -c "
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;"
# Monitor morphee-server logs for slow operations
docker compose -f docker-compose.dev.yml logs morphee-server | grep -i "slow\|timeout"
Solutions:
- Increase Docker Resources — Docker Desktop settings, increase CPU/Memory
- Optimize Database
VACUUM ANALYZE; - Connection Pooling — morphee-server uses sqlx connection pooling by default; check
MORPHEE_DATABASE_MAX_CONNECTIONSif set
7. File Permission Errors
Symptoms:
- Permission denied errors
- Can't write logs or data
- Volume mount issues
Solutions:
# Fix permissions on local directories
sudo chown -R $(whoami):$(whoami) .
chmod -R 755 .
# For macOS with mounted volumes, add :delegated flag in docker-compose
8. Environment Configuration Issues
Symptoms:
- Settings not being applied
- Wrong database connection
- Incorrect secrets
Solutions:
# Verify .env file is loaded
docker compose -f docker-compose.dev.yml config
# Check environment variables in container
docker compose -f docker-compose.dev.yml exec morphee-server env | grep MORPHEE_
# Recreate containers to reload environment
docker compose -f docker-compose.dev.yml down
docker compose -f docker-compose.dev.yml up -d
Debugging Techniques
Enable Debug Logging
Set in .env or environment:
RUST_LOG=morphee_server=debug,morphee_core=debug
Restart morphee-server:
docker compose -f docker-compose.dev.yml restart morphee-server
Monitor Event Bus
# Subscribe to all Redis events
docker compose -f docker-compose.dev.yml exec redis redis-cli PSUBSCRIBE '*'
Inspect Database State
# Connect to PostgreSQL
docker compose -f docker-compose.dev.yml exec supabase-db psql -U morphee -d morphee
# Useful commands
\dt -- List all tables
\d tablename -- Describe table structure
SELECT * FROM users LIMIT 10;
Error Messages Reference
See also: Error Code Catalog
| Error | Cause | Fix |
|---|---|---|
| "Database connection pool exhausted" | Too many concurrent connections | Reduce load or increase pool size via MORPHEE_DATABASE_MAX_CONNECTIONS |
| "Redis connection lost" | Redis server disconnected | Check Redis is running; morphee-server auto-reconnects |
| "Migration failed" | sqlx migration error | Check logs, verify database schema, re-run migrations |
| "WASM extension load failed" | Invalid or missing extension binary | Verify extension exists in storage, check binary compatibility |
Reset to Clean State
If all else fails:
# WARNING: This will delete all data!
docker compose -f docker-compose.dev.yml down -v
docker images | grep morphee | awk '{print $3}' | xargs docker rmi
docker system prune -a --volumes
docker compose -f docker-compose.dev.yml build --no-cache
docker compose -f docker-compose.dev.yml up -d
curl http://localhost:3000/health
Last Updated: February 28, 2026
For additional help, see:
- architecture.md — System architecture
- testing.md — Testing procedures
- deployment.md — Deployment guide
- RUNBOOK.md — Operations runbook