72 lines
1.5 KiB
Python
Executable File
72 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
MOXIE Startup Script
|
|
Quick launcher with environment checks.
|
|
"""
|
|
import sys
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
|
|
def check_dependencies():
|
|
"""Check if required dependencies are installed."""
|
|
required = [
|
|
"fastapi",
|
|
"uvicorn",
|
|
"pydantic",
|
|
"pydantic_settings",
|
|
"ollama",
|
|
"httpx",
|
|
"duckduckgo_search",
|
|
"jinja2",
|
|
"loguru",
|
|
]
|
|
|
|
missing = []
|
|
for pkg in required:
|
|
try:
|
|
__import__(pkg.replace("-", "_"))
|
|
except ImportError:
|
|
missing.append(pkg)
|
|
|
|
if missing:
|
|
print(f"Missing dependencies: {', '.join(missing)}")
|
|
print("\nInstall with: pip install -r requirements.txt")
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def main():
|
|
"""Main entry point."""
|
|
print("=" * 50)
|
|
print("MOXIE - Fake Local LLM Orchestrator")
|
|
print("=" * 50)
|
|
print()
|
|
|
|
# Check dependencies
|
|
if not check_dependencies():
|
|
sys.exit(1)
|
|
|
|
# Import and run
|
|
from main import app
|
|
import uvicorn
|
|
from config import settings
|
|
|
|
print(f"Starting server on http://{settings.host}:{settings.port}")
|
|
print(f"Admin UI: http://{settings.host}:{settings.port}/{settings.admin_path}")
|
|
print()
|
|
print("Press Ctrl+C to stop")
|
|
print()
|
|
|
|
uvicorn.run(
|
|
"main:app",
|
|
host=settings.host,
|
|
port=settings.port,
|
|
reload=settings.debug,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|