#!/usr/bin/env python3 """ Start the Mem0 API server """ import os import sys import uvicorn import logging # Add current directory to path for imports sys.path.insert(0, '/home/klas/mem0') from api.main import app # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def main(): """Start the API server""" # Set environment variables with defaults os.environ.setdefault("API_HOST", "localhost") os.environ.setdefault("API_PORT", "8080") os.environ.setdefault("API_KEYS", "mem0_dev_key_123456789,mem0_test_key_987654321") os.environ.setdefault("ADMIN_API_KEYS", "mem0_admin_key_111222333") os.environ.setdefault("RATE_LIMIT_REQUESTS", "100") os.environ.setdefault("RATE_LIMIT_WINDOW_MINUTES", "1") host = os.getenv("API_HOST") port = int(os.getenv("API_PORT")) logger.info("=" * 60) logger.info("🚀 STARTING MEM0 MEMORY SYSTEM API") logger.info("=" * 60) logger.info(f"📍 Server: http://{host}:{port}") logger.info(f"📚 API Docs: http://{host}:{port}/docs") logger.info(f"🔐 API Keys: {len(os.getenv('API_KEYS', '').split(','))} configured") logger.info(f"👑 Admin Keys: {len(os.getenv('ADMIN_API_KEYS', '').split(','))} configured") logger.info(f"⏱️ Rate Limit: {os.getenv('RATE_LIMIT_REQUESTS')}/min") logger.info("=" * 60) try: uvicorn.run( app, host=host, port=port, log_level="info", access_log=True ) except KeyboardInterrupt: logger.info("🛑 Server stopped by user") except Exception as e: logger.error(f"❌ Server failed to start: {e}") sys.exit(1) if __name__ == "__main__": main()