From 4beb762885de004c8ab3446aad241dd454ddc1f5 Mon Sep 17 00:00:00 2001 From: Ali Shahkar Date: Fri, 10 Apr 2026 09:57:10 -0700 Subject: [PATCH] fix(cloud-router): prevent local HF org models from being misrouted to OpenRouter (#213) get_provider() previously routed any "/" model to OpenRouter, which caused locally-served models (e.g. mlx-community/Qwen3.5-27B-4bit-DWQ) to be sent to the cloud instead of localhost:8080. Adds _LOCAL_HF_ORGS module-level allowlist covering mlx-community/, bartowski/, unsloth/, and lmstudio-community/. Returns None early for these before the openrouter "/" check. --- src/openjarvis/server/cloud_router.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/openjarvis/server/cloud_router.py b/src/openjarvis/server/cloud_router.py index c71623c3..b80d1f9b 100644 --- a/src/openjarvis/server/cloud_router.py +++ b/src/openjarvis/server/cloud_router.py @@ -28,6 +28,14 @@ _ANTHROPIC_PREFIXES = ("claude-",) _GOOGLE_PREFIXES = ("gemini-",) _MINIMAX_PREFIXES = ("MiniMax-",) +# HuggingFace orgs that host local-only quantised models — never route to cloud. +_LOCAL_HF_ORGS = ( + "mlx-community/", + "bartowski/", + "unsloth/", + "lmstudio-community/", +) + def _load_keys() -> dict[str, str]: """Read cloud-keys.env from disk every call so live updates are picked up.""" @@ -64,6 +72,8 @@ def get_provider(model: str) -> str | None: return "google" if any(model.startswith(p) for p in _MINIMAX_PREFIXES): return "minimax" + if any(model.startswith(org) for org in _LOCAL_HF_ORGS): + return None # local model, never route to cloud if "/" in model: # openrouter format: "meta-llama/llama-3-8b" return "openrouter" return None