[PR #6237] fix: preserve all configured local models when loading from config (#6180) #11795

Closed
opened 2026-02-16 18:16:44 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/anomalyco/opencode/pull/6237

State: closed
Merged: No


Summary

Fixes #6180 - Local ollama models partially missing

When loading models from the config, the code was looking up existing models using the optional model.id field, which could cause models to be inadvertently deduplicated or lost.

Problem

Users configuring multiple local Ollama models with similar names (e.g., devstral-small-2:latest and devstral-small-2:24b-cloud) would find that only some models appeared in the model picker.

Root Cause

In packages/opencode/src/provider/provider.ts line 614, the existing model lookup used:

const existingModel = parsed.models[model.id ?? modelID]

This could cause issues with model merging/deduplication when model.id was undefined.

Solution

Changed the lookup to always use modelID directly:

// Look for existing model only by modelID to ensure we preserve all configured models
const existingModel = parsed.models[modelID]

This ensures each configured model gets its own entry without any unintended merging.

Testing

Added test case verifying multiple Ollama models with similar names are all loaded
All 59 provider tests pass
Verified against live Ollama server with 5 real models - all loaded correctly

Live Integration Test Results:

  • nemotron-3-nano:30b ✓
  • qwen3:8b ✓
  • qwq:latest ✓
  • qwen3:32b ✓
  • deepseek-r1:32b ✓

All 5 configured models loaded successfully with the fix applied.

**Original Pull Request:** https://github.com/anomalyco/opencode/pull/6237 **State:** closed **Merged:** No --- ## Summary Fixes #6180 - Local ollama models partially missing When loading models from the config, the code was looking up existing models using the optional `model.id` field, which could cause models to be inadvertently deduplicated or lost. ## Problem Users configuring multiple local Ollama models with similar names (e.g., `devstral-small-2:latest` and `devstral-small-2:24b-cloud`) would find that only some models appeared in the model picker. ## Root Cause In `packages/opencode/src/provider/provider.ts` line 614, the existing model lookup used: ```typescript const existingModel = parsed.models[model.id ?? modelID] ``` This could cause issues with model merging/deduplication when `model.id` was undefined. ## Solution Changed the lookup to always use `modelID` directly: ```typescript // Look for existing model only by modelID to ensure we preserve all configured models const existingModel = parsed.models[modelID] ``` This ensures each configured model gets its own entry without any unintended merging. ## Testing ✅ Added test case verifying multiple Ollama models with similar names are all loaded ✅ All 59 provider tests pass ✅ Verified against live Ollama server with 5 real models - all loaded correctly ### Live Integration Test Results: - nemotron-3-nano:30b ✓ - qwen3:8b ✓ - qwq:latest ✓ - qwen3:32b ✓ - deepseek-r1:32b ✓ All 5 configured models loaded successfully with the fix applied.
yindo added the pull-request label 2026-02-16 18:16:44 -05:00
yindo closed this issue 2026-02-16 18:16:44 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#11795