feat: print API endpoints and chat UI link on server startup

This commit is contained in:
Evandro Fonseca Junior committed 2026-03-26 20:52:28 -03:00
1 parent d0c2f86f3f
commit d8c5697f39
1 file changed
+24 -2
+24 -2
View File
@@ -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(())