From 3f6c6bd29e25441b8d36fbe934b019df13fff0b1 Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Wed, 1 Jul 2026 04:56:37 -0700 Subject: [PATCH] fix(vertex): surface Vertex on the desktop Keys tab for provider parity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The provider-parity contract (tests/hermes_cli/test_provider_parity.py) requires every hermes model provider to be configurable in the desktop Providers tabs. Vertex authenticates via OAuth2 (service-account JSON / ADC) and has no api_key_env_vars, so — like bedrock's aws_sdk — it needs its credential env var tagged to the provider card explicitly. Tag VERTEX_CREDENTIALS_PATH to the vertex card in _catalog_provider_env_metadata(). --- hermes_cli/web_server.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hermes_cli/web_server.py b/hermes_cli/web_server.py index 54ee28e26..ae53511d4 100644 --- a/hermes_cli/web_server.py +++ b/hermes_cli/web_server.py @@ -4846,6 +4846,25 @@ def _catalog_provider_env_metadata() -> dict: "advanced": existing.get("advanced", True), "category": "provider", } + + # Vertex AI authenticates via OAuth2 (service-account JSON or ADC), not a + # pasted API key, so it also has no api_key_env_vars. Tag its credential + # env var to the provider card so it appears on the Keys tab (otherwise + # Vertex — a `hermes model` provider — would be invisible in the desktop + # app). The value is a filesystem path, not a secret string, so it is + # not a password field. + if d.auth_type == "vertex": + existing = meta.get("VERTEX_CREDENTIALS_PATH", {}) + meta["VERTEX_CREDENTIALS_PATH"] = { + "provider": d.slug, + "provider_label": d.label, + "description": existing.get("description") + or f"{d.label} — service account JSON path (or use ADC)", + "url": existing.get("url"), + "is_password": False, + "advanced": existing.get("advanced", True), + "category": "provider", + } return meta