| |
| """ |
| SGLang Model Gateway CLI |
| |
| Provides convenient command-line interface for launching the router and server. |
| |
| Usage: |
| smg launch [args] # Launch router only |
| smg server [args] # Launch router + server |
| smg --help # Show help |
| """ |
|
|
| import argparse |
| import os |
| import sys |
| from typing import List, Optional |
|
|
| from sglang_router.sglang_router_rs import ( |
| get_verbose_version_string, |
| get_version_string, |
| ) |
|
|
|
|
| def create_parser() -> argparse.ArgumentParser: |
| """Create the main CLI parser with subcommands.""" |
| prog_name = os.path.basename(sys.argv[0]) if sys.argv else "smg" |
| parser = argparse.ArgumentParser( |
| prog=prog_name, |
| description="SGLang Model Gateway - High-performance inference router", |
| formatter_class=argparse.RawDescriptionHelpFormatter, |
| ) |
|
|
| subparsers = parser.add_subparsers(dest="command", help="Available commands") |
|
|
| |
| launch_parser = subparsers.add_parser( |
| "launch", |
| help="Launch router only (requires existing worker URLs)", |
| description="Launch the SGLang router with existing worker instances", |
| add_help=False, |
| ) |
|
|
| |
| server_parser = subparsers.add_parser( |
| "server", |
| help="Launch router and server processes together", |
| description="Launch both SGLang router and server processes", |
| add_help=False, |
| ) |
|
|
| return parser |
|
|
|
|
| def main(argv: Optional[List[str]] = None) -> None: |
| """Main CLI entry point.""" |
| if argv is None: |
| argv = sys.argv[1:] |
|
|
| |
| if argv and argv[0] in ["--version", "-V", "--version-verbose"]: |
| if argv[0] == "--version-verbose": |
| print(get_verbose_version_string()) |
| else: |
| print(get_version_string()) |
| sys.exit(0) |
|
|
| |
| if not argv or argv[0] not in ["launch", "server", "-h", "--help"]: |
| parser = create_parser() |
| parser.print_help() |
| sys.exit(1) |
|
|
| parser = create_parser() |
| args, unknown = parser.parse_known_args(argv) |
|
|
| if args.command == "launch": |
| |
| from sglang_router.launch_router import launch_router, parse_router_args |
|
|
| |
| router_args = parse_router_args(unknown) |
| launch_router(router_args) |
|
|
| elif args.command == "server": |
| |
| |
| |
| import sglang_router.launch_server as launch_server_module |
|
|
| |
| original_argv = sys.argv |
| try: |
| |
| prog_name = os.path.basename(sys.argv[0]) if sys.argv else "smg" |
| sys.argv = [f"{prog_name} server"] + unknown |
| launch_server_module.main() |
| finally: |
| |
| sys.argv = original_argv |
|
|
| else: |
| parser.print_help() |
| sys.exit(1) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|