diff --git a/documentation/docs/getting-started/providers.md b/documentation/docs/getting-started/providers.md index 1356d0f77afb..1a7be2692fcc 100644 --- a/documentation/docs/getting-started/providers.md +++ b/documentation/docs/getting-started/providers.md @@ -42,7 +42,7 @@ goose is compatible with a wide range of LLM providers, allowing you to choose a | [Venice AI](https://venice.ai/home) | Provides access to open source models like Llama, Mistral, and Qwen while prioritizing user privacy. **Requires an account and an [API key](https://docs.venice.ai/overview/guides/generating-api-key)**. | `VENICE_API_KEY`, `VENICE_HOST` (optional), `VENICE_BASE_PATH` (optional), `VENICE_MODELS_PATH` (optional) | | [xAI](https://x.ai/) | Access to xAI's Grok models including grok-3, grok-3-mini, and grok-3-fast with 131,072 token context window. | `XAI_API_KEY`, `XAI_HOST` (optional) | -## CLI Providers +### CLI Providers goose also supports special "pass-through" providers that work with existing CLI tools, allowing you to use your subscriptions instead of paying per token: @@ -88,7 +88,7 @@ To configure your chosen provider, see available options, or select a model, vis 1. If you have a specific provider you want to use with goose, and an API key from that provider, choose `Other Providers`. - 2. Find the provider of your choice and click its `Configure` button. If you don't see your provider in the list, click `Add Custom Provider` at the bottom of the window. + 2. Find the provider of your choice and click its `Configure` button. If you don't see your provider in the list, click `Add Custom Provider` at the bottom of the window to [configure a custom provider](#configure-custom-provider). 3. Depending on your provider, you'll need to input your API Key, API Host, or other optional [parameters](#available-providers). Click the `Submit` button to authenticate and begin your first session. :::info Ollama Model Detection @@ -214,6 +214,10 @@ To configure your chosen provider, see available options, or select a model, vis This change takes effect the next time you start a session. + :::note + `goose configure` doesn't support entering custom model names. To use a model not in the provider's list, use goose Desktop or edit the `GOOSE_MODEL` variable in your [`config.yaml`](/docs/guides/config-files) directly. + ::: + :::tip Set the model for an individual session using the [`run` command](/docs/guides/goose-cli-commands#run-options): @@ -225,15 +229,19 @@ To configure your chosen provider, see available options, or select a model, vis -## Using Custom OpenAI Endpoints +### Using Custom OpenAI Endpoints -goose supports using custom OpenAI-compatible endpoints, which is particularly useful for: +The built-in OpenAI provider can connect to OpenAI's official API (`api.openai.com`) or any OpenAI-compatible endpoint, such as: - Self-hosted LLMs (e.g., LLaMA, Mistral) using vLLM or KServe - Private OpenAI-compatible API servers - Enterprise deployments requiring data governance and security compliance - OpenAI API proxies or gateways -### Configuration Parameters +:::tip Custom Provider Option +Need to connect to multiple OpenAI-compatible endpoints? [Configure custom providers](#configure-custom-provider) instead for easier switching and better organization, as well as custom naming and shareable configurations. +::: + +#### Configuration Parameters | Parameter | Required | Description | |-----------|----------|-------------| @@ -243,7 +251,7 @@ goose supports using custom OpenAI-compatible endpoints, which is particularly u | `OPENAI_PROJECT` | No | Project identifier for resource management | | `OPENAI_CUSTOM_HEADERS` | No | Additional headers to include in the request. Can be set via environment variable, configuration file, or CLI, in the format `HEADER_A=VALUE_A,HEADER_B=VALUE_B`. | -### Example Configurations +#### Example Configurations @@ -281,7 +289,7 @@ goose supports using custom OpenAI-compatible endpoints, which is particularly u -### Setup Instructions +#### Setup Instructions @@ -313,6 +321,286 @@ goose supports using custom OpenAI-compatible endpoints, which is particularly u For enterprise deployments, you can pre-configure these values using environment variables or configuration files to ensure consistent governance across your organization. ::: +## Configure Custom Provider + +Custom providers let you connect to services that aren't in the [available providers](#available-providers) list. They appear in goose's provider list and can be selected like any other provider. + +**Benefits:** +- **Multiple endpoints**: Switch between different services (e.g., vLLM, corporate proxy, OpenAI) +- **Pre-configured models**: Store a list of preferred models +- **Shareable configuration**: JSON files can be shared across teams or checked into repos +- **Custom naming**: Show "Corporate API" instead of "OpenAI" in the UI +- **Separate credentials**: Assign each provider its own API key + +Custom providers must use OpenAI, Anthropic, or Ollama compatible API formats. OpenAI-compatible providers can include custom headers for additional authentication, API keys, tokens, or tenant identifiers. Each custom provider maps to a JSON configuration file. + +**To add a custom provider:** + + + 1. Click the button in the top-left to open the sidebar + 2. Click the `Settings` button on the sidebar + 3. Click the `Models` tab + 4. Click `Configure providers` + 5. Click `Add Custom Provider` at the bottom of the window + 6. Fill in the provider details: + - **Provider Type**: + - `OpenAI Compatible` (most common) + - `Anthropic Compatible` + - `Ollama Compatible` + - **Display Name**: A friendly name for the provider + - **API URL**: The base URL of the API endpoint + - **API Key**: The API key, which is accessed using a custom environment variable and stored in the keychain (or `secrets.yaml` if the keyring is disabled) + - For `Ollama Compatible` providers, click `This is a local model (no auth required)` + - **Available Models**: Comma-separated list of available model names + - **Streaming Support**: Whether the API supports streaming responses (click to toggle) + 7. Click `Create Provider` + + :::info Custom Headers + Currently, custom headers for OpenAI compatible providers can't be defined in goose Desktop. As a workaround, configure the provider using goose CLI or edit the provider configuration file directly. + ::: + + + + 1. In your terminal, run the following command: + + ```sh + goose configure + ``` + + 2. Select `Custom Providers`. Use the arrow keys (↑/↓) to move through the options. + + ```sh + ┌ goose-configure + │ + ◆ What would you like to configure? + │ ○ Configure Providers + // highlight-start + │ ● Custom Providers (Add custom provider with compatible API) + // highlight-end + │ ○ Add Extension + │ ○ Toggle Extensions + │ ○ Remove Extension + │ ○ goose Settings + └ + ``` + + 3. Select `Add A Custom Provider` + + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Custom Providers + │ + ◆ What would you like to do? + // highlight-start + │ ● Add A Custom Provider (Add a new OpenAI/Anthropic/Ollama compatible Provider) + // highlight-end + │ ○ Remove Custom Provider + └ + ``` + + 4. Follow the prompts to enter the provider details: + - **API Type**: + - `OpenAI Compatible` (most common) + - `Anthropic Compatible` + - `Ollama Compatible` + - **Name**: A friendly name for the provider + - **API URL**: The base URL of the API endpoint + - **API Key**: The API key, which is accessed using a custom environment variable and stored in the keychain (or `secrets.yaml` if the keyring is disabled) + - For `Ollama Compatible` providers, press `Enter` to skip (or enter any value to be able to use the provider in goose Desktop) + - **Available Models**: Comma-separated list of available model names + - **Streaming Support**: Whether the API supports streaming responses + - **Custom Headers**: Required header names and values (`OpenAI Compatible` providers only) + + + + + First create a JSON file in the `custom_providers` directory: + - macOS/Linux: `~/.config/goose/custom_providers/` + - Windows: `%APPDATA%\Block\goose\config\custom_providers\` + + Example `custom_corp_api.json` configuration file: + ```json + { + "name": "custom_corp_api", + "engine": "openai", + "display_name": "Corporate API", + "description": "Custom Corporate API provider", + "api_key_env": "CUSTOM_CORP_API_API_KEY", + "base_url": "https://api.company.com/v1/chat/completions", + "models": [ + { + "name": "gpt-4o", + "context_limit": 128000 + }, + { + "name": "gpt-3.5-turbo", + "context_limit": 16385 + } + ], + "headers": { + "x-origin-client-id": "YOUR_CLIENT_ID", + "x-origin-secret": "YOUR_SECRET_VALUE" + }, + "supports_streaming": true + } + ``` + + Then use the `api_key_env` to set the key for your session. For example: + ```bash + export CUSTOM_CORP_API_API_KEY="your-api-key" + goose session start --provider custom_corp_api + ``` + + :::tip Keychain Key Storage + If you want to store the API key in the `goose` keychain, update the provider in goose Desktop and enter the key. This provides secure, persistent storage and allows goose to connect natively to the provider. + ::: + + + + +**To update a custom provider:** + + + + 1. Click the button in the top-left to open the sidebar + 2. Click the `Settings` button on the sidebar + 3. Click the `Models` tab + 4. Click `Configure providers` + 5. Click on your custom provider in the list + 6. Update the fields you want to change +
**Important:** Verify that `Provider Type` shows the correct value before saving. Otherwise, it may default to `OpenAI Compatible` regardless of the original setting. + 7. Click `Update Provider` + +
+ + + 1. In your terminal, run the following command: + + ```sh + goose configure + ``` + + 2. Select `Configure Providers` from the menu and press `Enter`. + + ```sh + ┌ goose-configure + │ + ◆ What would you like to configure? + // highlight-start + │ ● Configure Providers (Change provider or update credentials) + // highlight-end + │ ○ Custom Providers + │ ○ Add Extension + │ ○ Toggle Extensions + │ ○ Remove Extension + │ ○ goose Settings + └ + ``` + + 3. Select the custom provider you want to update and press `Enter`. Use the arrow keys (↑/↓) to move through the options. + + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Configure Providers + │ + ◆ Which model provider should we use? + │ ○ Amazon Bedrock + │ ○ Amazon SageMaker TGI + │ ○ Anthropic + │ ○ Azure OpenAI + │ ○ Claude Code CLI + // highlight-start + │ ● Corporate API (Custom Corporate API provider) + // highlight-end + │ ○ Cursor Agent + │ ○ ... + └ + ``` + + 4. Follow the prompts to update the fields. + + + + + Open the custom provider configuration file in the `custom_providers` directory: + - macOS/Linux: `~/.config/goose/custom_providers/` + - Windows: `%APPDATA%\Block\goose\config\custom_providers\` + + Update the fields you want to change and save your changes. + +
+ +Your changes are available in your next goose session. + +**To remove a custom provider:** + + + + Currently you cannot remove custom providers using goose Desktop. + + + + 1. In your terminal, run the following command: + + ```sh + goose configure + ``` + + 2. Select `Custom Providers`. Use the arrow keys (↑/↓) to move through the options. + + ```sh + ┌ goose-configure + │ + ◆ What would you like to configure? + │ ○ Configure Providers + // highlight-start + │ ● Custom Providers (Add custom provider with compatible API) + // highlight-end + │ ○ Add Extension + │ ○ Toggle Extensions + │ ○ Remove Extension + │ ○ goose Settings + └ + ``` + + 3. Select `Remove Custom Provider`. + + ```sh + ┌ goose-configure + │ + ◇ What would you like to configure? + │ Custom Providers + │ + ◆ What would you like to do? + │ ○ Add A Custom Provider + // highlight-start + │ ● Remove Custom Provider (Remove an existing custom provider) + // highlight-end + └ + ``` + + 4. Select the custom provider you want to remove. + + The provider configuration file is removed from the `custom_providers` directory and the key is removed from the keychain. + + + + + :::tip + If the provider's API key is stored in the keychain, use goose CLI to remove the custom provider. This also removes the stored API key. + ::: + + Delete the custom provider configuration file in the `custom_providers` directory: + - macOS/Linux: `~/.config/goose/custom_providers/` + - Windows: `%APPDATA%\Block\goose\config\custom_providers\` + + + + ## Using goose for Free goose is a free and open source AI agent that you can start using right away, but not all supported [LLM Providers][providers] provide a free tier.