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)), the APIKey field here is ignored — keys must be injected at runtime via the AIExtension <LLMApiKeys> XML (Configuring the View). Leave APIKey empty for cloud providers. Local providers (Ollama/LMStudio) typically need no key.

Top-level Fields

FieldExampleDescription
APIKey""Provider API key. Ignored under Runtime credential source — supply via<LLMApiKeys>, Configuring the View.
Modelclaude-sonnet-4-6Default model id for this provider.
BaseUrlnull / http://localhost:11434Override endpoint. null = provider SDK default (cloud). Set for local servers.
MaxTokens4096 / 8192Default per-request output-token cap for this provider.
Temperature0.7Sampling temperature (where the provider supports it).
TimeoutSeconds300 / 600HTTP timeout for provider calls.
AllowPlaintextHttptrue (local only)AB-362 hardening opt-out: permit http://BaseUrl. Production cloud shapes drop this and use https://.
RequireTlsfalse (local only)AB-362 hardening: require TLS for this provider.
AllowedHosts(optional)AB-362 hardening: allow-list of permitted hosts for BaseUrl.
ModelCapabilitiesarrayPer-model catalogue used by the router (below).

ModelCapabilities[] Entries

Drives model selection/routing (window fit, complexity, cost, modality).

FieldExampleDescription
ModelNameclaude-sonnet-4-6Model id.
ProviderAnthropicProvider name (routing key).
SupportedInputFormats["TextOnly","Image","Pdf","Docx","Mixed"]Accepted input modalities (enum,

Allowed enumeration values).

SupportedOutputFormats["PlainText","Json","Xml","Markdown"]Producible output formats (enum,

Allowed enumeration values).

MaxContextTokens200000Context-window size (drives the routing window gate, Llm (router-level guards)  / ContextCompression (proactive history compression)).
MaxOutputTokens64000Max output tokens the model supports.
MaxComplexityComplexHighest task complexity the model is eligible for (enum, Allowed enumeration values).
CostPerMillionInputTokens3.00Input cost (used for cost-aware selection).
CostPerMillionOutputTokens15.00Output cost.
SupportsVisiontrueImage input capability.
SupportsDocumentstrueDocument (PDF/Docx) input capability.
Priority10Tie-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).

FieldAllowed values
SupportedInputFormatsTextOnly, Image, Pdf, Docx, Mixed
SupportedOutputFormatsPlainText, Json, Xml, Markdown
MaxComplexitySimple, Moderate, Complex, Advanced (ascending)
SupportedUseCasesGeneral, Coding, Architecture, Spec, Planning, Summary, RiskManagement, Math

SupportedInputFormats, SupportedOutputFormats and MaxComplexity are the complete enum sets. SupportedUseCases lists 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.