You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
✨ feat(ui): Settings → API Keys lists local LLM providers with Base URL Advanced section
Part 2 of #8254. The Settings → API Keys modal now renders the nine
chat-only providers (Groq, OpenRouter, Open WebUI + Ollama, llama.cpp,
LocalAI, vLLM, LM Studio, RHAIIS) with an Advanced expandable section
that accepts a per-provider Base URL override.
Backend changes
---------------
- KeyStatus gains BaseURL, BaseURLEnvVar, BaseURLSource fields so the
frontend can render the current resolved value and indicate whether
it came from env or config file.
- handleGetKeysStatus now returns the nine chat-only providers (was
previously an empty list per the "API-key-driven agents are hidden"
comment, which predated PR #8248 flipping them on). CLI-based
tool-capable agents (claude-code, bob, codex, ...) remain omitted —
they manage their own credentials.
- SetKeyRequest.APIKey is now optional: setting just BaseURL is the
common path for unauthenticated local LLM runners. handleSetKey
accepts any combination of apiKey, baseURL, model — at least one
is required. Base URL is syntactically validated (http(s)://, no
whitespace) via validateBaseURL before being saved. On successful
save, cached key validity is invalidated so the next validation
hits the new endpoint.
- Key validation is skipped for local LLM runners (validationRequired
is false on their providerDef entries). There is no meaningful way
to validate the sentinel "local-llm-no-auth" placeholder against a
real endpoint, so we report Configured=true based on URL presence.
Frontend changes
----------------
- KeyStatus TS interface gains baseURL, baseURLEnvVar, baseURLSource.
- APIKeySettings.tsx adds an Advanced expandable to each row. It
only renders when the backend reports baseURLEnvVar (meaning the
provider actually supports an override). The form includes a
text input, an inline "env var wins" hint when baseURLSource is
"env", syntactic validation feedback, and a post-save "restart
kc-agent to apply" message. The summary row shows the current
resolved value next to the Advanced toggle so operators can see
it at a glance.
Closes#8254.
- go build ./... passes.
- go test ./pkg/agent/... passes (flaky auto-update test unrelated).
- npm run build passes all post-build safety checks.
Signed-off-by: Andrew Anderson <[email protected]>
returnfmt.Errorf("base URL must start with http:// or https://")
471
+
}
472
+
returnnil
473
+
}
474
+
389
475
// validateAPIKey tests if the configured key for a provider works
0 commit comments