From b8c9cdb50710a722b91ff1c1150a722c1ef2da2d Mon Sep 17 00:00:00 2001 From: Alde Rojas Date: Mon, 8 Dec 2025 23:09:45 -0600 Subject: [PATCH] server : run child server on localhost --- tools/server/server-models.cpp | 8 ++++++-- tools/server/server-models.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/server/server-models.cpp b/tools/server/server-models.cpp index 6f88e93c4bb..b3ef7853ec5 100644 --- a/tools/server/server-models.cpp +++ b/tools/server/server-models.cpp @@ -164,6 +164,7 @@ server_models::server_models( /* path */ model.manifest_path, /* path_mmproj */ "", // auto-detected when loading /* in_cache */ true, + /* hostname */ "", /* port */ 0, /* status */ SERVER_MODEL_STATUS_UNLOADED, /* last_used */ 0, @@ -189,6 +190,7 @@ server_models::server_models( /* path */ model.path, /* path_mmproj */ model.path_mmproj, /* in_cache */ false, + /* hostname */ "", /* port */ 0, /* status */ SERVER_MODEL_STATUS_UNLOADED, /* last_used */ 0, @@ -364,6 +366,7 @@ void server_models::load(const std::string & name, bool auto_load) { // prepare new instance info instance_t inst; inst.meta = meta; + inst.meta.hostname = "127.0.0.1"; inst.meta.port = get_free_port(); inst.meta.status = SERVER_MODEL_STATUS_LOADING; inst.meta.last_used = ggml_time_ms(); @@ -392,6 +395,7 @@ void server_models::load(const std::string & name, bool auto_load) { } // set model args + add_or_replace_arg(child_args, "--host", inst.meta.hostname); add_or_replace_arg(child_args, "--port", std::to_string(inst.meta.port)); add_or_replace_arg(child_args, "--alias", inst.meta.name); @@ -571,7 +575,7 @@ server_http_res_ptr server_models::proxy_request(const server_http_req & req, co SRV_INF("proxying request to model %s on port %d\n", name.c_str(), meta->port); auto proxy = std::make_unique( method, - base_params.hostname, + meta->hostname, meta->port, req.path, req.headers, @@ -599,7 +603,7 @@ std::thread server_models::setup_child_server(const common_params & base_params, body["value"] = server_model_status_to_string(SERVER_MODEL_STATUS_LOADED); req.body = body.dump(); - SRV_INF("notifying router server (port=%d) that model %s is ready\n", router_port, name.c_str()); + SRV_INF("notifying router server (host=%s port=%d) that model %s is ready\n", base_params.hostname.c_str(), router_port, name.c_str()); auto result = cli.send(std::move(req)); if (result.error() != httplib::Error::Success) { auto err_str = httplib::to_string(result.error()); diff --git a/tools/server/server-models.h b/tools/server/server-models.h index 526e7488dc9..5055de01afe 100644 --- a/tools/server/server-models.h +++ b/tools/server/server-models.h @@ -51,6 +51,7 @@ struct server_model_meta { std::string path; std::string path_mmproj; // only available if in_cache=false bool in_cache = false; // if true, use -hf; use -m otherwise + std::string hostname; int port = 0; server_model_status status = SERVER_MODEL_STATUS_UNLOADED; int64_t last_used = 0; // for LRU unloading