Related issue: #3263
In this file:
|
.filter((model: any) => model.type === "llm") |
the code filters models using:
filter((model) => model.type === "llm")
However, LM Studio’s /api/v0/models endpoint returns models that are not labeled "llm", even when they are usable chat models. I assume "vlm" is in reference to the model also being vision capable (https://lmstudio.ai/docs/typescript/llm-prediction/image-input).
Example response from LM Studio
{
"data": [
{
"id": "google/gemma-4-e4b",
"object": "model",
"type": "vlm",
"publisher": "google",
"arch": "gemma4",
"compatibility_type": "mlx",
"quantization": "4bit",
"state": "loaded",
"max_context_length": 131072,
"loaded_context_length": 8192,
"capabilities": [
"tool_use"
]
},
{
"id": "text-embedding-nomic-embed-text-v1.5",
"object": "model",
"type": "embeddings",
"publisher": "nomic-ai",
"arch": "nomic-bert",
"compatibility_type": "gguf",
"quantization": "Q4_K_M",
"state": "not-loaded",
"max_context_length": 2048
}
],
"object": "list"
}
Observed behavior
Because none of the returned models have type: "llm", the filter removes everything, resulting in:
Successfully fetched 0 models from LM Studio
This can also be confirmed in logs (macOS):
~/Library/Logs/Dyad/main.log
[2026-06-20 21:56:05.866] [info] (lmstudio_handler) Successfully fetched 0 models from LM Studio
Suggested fix
A minimal fix is to include "vlm":
filter((model) => model.type === "llm" || model.type === "vlm")
Alternatively, a more robust approach may be to exclude only embeddings:
filter((model) => model.type !== "embeddings")
This should allow LM Studio chat-capable models (including multimodal ones) to appear correctly.
Related issue: #3263
In this file:
dyad/src/ipc/handlers/local_model_lmstudio_handler.ts
Line 36 in 93fc277
the code filters models using:
However, LM Studio’s
/api/v0/modelsendpoint returns models that are not labeled"llm", even when they are usable chat models. I assume"vlm"is in reference to the model also being vision capable (https://lmstudio.ai/docs/typescript/llm-prediction/image-input).Example response from LM Studio
{ "data": [ { "id": "google/gemma-4-e4b", "object": "model", "type": "vlm", "publisher": "google", "arch": "gemma4", "compatibility_type": "mlx", "quantization": "4bit", "state": "loaded", "max_context_length": 131072, "loaded_context_length": 8192, "capabilities": [ "tool_use" ] }, { "id": "text-embedding-nomic-embed-text-v1.5", "object": "model", "type": "embeddings", "publisher": "nomic-ai", "arch": "nomic-bert", "compatibility_type": "gguf", "quantization": "Q4_K_M", "state": "not-loaded", "max_context_length": 2048 } ], "object": "list" }Observed behavior
Because none of the returned models have
type: "llm", the filter removes everything, resulting in:This can also be confirmed in logs (macOS):
Suggested fix
A minimal fix is to include
"vlm":Alternatively, a more robust approach may be to exclude only embeddings:
This should allow LM Studio chat-capable models (including multimodal ones) to appear correctly.