Thursdays with Koog: Providers and Models Mark Murphy's Knosh coding agent maps model strings from Markdown frontmatter to Koog's LLMProvider and LLMClient objects, supporting providers including Ollama, Anthropic, Mistral, and OpenAI. The mapping is handled by a descriptors roster in Knosh's AgentConfig, which pairs provider IDs with client factories and API key configurations. Last week, I posted the inaugural "Thursdays with Koog" https://pac.commonsware.com/archive/thursdays-with-koog-the-basics/ , exploring the basics of how Knosh https://codeberg.org/commonsguy/knosh my one-shot coding agent interacts with Koog https://docs.koog.ai/ JetBrains' LLM interaction framework . In that post, I showed that: knosh prompt --agentId=general "What can you do for me?" ...causes Knosh to look up the definition of the general agent, which is encoded in Markdown: --- model: "ollama/qwen3.6:35b-a3b-coding-nvfp4" description: a general-purpose agent with full tool access --- You are a helpful assistant to an experienced software developer. But, somewhere along the line, we need to take that model and teach Koog that it represents what LLM we want to use. The left side ollama represents Koog's provider ID, while the right side qwen3.6:35b-a3b-coding-nvfp4 represents the model to use with that provider... but we need to map those strings to Koog objects. Knosh parses that Markdown into an AgentConfig https://codeberg.org/commonsguy/knosh/src/tag/0.2.0/lib/knosh-agents/src/main/kotlin/com/commonsware/knosh/agents/AgentConfig.kt , with modelProvider and modelName holding those two pieces of the model frontmatter property from the Markdown. We use the modelProvider to find our provider in a descriptors roster that is based on which Koog providers Knosh supports: private val descriptors: List