Docs for using Docker Model Runner as a local LLM provider. (#3509)

Signed-off-by: Oleg Šelajev <shelajev@gmail.com>
Co-authored-by: angiejones <jones.angie@gmail.com>
This commit is contained in:
Oleg Šelajev
2025-07-27 08:56:19 +03:00
committed by GitHub
parent 071ac3cf3d
commit 7239ec5ad2
+315 -233
View File
@@ -25,12 +25,13 @@ Goose relies heavily on tool calling capabilities and currently works best with
| [Anthropic](https://www.anthropic.com/) | Offers Claude, an advanced AI model for natural language tasks. | `ANTHROPIC_API_KEY`, `ANTHROPIC_HOST` (optional) |
| [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) | Access Azure-hosted OpenAI models, including GPT-4 and GPT-3.5. Supports both API key and Azure credential chain authentication. | `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_DEPLOYMENT_NAME`, `AZURE_OPENAI_API_KEY` (optional) |
| [Databricks](https://www.databricks.com/) | Unified data analytics and AI platform for building and deploying models. | `DATABRICKS_HOST`, `DATABRICKS_TOKEN` |
| [Docker Model Runner](https://docs.docker.com/ai/model-runner/) | Local models running in Docker Desktop or Docker CE with OpenAI-compatible API endpoints. **Because this provider runs locally, you must first [download a model](#local-llms).** | `OPENAI_HOST`, `OPENAI_BASE_PATH` |
| [Gemini](https://ai.google.dev/gemini-api/docs) | Advanced LLMs by Google with multimodal capabilities (text, images). | `GOOGLE_API_KEY` |
| [GCP Vertex AI](https://cloud.google.com/vertex-ai) | Google Cloud's Vertex AI platform, supporting Gemini and Claude models. **Credentials must be [configured in advance](https://cloud.google.com/vertex-ai/docs/authentication).** | `GCP_PROJECT_ID`, `GCP_LOCATION` and optionally `GCP_MAX_RATE_LIMIT_RETRIES` (5), `GCP_MAX_OVERLOADED_RETRIES` (5), `GCP_INITIAL_RETRY_INTERVAL_MS` (5000), `GCP_BACKOFF_MULTIPLIER` (2.0), `GCP_MAX_RETRY_INTERVAL_MS` (320_000). |
| [GitHub Copilot](https://docs.github.com/en/copilot/using-github-copilot/ai-models) | Access to GitHub Copilot's chat models including gpt-4o, o1, o3-mini, and Claude models. Uses device code authentication flow for secure access. | Uses GitHub device code authentication flow (no API key needed) |
| [Groq](https://groq.com/) | High-performance inference hardware and tools for LLMs. | `GROQ_API_KEY` |
| [Ollama](https://ollama.com/) | Local model runner supporting Qwen, Llama, DeepSeek, and other open-source models. **Because this provider runs locally, you must first [download and run a model](/docs/getting-started/providers#local-llms).** | `OLLAMA_HOST` |
| [Ramalama](https://ramalama.ai/) | Local model using native [OCI](https://opencontainers.org/) container runtimes, [CNCF](https://www.cncf.io/) tools, and supporting models as OCI artifacts. Ramalama API an compatible alternative to Ollama and can be used with the Goose Ollama provider. Supports Qwen, Llama, DeepSeek, and other open-source models. **Because this provider runs locally, you must first [download and run a model](/docs/getting-started/providers#local-llms).** | `OLLAMA_HOST` |
| [Ollama](https://ollama.com/) | Local model runner supporting Qwen, Llama, DeepSeek, and other open-source models. **Because this provider runs locally, you must first [download and run a model](#local-llms).** | `OLLAMA_HOST` |
| [Ramalama](https://ramalama.ai/) | Local model using native [OCI](https://opencontainers.org/) container runtimes, [CNCF](https://www.cncf.io/) tools, and supporting models as OCI artifacts. Ramalama API an compatible alternative to Ollama and can be used with the Goose Ollama provider. Supports Qwen, Llama, DeepSeek, and other open-source models. **Because this provider runs locally, you must first [download and run a model](#local-llms).** | `OLLAMA_HOST` |
| [OpenAI](https://platform.openai.com/api-keys) | Provides gpt-4o, o1, and other advanced language models. Also supports OpenAI-compatible endpoints (e.g., self-hosted LLaMA, vLLM, KServe). **o1-mini and o1-preview are not supported because Goose uses tool calling.** | `OPENAI_API_KEY`, `OPENAI_HOST` (optional), `OPENAI_ORGANIZATION` (optional), `OPENAI_PROJECT` (optional), `OPENAI_CUSTOM_HEADERS` (optional) |
| [OpenRouter](https://openrouter.ai/) | API gateway for unified access to various models with features like rate-limiting management. | `OPENROUTER_API_KEY` |
| [Snowflake](https://docs.snowflake.com/user-guide/snowflake-cortex/aisql#choosing-a-model) | Access the latest models using Snowflake Cortex services, including Claude models. **Requires a Snowflake account and programmatic access token (PAT)**. | `SNOWFLAKE_HOST`, `SNOWFLAKE_TOKEN` |
@@ -298,241 +299,321 @@ To set up Google Gemini with Goose, follow these steps:
### Local LLMs
Ollama and Ramalama are both options to provide local LLMs, each which requires a bit more set up before you can use one of them with Goose.
#### Ollama
1. [Download Ollama](https://ollama.com/download).
2. Run any [model supporting tool-calling](https://ollama.com/search?c=tools):
Goose is a local AI agent, and by using a local LLM, you keep your data private, maintain full control over your environment, and can work entirely offline without relying on cloud access. However, please note that local LLMs require a bit more set up before you can use one of them with Goose.
:::warning Limited Support for models without tool calling
Goose extensively uses tool calling, so models without it can only do chat completion. If using models without tool calling, all Goose [extensions must be disabled](/docs/getting-started/using-extensions#enablingdisabling-extensions).
:::
Example:
Here are some local providers we support:
```sh
ollama run qwen2.5
```
<Tabs groupId="local-llms">
<TabItem value="ollama" label="Ollama" default>
<Tabs groupId="ollama-models">
<TabItem value="ramalala" label="Ramalala">
1. [Download Ramalama](https://github.com/containers/ramalama?tab=readme-ov-file#install).
2. In a terminal, run any Ollama [model supporting tool-calling](https://ollama.com/search?c=tools) or [GGUF format HuggingFace Model](https://huggingface.co/search/full-text?q=%22tools+support%22+%2B+%22gguf%22&type=model):
3. In a separate terminal window, configure with Goose:
The `--runtime-args="--jinja"` flag is required for Ramalama to work with the Goose Ollama provider.
```sh
goose configure
```
Example:
4. Choose to `Configure Providers`
```sh
ramalama serve --runtime-args="--jinja" ollama://qwen2.5
```
```
┌ goose-configure
◆ What would you like to configure?
│ ● Configure Providers (Change provider or update credentials)
│ ○ Toggle Extensions
│ ○ Add Extension
```
3. In a separate terminal window, configure with Goose:
5. Choose `Ollama` as the model provider
```sh
goose configure
```
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◆ Which model provider should we use?
│ ○ Anthropic
│ ○ Databricks
│ ○ Google Gemini
│ ○ Groq
│ ● Ollama (Local open source models)
│ ○ OpenAI
│ ○ OpenRouter
```
4. Choose to `Configure Providers`
5. Enter the host where your model is running
```
┌ goose-configure
◆ What would you like to configure?
│ ● Configure Providers (Change provider or update credentials)
│ ○ Toggle Extensions
│ ○ Add Extension
```
:::info Endpoint
For Ollama, if you don't provide a host, we set it to `localhost:11434`.
When constructing the URL, we prepend `http://` if the scheme is not `http` or `https`.
If you're running Ollama on a different server, you'll have to set `OLLAMA_HOST=http://{host}:{port}`.
:::
5. Choose `Ollama` as the model provider since Ramalama is API compatible and can use the Goose Ollama provider
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
Which model provider should we use?
│ Ollama
◆ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
```
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
Which model provider should we use?
│ ○ Anthropic
│ ○ Databricks
│ ○ Google Gemini
│ ○ Groq
│ ● Ollama (Local open source models)
│ ○ OpenAI
│ ○ OpenRouter
```
6. Enter the host where your model is running
:::info Endpoint
For the Ollama provider, if you don't provide a host, we set it to `localhost:11434`. When constructing the URL, we preprend `http://` if the scheme is not `http` or `https`. Since Ramalama's default port to serve on is 8080, we set `OLLAMA_HOST=http://0.0.0.0:8080`
:::
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◆ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://0.0.0.0:8080
```
6. Enter the model you have running
7. Enter the model you have running
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◇ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
◇ Enter a model from that provider:
│ qwen2.5
◇ Welcome! You're all set to explore and utilize my capabilities. Let's get started on solving your problems together!
└ Configuration saved successfully
```
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◇ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://0.0.0.0:8080
◇ Enter a model from that provider:
│ qwen2.5
◇ Welcome! You're all set to explore and utilize my capabilities. Let's get started on solving your problems together!
└ Configuration saved successfully
```
:::tip Context Length
If you notice that Goose is having trouble using extensions or is ignoring [.goosehints](/docs/guides/using-goosehints), it is likely that the model's default context length of 4096 tokens is too low. Set the `OLLAMA_CONTEXT_LENGTH` environment variable to a [higher value](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-specify-the-context-window-size).
:::
:::tip Context Length
If you notice that Goose is having trouble using extensions or is ignoring [.goosehints](/docs/guides/using-goosehints), it is likely that the model's default context length of 2048 tokens is too low. Use `ramalama serve` to set the `--ctx-size, -c` option to a [higher value](https://github.com/containers/ramalama/blob/main/docs/ramalama-serve.1.md#--ctx-size--c).
:::
#### Ramalama
</TabItem>
<TabItem value="deepseek" label="DeepSeek-R1">
The native `DeepSeek-r1` model doesn't support tool calling, however, we have a [custom model](https://ollama.com/michaelneale/deepseek-r1-goose) you can use with Goose.
1. [Download Ramalama](https://github.com/containers/ramalama?tab=readme-ov-file#install).
2. Run any Ollama [model supporting tool-calling](https://ollama.com/search?c=tools) or [GGUF format HuggingFace Model](https://huggingface.co/search/full-text?q=%22tools+support%22+%2B+%22gguf%22&type=model) :
:::warning Limited Support for models without tool calling
Goose extensively uses tool calling, so models without it can only do chat completion. If using models without tool calling, all Goose [extensions must be disabled](/docs/getting-started/using-extensions#enablingdisabling-extensions).
:::
Example:
```sh
# NOTE: the --runtime-args="--jinja" flag is required for Ramalama to work with the Goose Ollama provider.
ramalama serve --runtime-args="--jinja" --ctx-size=8192 ollama://qwen2.5
```
3. In a separate terminal window, configure with Goose:
```sh
goose configure
```
4. Choose to `Configure Providers`
```
┌ goose-configure
◆ What would you like to configure?
│ ● Configure Providers (Change provider or update credentials)
│ ○ Toggle Extensions
│ ○ Add Extension
```
5. Choose `Ollama` as the model provider since Ramalama is API compatible and can use the Goose Ollama provider
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◆ Which model provider should we use?
│ ○ Anthropic
│ ○ Databricks
│ ○ Google Gemini
│ ○ Groq
│ ● Ollama (Local open source models)
│ ○ OpenAI
│ ○ OpenRouter
```
5. Enter the host where your model is running
:::info Endpoint
For the Ollama provider, if you don't provide a host, we set it to `localhost:11434`. When constructing the URL, we preprend `http://` if the scheme is not `http` or `https`. Since Ramalama's default port to serve on is 8080, we set `OLLAMA_HOST=http://0.0.0.0:8080`
:::
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◆ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://0.0.0.0:8080
```
:::warning
Note that this is a 70B model size and requires a powerful device to run smoothly.
:::
6. Enter the model you have running
1. [Download Ollama](https://ollama.com/download).
2. In a terminal window, run the following command to install the custom DeepSeek-r1 model:
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◇ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://0.0.0.0:8080
◇ Enter a model from that provider:
│ qwen2.5
◇ Welcome! You're all set to explore and utilize my capabilities. Let's get started on solving your problems together!
└ Configuration saved successfully
```
```sh
ollama run michaelneale/deepseek-r1-goose
```
:::tip Context Length
If you notice that Goose is having trouble using extensions or is ignoring [.goosehints](/docs/guides/using-goosehints), it is likely that the model's default context length of 2048 tokens is too low. Use `ramalama serve` to set the `--ctx-size, -c` option to a [higher value](https://github.com/containers/ramalama/blob/main/docs/ramalama-serve.1.md#--ctx-size--c).
:::
3. In a separate terminal window, configure with Goose:
```sh
goose configure
```
4. Choose to `Configure Providers`
```
┌ goose-configure
◆ What would you like to configure?
│ ● Configure Providers (Change provider or update credentials)
│ ○ Toggle Extensions
│ ○ Add Extension
```
5. Choose `Ollama` as the model provider
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◆ Which model provider should we use?
│ ○ Anthropic
│ ○ Databricks
│ ○ Google Gemini
│ ○ Groq
│ ● Ollama (Local open source models)
│ ○ OpenAI
│ ○ OpenRouter
```
6. Enter the host where your model is running
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◆ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
```
7. Enter the installed model from above
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◇ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
◇ Enter a model from that provider:
│ michaelneale/deepseek-r1-goose
◇ Welcome! You're all set to explore and utilize my capabilities. Let's get started on solving your problems together!
└ Configuration saved successfully
```
</TabItem>
<TabItem value="others" label="Other Models" default>
1. [Download Ollama](https://ollama.com/download).
2. In a terminal, run any [model supporting tool-calling](https://ollama.com/search?c=tools)
Example:
```sh
ollama run qwen2.5
```
3. In a separate terminal window, configure with Goose:
```sh
goose configure
```
4. Choose to `Configure Providers`
```
┌ goose-configure
◆ What would you like to configure?
│ ● Configure Providers (Change provider or update credentials)
│ ○ Toggle Extensions
│ ○ Add Extension
```
5. Choose `Ollama` as the model provider
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◆ Which model provider should we use?
│ ○ Anthropic
│ ○ Databricks
│ ○ Google Gemini
│ ○ Groq
│ ● Ollama (Local open source models)
│ ○ OpenAI
│ ○ OpenRouter
```
6. Enter the host where your model is running
:::info Endpoint
For Ollama, if you don't provide a host, we set it to `localhost:11434`.
When constructing the URL, we prepend `http://` if the scheme is not `http` or `https`.
If you're running Ollama on a different server, you'll have to set `OLLAMA_HOST=http://{host}:{port}`.
:::
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◆ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
```
### DeepSeek-R1
7. Enter the model you have running
Ollama provides open source LLMs, such as `DeepSeek-r1`, that you can install and run locally.
Note that the native `DeepSeek-r1` model doesn't support tool calling, however, we have a [custom model](https://ollama.com/michaelneale/deepseek-r1-goose) you can use with Goose.
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◇ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
◇ Enter a model from that provider:
│ qwen2.5
◇ Welcome! You're all set to explore and utilize my capabilities. Let's get started on solving your problems together!
└ Configuration saved successfully
```
:::warning
Note that this is a 70B model size and requires a powerful device to run smoothly.
:::
1. Download and install Ollama from [ollama.com](https://ollama.com/download).
2. In a terminal window, run the following command to install the custom DeepSeek-r1 model:
```sh
ollama run michaelneale/deepseek-r1-goose
```
<Tabs groupId="interface">
<TabItem value="ui" label="Goose Desktop" default>
3. Click the <PanelLeft className="inline" size={16} /> button in the top-left to open the sidebar.
4. Click `Settings` -> `Models` -> `Configure Providers` -> and select `Ollama` from the list.
5. Enter `michaelneale/deepseek-r1-goose` for the model name.
:::tip Context Length
If you notice that Goose is having trouble using extensions or is ignoring [.goosehints](/docs/guides/using-goosehints), it is likely that the model's default context length of 4096 tokens is too low. Set the `OLLAMA_CONTEXT_LENGTH` environment variable to a [higher value](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-specify-the-context-window-size).
:::
</TabItem>
</Tabs>
</TabItem>
<TabItem value="cli" label="Goose CLI">
3. In a separate terminal window, configure with Goose:
<TabItem value="docker" label="Docker Model Runner" default>
1. [Get Docker](https://docs.docker.com/get-started/get-docker/)
2. [Enable Docker Model Runner](https://docs.docker.com/ai/model-runner/#enable-dmr-in-docker-desktop)
3. [Pull a model](https://docs.docker.com/ai/model-runner/#pull-a-model), for example, from Docker Hub [AI namespace](https://hub.docker.com/u/ai), [Unsloth](https://hub.docker.com/u/unsloth), or [from HuggingFace](https://www.docker.com/blog/docker-model-runner-on-hugging-face/)
Example:
```sh
docker model pull hf.co/unsloth/gemma-3n-e4b-it-gguf:q6_k
```
4. Configure Goose to use Docker Model Runner, using the OpenAI API compatible endpoint:
```sh
goose configure
```
4. Choose to `Configure Providers`
5. Choose to `Configure Providers`
```
┌ goose-configure
@@ -544,65 +625,66 @@ ollama run michaelneale/deepseek-r1-goose
```
5. Choose `Ollama` as the model provider
6. Choose `OpenAI` as the model provider:
```
┌ goose-configure
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
│ Configure Providers
◆ Which model provider should we use?
│ ○ Anthropic
│ ○ Databricks
│ ○ Google Gemini
○ Groq
Ollama (Local open source models)
│ ○ OpenAI
│ ○ OpenRouter
│ ○ Anthropic
│ ○ Amazon Bedrock
│ ○ Claude Code
● OpenAI (GPT-4 and other OpenAI models, including OpenAI compatible ones)
OpenRouter
```
5. Enter the host where your model is running
7. Configure Docker Model Runner endpoint as the `OPENAI_HOST`:
```
┌ goose-configure
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
│ OpenAI
◆ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
◆ Provider OpenAI requires OPENAI_HOST, please enter a value
│ https://api.openai.com (default)
```
6. Enter the installed model from above
The default value for the host-side port Docker Model Runner is 12434, so the `OPENAI_HOST` value could be:
`http://localhost:12434`.
8. Configure the base path:
```
◆ Provider OpenAI requires OPENAI_BASE_PATH, please enter a value
│ v1/chat/completions (default)
```
Docker model runner uses `/engines/llama.cpp/v1/chat/completions` for the base path.
9. Finally configure the model available in Docker Model Runner to be used by Goose: `hf.co/unsloth/gemma-3n-e4b-it-gguf:q6_k`
```
┌ goose-configure
◇ What would you like to configure?
│ Configure Providers
◇ Which model provider should we use?
│ Ollama
◇ Provider Ollama requires OLLAMA_HOST, please enter a value
│ http://localhost:11434
◇ Enter a model from that provider:
michaelneale/deepseek-r1-goose
◇ Welcome! You're all set to explore and utilize my capabilities. Let's get started on solving your problems together!
gpt-4o
◒ Checking your configuration...
└ Configuration saved successfully
```
</TabItem>
</Tabs>
## Azure OpenAI Credential Chain
Goose supports two authentication methods for Azure OpenAI: