diff --git a/src/cpp/server/ollama_api.cpp b/src/cpp/server/ollama_api.cpp index 7687caab4..420306c56 100644 --- a/src/cpp/server/ollama_api.cpp +++ b/src/cpp/server/ollama_api.cpp @@ -1,5 +1,6 @@ #include "lemon/ollama_api.h" #include "lemon/model_types.h" +#include "lemon/runtime_config.h" #include #include #include @@ -1181,6 +1182,13 @@ void OllamaApi::handle_pull(const httplib::Request& req, httplib::Response& res) res.set_content(error.dump(), "application/json"); return; } + auto* cfg = RuntimeConfig::global(); + if (cfg && cfg->offline()) { + res.status = 400; + json error = {{"error", "Lemond is in offline mode, models not downloaded"}, {"code", "lemond_offline"}}; + res.set_content(error.dump(), "application/json"); + return; + } LOG(INFO, "OllamaApi") << "POST /api/pull - Pulling model: " << name << std::endl; diff --git a/src/cpp/server/server.cpp b/src/cpp/server/server.cpp index b2b0327ab..c63ca0c50 100644 --- a/src/cpp/server/server.cpp +++ b/src/cpp/server/server.cpp @@ -3548,6 +3548,13 @@ void Server::handle_pull(const httplib::Request& req, httplib::Response& res) { return; } + if (config_->offline()) { + res.status = 400; + nlohmann::json error = {{"error", "Lemond is in offline mode, models not downloaded"}, {"code", "lemond_offline"}}; + res.set_content(error.dump(), "application/json"); + return; + } + if (stream) { auto operation = [this, model_name, request_json, do_not_upgrade](DownloadProgressCallback progress_cb) { model_manager_->download_model(model_name, request_json, do_not_upgrade, progress_cb);