The per-provider LLM plugin settings are set in the provided AIHost/plugins/<Provider>/settings.json file. This article describes the settings.
Prerequisites
- The SWExtension.AIExtension folder is located in your Client's swExplorerExtensions directory
- Knowledge of your organization's AI keys and services.
MedusaLLM discovers and initializes plugins from disk at startup (plugins/<Provider>/settings.json). There is one folder per provider (e.g., Claude, GPT, Ollama, LMStudio).
Credentials: with
Llm:AcceptedCredentialSources = "Runtime"(the shipped default, Llm (router-level guards)), theAPIKeyfield here is ignored — keys must be injected at runtime via the AIExtension<LLMApiKeys>XML (Configuring the View). LeaveAPIKeyempty for cloud providers. Local providers (Ollama/LMStudio) typically need no key.
Top-level Fields
| Field | Example | Description |
|---|---|---|
APIKey | "" | Provider API key. Ignored under Runtime credential source — supply via<LLMApiKeys>, Configuring the View. |
Model | claude-sonnet-4-6 | Default model id for this provider. |
BaseUrl | null / http://localhost:11434 | Override endpoint. null = provider SDK default (cloud). Set for local servers. |
MaxTokens | 4096 / 8192 | Default per-request output-token cap for this provider. |
Temperature | 0.7 | Sampling temperature (where the provider supports it). |
TimeoutSeconds | 300 / 600 | HTTP timeout for provider calls. |
AllowPlaintextHttp | true (local only) | AB-362 hardening opt-out: permit http://BaseUrl. Production cloud shapes drop this and use https://. |
RequireTls | false (local only) | AB-362 hardening: require TLS for this provider. |
AllowedHosts | (optional) | AB-362 hardening: allow-list of permitted hosts for BaseUrl. |
ModelCapabilities | array | Per-model catalogue used by the router (below). |
ModelCapabilities[] Entries
Drives model selection/routing (window fit, complexity, cost, modality).
| Field | Example | Description |
|---|---|---|
ModelName | claude-sonnet-4-6 | Model id. |
Provider | Anthropic | Provider name (routing key). |
SupportedInputFormats | ["TextOnly","Image","Pdf","Docx","Mixed"] | Accepted input modalities (enum, |
SupportedOutputFormats | ["PlainText","Json","Xml","Markdown"] | Producible output formats (enum, |
MaxContextTokens | 200000 | Context-window size (drives the routing window gate, Llm (router-level guards) / ContextCompression (proactive history compression)). |
MaxOutputTokens | 64000 | Max output tokens the model supports. |
MaxComplexity | Complex | Highest task complexity the model is eligible for (enum, Allowed enumeration values). |
CostPerMillionInputTokens | 3.00 | Input cost (used for cost-aware selection). |
CostPerMillionOutputTokens | 15.00 | Output cost. |
SupportsVision | true | Image input capability. |
SupportsDocuments | true | Document (PDF/Docx) input capability. |
Priority | 10 | Tie-breaker; higher wins among otherwise-eligible models. |
SupportedUseCases | ["General","Coding"] | Use-case tags considered during routing (enum, Allowed enumeration values). |
Allowed enumeration values
The enum-typed fields accept only the values below (case-sensitive). Values are those defined in the shipped MedusaLLM assembly; Provider is not an enum — it is a free-form string matched to the plugin/provider name (e.g. Anthropic, OpenAI, Ollama, LMStudio).
| Field | Allowed values |
|---|---|
SupportedInputFormats | TextOnly, Image, Pdf, Docx, Mixed |
SupportedOutputFormats | PlainText, Json, Xml, Markdown |
MaxComplexity | Simple, Moderate, Complex, Advanced (ascending) |
SupportedUseCases | General, Coding, Architecture, Spec, Planning, Summary, RiskManagement, Math |
SupportedInputFormats,SupportedOutputFormatsandMaxComplexityare the complete enum sets.SupportedUseCaseslists the values present in the shipped MedusaLLM assembly; treat it as authoritative for routing but note that the enum itself is owned by MedusaLLM and could gain members in a future package.
Cloud — Claude
Example
{
"APIKey": "",
"Model": "claude-sonnet-4-6",
"MaxTokens": 4096,
"BaseUrl": null,
"TimeoutSeconds": 300,
"ModelCapabilities": [
{
"ModelName": "claude-sonnet-4-6",
"Provider": "Anthropic",
"SupportedInputFormats": [ "TextOnly", "Image", "Pdf", "Docx", "Mixed" ],
"SupportedOutputFormats": [ "PlainText", "Json", "Xml", "Markdown" ],
"MaxContextTokens": 1000000,
"MaxOutputTokens": 64000,
"MaxComplexity": "Complex",
"CostPerMillionInputTokens": 3.00,
"CostPerMillionOutputTokens": 15.00,
"SupportsVision": true,
"SupportsDocuments": true,
"Priority": 10,
"SupportedUseCases": [ "General", "Coding", "Architecture", "Spec", "Planning", "Summary" ]
}
]
}Local — Ollama, plaintext loopback
Example
{
"APIKey": "",
"BaseUrl": "http://localhost:11434",
"Model": "llama3.2:3b",
"Temperature": 0.7,
"MaxTokens": 8192,
"TimeoutSeconds": 600,
"AllowPlaintextHttp": true,
"RequireTls": false,
"ModelCapabilities": [ { "ModelName": "llama3.2:3b", "Provider": "Ollama", "MaxContextTokens": 128000, "MaxOutputTokens": 8192, "MaxComplexity": "Moderate", "Priority": 8, "SupportedUseCases": [ "General", "Summary" ] } ]
}What's Next?
Refer to Configuration Manual for WeaverAI to determine if any additional configuration remains to be done.