feat: add Anaconda Desktop provider - #11714
Conversation
| .toLowerCase() | ||
| if (/embed|rerank|sentence[-_ ]similarity/.test(kind)) return false | ||
| const capabilities = record(props.capabilities) ? props.capabilities : undefined | ||
| if (capabilities?.chat === false || capabilities?.completion === false) return false |
There was a problem hiding this comment.
WARNING: Chat-only servers are rejected as unhealthy
This treats capabilities.completion === false as a hard failure, but this provider later goes through the OpenAI-compatible chat runtime rather than the legacy completions API. A server that explicitly disables text completions while still supporting chat will therefore be misclassified as inference-unhealthy and can never be connected. It would be safer to reject only when Desktop reports chat support is unavailable.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| } satisfies DiscoveryResult | ||
| } | ||
|
|
||
| const server = servers[0] |
There was a problem hiding this comment.
WARNING: Discovery stops after the first running server
/api/servers?status=running&tag=inference can return more than one running server, but this code always validates servers[0] and returns inference-unhealthy as soon as that one fails. If the first entry is stale or unhealthy while a later entry is healthy, setup is blocked even though Desktop already has a usable local server. Scanning the list until one server passes discovery would avoid that false negative.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (9 files)
Previous Review Summary (commit 78b5777)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 78b5777)Status: 2 Issues Found | Recommendation: Address before merge Overview
Fix these issues in Kilo Cloud Issue Details (click to expand)WARNING
Files Reviewed (66 files)
Reviewed by gpt-5.4-20260305 · Input: 78.5K · Output: 7.7K · Cached: 282.4K Review guidance: REVIEW.md from base branch |
|
@kirillk - can you do an initial review here to see if this makes any sense whatsoever? I tried to slim this down, but it seems like a more traditional configuration based approach is not ideal, as noted in the description... this is a fairly heavy change as a result though. Curious what you think! |
feat: add Anaconda Desktop provider


What changed
Add Anaconda Desktop as a local model provider in the CLI and VS Code. Kilo discovers the installed Desktop application and its active text-generation server, stores only the inference connection needed at runtime, and exposes dedicated connect and refresh flows with explicit guidance when tool calling is unavailable.
Why
Anaconda Desktop users can already run OpenAI-compatible local model servers, but connecting them to Kilo required manually copying endpoint and credential details. This integration keeps Desktop as the owner of model and server lifecycle while making the Kilo connection discoverable and repeatable.
Provider registration
Anaconda Desktop uses a small catalog seed plus a
provider.modelsplugin hook. Model hooks run only for providers already present in the initial models.dev catalog; unlike OpenAI Codex, GitHub Copilot, and DigitalOcean, Anaconda Desktop has no models.dev entry to modify. The seed makes it visible as a disconnected provider, and the plugin replaces its setup placeholder with models discovered from the stored Desktop connection.The custom OpenAI/Atomic Chat config-provider path is intentionally not used. That path represents user-owned configuration and only exists after opt-in/configuration, while Anaconda must be discoverable before connection and its endpoint, key, model, context, and capabilities are generated by Desktop. Persisting those values as custom provider configuration would introduce generated-config ownership, stale-model, and disconnect-cleanup concerns.
A future generic plugin API could allow plugins to declare catalog metadata for providers absent from models.dev, eliminating the seed overlays. That broader provider-framework change is kept out of this feature PR.
Design constraints