-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart_exostack.py
More file actions
108 lines (91 loc) · 2.73 KB
/
Copy pathstart_exostack.py
File metadata and controls
108 lines (91 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env python3
"""
ExoStack Startup Script
"""
import subprocess
import sys
import time
import requests
from pathlib import Path
def check_dependencies():
"""Check if required dependencies are installed."""
try:
import fastapi
import uvicorn
import redis
import psutil
import aiohttp
print("✓ All dependencies are installed")
return True
except ImportError as e:
print(f"❌ Missing dependency: {e}")
print("Run: pip install -r requirements.txt")
return False
def start_hub():
"""Start the ExoStack Hub."""
print("🚀 Starting ExoStack Hub...")
try:
process = subprocess.Popen([
sys.executable, "-m", "uvicorn",
"exo_hub.main:app",
"--host", "0.0.0.0",
"--port", "8000",
"--reload"
])
# Wait for hub to start
time.sleep(5)
# Check if hub is running
try:
response = requests.get("http://localhost:8000/")
if response.status_code == 200:
print("✓ Hub started successfully at http://localhost:8000")
return process
except:
pass
print("❌ Failed to start hub")
return None
except Exception as e:
print(f"❌ Error starting hub: {e}")
return None
def start_agent():
"""Start an ExoStack Agent."""
print("🤖 Starting ExoStack Agent...")
try:
process = subprocess.Popen([
sys.executable, "-m", "exo_agent.agent"
])
time.sleep(3)
print("✓ Agent started successfully")
return process
except Exception as e:
print(f"❌ Error starting agent: {e}")
return None
def main():
print("🚀 ExoStack Startup")
print("=" * 50)
# Check dependencies
if not check_dependencies():
sys.exit(1)
# Start hub
hub_process = start_hub()
if not hub_process:
sys.exit(1)
# Start agent
agent_process = start_agent()
if not agent_process:
hub_process.terminate()
sys.exit(1)
print("\n✅ ExoStack is running!")
print("Hub: http://localhost:8000")
print("API Docs: http://localhost:8000/docs")
print("\nPress Ctrl+C to stop...")
try:
# Keep processes running
hub_process.wait()
except KeyboardInterrupt:
print("\n🛑 Shutting down ExoStack...")
hub_process.terminate()
agent_process.terminate()
print("✓ ExoStack stopped")
if __name__ == "__main__":
main()