From d8c5697f39423df91f8600e41370dace03a7759d Mon Sep 17 00:00:00 2001 From: Evandro Fonseca Junior Date: Thu, 26 Mar 2026 20:52:28 -0300 Subject: [PATCH] feat: print API endpoints and chat UI link on server startup --- crates/inference-server/src/main.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) 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(())