11"""CLI for serving Modal apps locally."""
22
3+ import os
34import signal
45import subprocess
56import sys
@@ -31,16 +32,33 @@ def _prefix_output(process, name, color):
3132def serve_all ():
3233 """
3334 Serve the combined dev app (all services in one).
34-
35+
3536 For local development, we use dev_combined.py which includes
3637 Server, Search, and Processing in a single Modal app.
3738 This allows hot-reload on all services without cross-app lookup issues.
39+
40+ Usage: uv run dev <name>
41+
42+ The name parameter is required and will prefix the Modal app name
43+ to avoid conflicts when multiple developers run dev instances.
3844 """
39- print ("Starting combined dev app (all services in one)...\n " )
40- print (f" \033 [32m●{ RESET } dev-combined (server + search + processing)\n " )
45+ if len (sys .argv ) < 2 :
46+ print ("Error: Name parameter is required for dev mode." )
47+ print ("Usage: uv run dev <name>" )
48+ print ("\n Example: uv run dev john" )
49+ print ("This creates a Modal app named 'john-dev-server'" )
50+ sys .exit (1 )
51+
52+ dev_name = sys .argv [1 ]
53+
54+ # Set environment variable for the Modal app to read
55+ os .environ ["DEV_NAME" ] = dev_name
56+
57+ print (f"Starting combined dev app for '{ dev_name } '...\n " )
58+ print (f" \033 [32m●{ RESET } { dev_name } -dev-server (server + search + processing)\n " )
4159 print ("Note: For staging/prod, deploy individual apps separately.\n " )
4260 print ("-" * 60 + "\n " )
43-
61+
4462 # Run with color-coded output prefixing
4563 color = "\033 [32m" # Green for combined dev app
4664 process = subprocess .Popen (
@@ -49,18 +67,19 @@ def serve_all():
4967 stderr = subprocess .STDOUT ,
5068 text = True ,
5169 bufsize = 1 ,
70+ env = {** os .environ , "DEV_NAME" : dev_name },
5271 )
53-
72+
5473 # Handle graceful shutdown
5574 def signal_handler (sig , frame ):
5675 process .terminate ()
5776 sys .exit (0 )
58-
77+
5978 signal .signal (signal .SIGINT , signal_handler )
6079 signal .signal (signal .SIGTERM , signal_handler )
61-
80+
6281 # Stream output with color prefix
63- _prefix_output (process , "dev" , color )
82+ _prefix_output (process , dev_name , color )
6483 process .wait ()
6584
6685
0 commit comments