diff --git a/crates/inference-server/src/main.rs b/crates/inference-server/src/main.rs index 8b56ba8..be9e6f5 100644 --- a/crates/inference-server/src/main.rs +++ b/crates/inference-server/src/main.rs @@ -65,7 +65,7 @@ async fn main() -> Result<()> { let state = AppState { engine: Arc::new(Mutex::new(engine)), counters: PerfCounters::new(), - model_name: Arc::new(model_name), + model_name: Arc::new(model_name.clone()), server_config, start_time: std::time::Instant::now(), }; @@ -78,7 +78,29 @@ async fn main() -> Result<()> { let router = build_router(state); let listener = tokio::net::TcpListener::bind(addr).await?; - info!(addr = %addr, "LocalLLM server listening"); + // ── Startup banner ─────────────────────────────────────────────────── + let display_addr = if addr.ip().is_unspecified() { + format!("http://127.0.0.1:{}", addr.port()) + } else { + format!("http://{}", addr) + }; + println!(); + println!(" ╔══════════════════════════════════════════════════╗"); + println!(" ║ ForgeLM • Local LLM Runtime ║"); + println!(" ╚══════════════════════════════════════════════════╝"); + println!(); + println!(" Model : {}", model_name); + println!(); + println!(" API Endpoints:"); + println!(" GET {}/health", display_addr); + println!(" GET {}/v1/models", display_addr); + println!(" POST {}/v1/chat/completions", display_addr); + println!(); + println!(" Chat UI:"); + println!(" file://$(pwd)/ui/chat.html"); + println!(" (open ui/chat.html in your browser and set server to {})", display_addr); + println!(); + axum::serve(listener, router).await?; Ok(())