"""Modal deployment for Spice Bae AI Advisor. Deploy with: modal deploy modal_app.py Test locally: modal serve modal_app.py """ import modal app = modal.App("spice-bae") image = ( modal.Image.debian_slim(python_version="3.11") .pip_install( "gradio[mcp]==5.50.0", "fastapi[standard]", "neo4j", "python-dotenv", "requests", "beautifulsoup4>=4.12.0", ) .add_local_file("app.py", "/root/app.py") .add_local_dir("tools", "/root/tools") .add_local_dir("data", "/root/data") ) @app.function( image=image, secrets=[modal.Secret.from_name("spice-bae-secrets")], max_containers=1, timeout=600, ) @modal.web_server(port=7860, startup_timeout=120) def serve(): """Serve the Spice Bae Gradio app.""" import sys import os import subprocess # Add mounted code directory to Python path sys.path.insert(0, "/root") os.chdir("/root") # Launch Gradio app directly with its built-in server subprocess.Popen( [ sys.executable, "-c", """ import sys sys.path.insert(0, "/root") import os os.chdir("/root") from app import demo demo.launch( server_name="0.0.0.0", server_port=7860, mcp_server=True, share=False, ssr_mode=False ) """ ], env={**os.environ} ) # Instructions for deployment: # # 1. Install Modal CLI: # pip install modal # modal setup # # 2. Deploy vLLM first (for open-source LLM): # modal deploy modal_vllm.py # Note the URL: https://YOUR_USERNAME--spice-bae-llm-serve.modal.run # # 3. Create secrets (using vLLM endpoint): # modal secret create spice-bae-secrets \ # NEO4J_URI="neo4j+s://xxx.databases.neo4j.io" \ # NEO4J_USERNAME="neo4j" \ # NEO4J_PASSWORD="your_password" \ # OPENAI_API_BASE="https://YOUR_USERNAME--spice-bae-llm-serve.modal.run/v1" \ # OPENAI_API_KEY="not-needed" \ # OPENAI_MODEL="Qwen/Qwen2.5-7B-Instruct" # # OR use Anthropic instead: # modal secret create spice-bae-secrets \ # NEO4J_URI="neo4j+s://xxx.databases.neo4j.io" \ # NEO4J_USERNAME="neo4j" \ # NEO4J_PASSWORD="your_password" \ # ANTHROPIC_API_KEY="sk-ant-xxx" # # 4. Deploy: # modal deploy modal_app.py # # 5. Your app will be available at: # https://your-username--spice-bae-serve.modal.run # # MCP Endpoint: # https://your-username--spice-bae-serve.modal.run/gradio_api/mcp/sse