//! RustyTorch++ Serving API — entry point //! //! Starts the HTTP serving API with model inference, health checks, //! and cache management endpoints. //! //! Usage: //! cargo run -p rtx-serving-api //! cargo run -p rtx-serving-api -- --port 8080 --host 0.0.0.0 use rtx_serving_api::{ServerConfig, ServingServer}; #[tokio::main] async fn main() -> anyhow::Result<()> { // Initialize tracing tracing_subscriber::fmt().init(); // Load config from environment let host = std::env::var("RTX_HOST").unwrap_or_else(|_| "127.0.0.1".to_string()); let port: u16 = std::env::var("RTX_PORT") .ok() .and_then(|p| p.parse().ok()) .unwrap_or(8080); let timeout: u64 = std::env::var("RTX_TIMEOUT") .ok() .and_then(|t| t.parse().ok()) .unwrap_or(30); let config = ServerConfig { host, port, timeout_seconds: timeout, }; tracing::info!("╔════════════════════════════════════════════╗"); tracing::info!("║ RustyTorch++ Serving API ║"); tracing::info!("║ Port: {} ║", config.port); tracing::info!("╚════════════════════════════════════════════╝"); let server = ServingServer::new(config); server.serve().await.map_err(|e| anyhow::anyhow!("{}", e))?; Ok(()) }