Skip to content

Conversation

@ochsec
Copy link
Contributor

@ochsec ochsec commented Dec 27, 2025

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.

…st#6180)

When loading models from the config, the code was looking up existing models
using the optional model.id field (if provided by the user). This caused
models with the same api.id to potentially get merged into a single entry.

For local Ollama models with modelIDs like 'devstral-small-2:latest' and
'devstral-small-2:24b-cloud', the lookup would use model.id (which is undefined
in user configs), falling back to the full modelID. However, the issue could
occur when the code tried to reuse existing models, potentially causing
conflicting keys.

Changed the lookup to always use modelID directly when checking for existing
models, since the config parsing creates one entry per configured model ID.
This ensures all user-configured models are preserved in the final provider.

Adds test case to verify multiple Ollama models with similar names are all loaded.
@ochsec ochsec force-pushed the fix/6180-local-ollama-models-partially-missing branch from 632835b to 7594968 Compare December 27, 2025 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Local ollama models partially missing

1 participant