Skip to content
AI

Custom Providers

Custom Providers let you connect any compatible provider to Raycast and bring your own models. The models you define appear in the model picker alongside Raycast AI models, ready to use across AI features. This is the most flexible way to bring outside models into Raycast, covering aggregators, cross-vendor gateways, and self-hosted proxies alike.

Quick AI in Raycast answering with Claude Fable 5.1, with the model picker open showing models from a custom Vercel AI Gateway providerQuick AI in Raycast answering with Claude Fable 5.1, with the model picker open showing models from a custom Vercel AI Gateway provider

Requests to your custom models are routed directly from your device to the provider's servers, without passing through Raycast. Your API keys stay in the file on your device, and you pay the provider's standard rates for messages.

Tools such as web search are opt-in through the tools block in your config. Only tools set to raycast run on Raycast's servers, which requires Raycast Pro. Image generation isn't available for custom provider models.

  1. Open Settings → AI → Models & Providers and scroll down to the Custom Providers section.
  2. Click Reveal Providers Config. Raycast opens the config folder and places a providers.template.yaml file inside it, documenting the file format.
  3. Copy the template to a file named providers.yaml in the same folder, then edit it with your providers and models. The template's tools block enables all four tools through raycast, so remove the block if you don't want your models to use them.
  4. Save the file. Raycast watches it for changes, so your providers and their model counts appear in the Custom Providers section right away, with no restart needed.
The Custom Providers section in Raycast's AI settings, listing Vercel AI Gateway, OpenClaw, LM Studio, and LiteLLM with their model countsThe Custom Providers section in Raycast's AI settings, listing Vercel AI Gateway, OpenClaw, LM Studio, and LiteLLM with their model counts

The file lives at ~/.config/raycast/ai/providers.yaml inside your user folder on both macOS and Windows.

If Raycast can't read your file, an Invalid providers.yaml badge appears next to Providers Config in Settings. Hover over the badge to see exactly what went wrong. Your previously loaded models keep working while you fix the file.

Each entry in the providers list needs an id, a name, an OpenAI API compatible base_url, and a list of models. Here's a trimmed example connecting a provider with one model:

providers:
  - id: my_provider
    name: My Provider
    base_url: https://api.example.com/v1
    api_keys:
      my_provider: YOUR_API_KEY
    models:
      - id: my-model-id
        name: My Model
        provider: my_provider
        description: A short description shown in Raycast
        context: 200000
        abilities:
          temperature:
            supported: true
          vision:
            supported: true
          system_message:
            supported: true
          tools:
            supported: true
          reasoning_effort:
            supported: false
FieldRequiredDescription
idYesUnique identifier for the provider entry
nameYesProvider name shown in Raycast
base_urlYesOpenAI API compatible endpoint, without the /chat/completions suffix
api_keysNoMap of key aliases to API keys, omit for providers that don't require authentication
additional_parametersNoExtra fields added to every /chat/completions request
include_user_emailNoSet to true to send your signed-in Raycast email as an X-User-Email header, useful for per-user attribution on a shared gateway
modelsYesList of models to register, providers without any valid models are skipped
FieldRequiredDescription
idYesModel identifier, must match the id the provider's API expects
nameYesModel name shown in Raycast
providerNoSelects which alias in api_keys to use, defaults to the first key
descriptionNoShort description shown in Raycast
contextNoContext window size in tokens, refer to the provider's documentation
abilitiesNoCapability flags for the model, see below

Each ability is optional and takes a supported: true or supported: false value. When omitted, Raycast assumes system messages and temperature are supported, and tool use and vision are not. Declaring an ability the model doesn't actually support can make requests fail.

AbilityEnables
temperatureSending a temperature value with requests
visionImage attachments in prompts
system_messageSending a system message
toolsTool use, required for AI Extensions and tools
reasoning_effortReasoning effort control for reasoning models

The providers.template.yaml file installed next to your config documents the same format with complete annotated examples.

The OpenAI API is not a formal standard, so we can't guarantee that every provider works correctly with Raycast AI. Refer to your provider's API documentation for model identifiers and capabilities.

Custom provider models can use Raycast's tools, such as web search and reading web pages, when your providers.yaml has a top-level tools block. Tools are opt-in: without the block, custom provider models get no tools at all. A model only uses tools if it declares abilities.tools.supported: true, and the block applies to every model in the file, with no per-provider or per-model overrides.

ToolWhat it doesSupported providers
web_searchSearches the web, with source cards and citationsraycast, custom, tavily, exa, firecrawl, brave, perplexity
read_pageReads a web page you or the model provideraycast, custom, tavily, exa, firecrawl, jina
search_imagesFinds imagesraycast
chartRenders chartsraycast

Image generation isn't available for custom provider models.

The tools block doesn't affect OpenRouter models added through Bring Your Own Key, which keep using OpenRouter's :online web search. Installed AI Extensions such as Exa Search or Perplexity also keep working with any tool-capable model, independent of the block.

Entry Format

Each tool takes either a provider name or an object with the provider and its settings. Leaving a tool out or setting it to false turns it off.

tools:
  web_search: raycast            # shorthand
  read_page:                     # object form
    provider: tavily
    api_key: TAVILY_KEY
  chart: false                   # off, same as leaving it out
FieldApplies toDescription
providerAllRequired. The service that runs the tool
api_keyVendors, customPlain-text key. Required for tavily, exa, firecrawl, brave, and perplexity. Optional for jina, where anonymous use is rate limited, and for custom
base_urlVendorsReplaces the vendor's API address, for example to route through a proxy in front of the vendor
urlcustomRequired. Your gateway endpoint, called exactly as written
headersVendors, customExtra request headers, with string values only. They're applied after the vendor's auth header, so they can replace it
include_user_emailVendors, customSet to true to send your signed-in Raycast email as an X-User-Email header. Off unless set to exactly true
max_resultsweb_searchMaximum number of results returned to the model. Defaults to 10, between 1 and 20

To use one service for both web tools, share the entry with a YAML anchor:

tools:
  web_search: &tavily
    provider: tavily
    api_key: TAVILY_KEY
  read_page: *tavily
ProviderWhere requests goAuthenticationDefault address
raycastRaycast's servers, requires Raycast Pro and no extra keyYour Raycast account–
customYour own gateway, see Custom GatewayAuthorization: Bearer <api_key> if seturl
tavilyTavily /search and /extractAuthorization: Bearerhttps://api.tavily.com
exaExa /search and /contentsx-api-keyhttps://api.exa.ai
firecrawlFirecrawl /search and /scrapeAuthorization: Bearerhttps://api.firecrawl.dev/v2
braveBrave /web/search, search onlyX-Subscription-Tokenhttps://api.search.brave.com/res/v1
perplexityPerplexity Search API /search, search onlyAuthorization: Bearerhttps://api.perplexity.ai
jinaJina Reader, read page onlyAuthorization: Bearer if sethttps://r.jina.ai

Every provider except raycast is called directly from your device, through the system proxy if one is configured, so these requests never touch Raycast's servers. When a provider fails, the tool fails, and Raycast never falls back to another provider. The model sees the provider's error message, for example Tavily returned 401: Invalid API key. Your keys never appear in error messages.

Set a tool's provider to custom to run it on your own gateway. The gateway contract is a subset of Tavily's search and extract APIs, so a gateway that simply forwards to Tavily works as is. Raycast sends POST requests with a JSON body to the url you configure:

tools:
  web_search:
    provider: custom
    url: https://ai.example.com/web/search
    api_key: GATEWAY_KEY
    headers:
      X-Team: platform
    include_user_email: true
  read_page:
    provider: custom
    url: https://ai.example.com/web/extract
    api_key: GATEWAY_KEY

Any response status other than 2xx counts as a failure. The error, error.message, message, or detail field of the response body is shown to the model.

  • Search requests time out after 30 seconds, and each snippet is capped at 2,000 characters.
  • Page reads time out after 60 seconds, and page content is capped at 200 KB, marked with [Content truncated] when cut.
  • read_page only accepts http and https URLs.

An invalid entry turns off only that tool, while your models and all other tools keep working. Common causes are a missing api_key, a provider that doesn't support the tool, a missing or non-http url for custom, and an unknown tool name.

Cross-vendor gateways such as Vercel AI Gateway or Cloudflare AI Gateway put models from every major lab behind a single endpoint and a single key, with usage tracking and spend controls in one dashboard:

providers:
- id: vercel_ai_gateway
name: Vercel AI Gateway
base_url: https://ai-gateway.vercel.sh/v1
api_keys:
  vercel: VERCEL_AI_GATEWAY_KEY
models:
  - id: anthropic/claude-fable-5.1
    name: "Claude Fable 5.1"
    context: 1000000
    abilities:
      temperature:
        supported: true
      vision:
        supported: true
      system_message:
        supported: true
      tools:
        supported: true
      reasoning_effort:
        supported: true

Custom provider models show up in the model picker grouped under the provider's name you set in the file. Pick them anywhere you'd pick a Raycast AI model, including Quick AI, AI Chat, and AI Commands. Since Raycast has no benchmark data for custom models, they don't show speed or intelligence scores in the model settings.

If you only want models from OpenRouter, adding an OpenRouter API key via Bring Your Own Key unlocks its full catalog automatically. If you run local models with Ollama, Raycast supports this natively with Local Models and detects your models automatically for you.