CodeReviewAgent / modal_deploy.py
c1r3x's picture
Review Agent: first commit
88d205f
# modal_deploy.py
from modal import Image, Stub, asgi_app
import sys
# Create a Modal image with the required dependencies
image = Image.debian_slim().pip_install_from_requirements("requirements.txt")
# Create a Modal Stub
stub = Stub("code-review-agent")
@stub.function(image=image, timeout=600)
@asgi_app()
def app():
"""
Deploy the Code Review Agent as an ASGI app on Modal.
This function sets up the Gradio application and returns it as an ASGI app
that Modal can serve. The app will be accessible via a URL provided by Modal
after deployment.
Returns:
ASGI application: The Gradio app as an ASGI application
"""
import os
import sys
import logging
from dotenv import load_dotenv
# Add the project root to the Python path
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
# Import application modules
from src.ui.gradio_app import create_gradio_app
from src.core.agent_manager import AgentManager
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
# Load environment variables
load_dotenv()
# Create logs directory if it doesn't exist
logs_dir = os.path.join(os.path.dirname(__file__), 'logs')
os.makedirs(logs_dir, exist_ok=True)
# Initialize the agent manager
agent_manager = AgentManager()
# Create the Gradio app
gradio_app = create_gradio_app(agent_manager)
# Return the Gradio app as an ASGI app
return gradio_app.app
if __name__ == "__main__":
# For local testing
stub.serve()
# For deployment
# Run: modal deploy modal_deploy.py