#!/usr/bin/env python3 """ SPARKNET Demo Launcher Cross-platform launcher for the Streamlit demo. Usage: python run_demo.py [--port PORT] """ import subprocess import sys import os from pathlib import Path def check_dependencies(): """Check and install required dependencies.""" print("šŸ“¦ Checking dependencies...") try: import streamlit print(f" āœ… Streamlit {streamlit.__version__}") except ImportError: print(" šŸ“„ Installing Streamlit...") subprocess.run([sys.executable, "-m", "pip", "install", "streamlit"], check=True) try: import pandas print(f" āœ… Pandas {pandas.__version__}") except ImportError: print(" šŸ“„ Installing Pandas...") subprocess.run([sys.executable, "-m", "pip", "install", "pandas"], check=True) try: import httpx print(f" āœ… httpx {httpx.__version__}") except ImportError: print(" šŸ“„ Installing httpx...") subprocess.run([sys.executable, "-m", "pip", "install", "httpx"], check=True) def check_ollama(): """Check if Ollama is running.""" print("\nšŸ” Checking Ollama status...") try: import httpx with httpx.Client(timeout=2.0) as client: response = client.get("http://localhost:11434/api/tags") if response.status_code == 200: data = response.json() models = len(data.get("models", [])) print(f" āœ… Ollama is running ({models} models)") return True except Exception: pass print(" āš ļø Ollama not running (demo will use simulated responses)") print(" Start with: ollama serve") return False def main(): """Main entry point.""" import argparse parser = argparse.ArgumentParser(description="SPARKNET Demo Launcher") parser.add_argument("--port", type=int, default=8501, help="Port to run on") args = parser.parse_args() print("=" * 50) print("šŸ”„ SPARKNET Demo Launcher") print("=" * 50) print() # Get project root project_root = Path(__file__).parent demo_app = project_root / "demo" / "app.py" if not demo_app.exists(): print(f"āŒ Demo app not found: {demo_app}") sys.exit(1) # Check dependencies check_dependencies() # Check Ollama check_ollama() # Launch print() print(f"šŸš€ Launching SPARKNET Demo on port {args.port}...") print(f" URL: http://localhost:{args.port}") print() print("Press Ctrl+C to stop") print("=" * 50) print() # Run Streamlit os.chdir(project_root) subprocess.run([ sys.executable, "-m", "streamlit", "run", str(demo_app), "--server.port", str(args.port), "--server.headless", "true", ]) if __name__ == "__main__": main()