| description | Configure Redis for Empathy Framework. Docker setup, persistence, monitoring. Production and development configurations included. |
|---|
Redis provides short-term memory for the Empathy Framework, enabling:
- Multi-agent coordination and state sharing
- Session persistence across requests
- Pattern staging before long-term storage
- Real-time collaboration between wizards
# Install
brew install redis
# Start as background service
brew services start redis
# Verify
redis-cli ping
# Should return: PONG# Start Redis container
docker run -d -p 6379:6379 --name empathy-redis redis:alpine
# Verify
docker exec empathy-redis redis-cli ping
# Should return: PONG- Go to your Railway project dashboard
- Click + New → Database → Redis
- Railway automatically sets
REDIS_URLfor linked services
Add to your .env file:
# Local development
REDIS_URL=redis://localhost:6379
# Railway (auto-set when Redis service is linked)
# REDIS_URL=redis://default:password@host.railway.internal:6379from wizards_consolidated.redis_config import redis_health_check
result = redis_health_check()
print(result)
# {'status': 'healthy', 'version': '8.4.0', 'connected_clients': 1, ...}Or from command line:
python -c "from wizards_consolidated.redis_config import redis_health_check; print(redis_health_check())"from empathy_os import get_redis_memory
# Auto-detects REDIS_URL, falls back to localhost, then mock mode
memory = get_redis_memory()
# Store data (expires in 1 hour by default)
memory.set("my_key", {"data": "value"}, ttl=3600)
# Retrieve data
data = memory.get("my_key")from empathy_os import EmpathyOS, get_redis_memory
memory = get_redis_memory()
empathy = EmpathyOS(
user_id="developer",
short_term_memory=memory,
)
# Store working data
empathy.stash("analysis_results", {"files": 10, "issues": 3})
# Retrieve later
results = empathy.retrieve("analysis_results")from wizards_consolidated.healthcare.sbar_wizard import SBARWizard
# Sessions automatically use Redis when available
wizard = SBARWizard()
session = wizard.create_session(user_id="nurse_001")The framework handles Redis unavailability gracefully:
- Redis available: Full short-term memory functionality
- Redis unavailable: Falls back to in-memory storage (session-only, not shared)
- Mock mode: Set
REDIS_URL=""to force in-memory mode for testing
Error: Connection refused to localhost:6379
Solution: Redis isn't running. Start it:
brew services start redis
# or
docker start empathy-redisError connecting to redis-xxx.railway.internal:6379
Solution: Railway internal URLs only work within Railway's network. For local development:
- Use
REDIS_URL=redis://localhost:6379in your.env - Run Redis locally (Homebrew or Docker)
echo $REDIS_URLIf it shows a Railway URL locally, override it:
export REDIS_URL=redis://localhost:6379- Railway Redis is only accessible within the private network
- Use
REDIS_PRIVATE_URLfor internal communication - Never expose Redis ports publicly
# Set appropriate TTLs to prevent memory bloat
memory.set("temp_data", data, ttl=300) # 5 minutes
memory.set("session_data", data, ttl=3600) # 1 hour
memory.set("staging_pattern", data, ttl=86400) # 24 hoursfrom wizards_consolidated.redis_config import redis_health_check
health = redis_health_check()
print(f"Memory used: {health.get('used_memory')}")
print(f"Connected clients: {health.get('connected_clients')}")- Short-Term Memory Guide - Deep dive into memory patterns
- Multi-Agent Coordination - Team coordination with Redis
- Configuration Reference - All configuration options