Cortex AI IDE wordmark logo CortexAI IDE
Features Pricing Docs Blog Download Sign In
Sign In Sign Up
Cortex Connect

Bring your own provider

Point Cortex at any OpenAI-compatible endpoint, a hosted service or a server on your own machine. Add it once from your account; it appears in your IDE and nobody else's.

Your key stays on your machine Hosted, local, or your own gateway

On this page

1. What this is 2. What works 3. Add a provider 4. Add models 5. Use it in Cortex 6. CSV import 7. Column reference 8. Limits & rules 9. Share with everyone 10. Troubleshooting
comment is single-line only #}
1

What this is

If a service speaks the OpenAI chat-completions format, you can use it in Cortex without waiting for us to add support.

Register the endpoint once in your account, list the models on it, and they appear in your model picker.

The one shape Cortex sends POST
url <base_url>/chat/completions auth Bearer <your key> body OpenAI chat-completions JSON

Two things stay true throughout:

Your key never reaches our server You paste it into Cortex on your own machine, where it is stored in your OS keychain. What you save on this website is the address and the shape of the requests, never the credential.
What you create is yours alone A provider you add syncs only to your own signed-in copies of Cortex. No other user sees it unless you deliberately submit it and we publish it.
2

What works

Anything serving that request shape in OpenAI format. In practice that covers most of the market.

On your own machine
Ollama vLLM LM Studio llama.cpp LocalAI text-generation-webui

Auth style No key — there is nothing to paste.

Hosted services
Groq Together Fireworks DeepInfra Cerebras Hyperbolic OpenRouter NVIDIA NIM and most others

Auth style Bearer — paste your key in Cortex.

Your company's gateway

Works if it exposes an OpenAI-compatible route.

What does not work yet

Providers with their own wire format rather than OpenAI's:

  • Anthropic's native API
  • Google Gemini's native API
  • Bedrock and Vertex

Those need a real client in the app, which is why they ship built in. If you add one anyway, Cortex ignores it rather than breaking.

3

Add a provider

Open My Providers and choose Add provider. Four fields, in this order.

01Slug
A short id like my-ollama. It becomes part of every model id (dp/my-ollama/<model>) and names the key on your machine, so it cannot be changed later.
02Base URL

Where requests go, up to and including /v1. Cortex appends /chat/completions itself.

http://localhost:11434/v1 the Ollama default

03Auth style
Bearer for a normal API key, Custom header if the service wants something like x-api-key, or No key for a server on your own machine.
04Key prefix hintoptional
Shown in Cortex so you recognise the right key, for example gsk_.

Save, and you land on the models page for that provider.

4

Add models

A provider on its own gives Cortex nowhere to send a request. Add each model you want on My Models.

The model id is exactly what your endpoint calls it — llama3.1:8b for Ollama, llama-3.3-70b-versatile for Groq. Cortex sends that string straight through; you do not add any prefix yourself.

The rest are hints for the agent, and getting them roughly right matters:

01Context window

The budget for everything sent up: your files, history and prompt. It is the one field where both directions go wrong.

Too lowWastes capacity About right Too highRefuses mid-task

When unsure, set it low and raise it.

02Max output tokens
Caps the reply length.
03Supports tools
Leave this on unless the model rejects tool calls. The agent needs tools for almost everything beyond plain chat.
5

Use it in Cortex

Two pages in, and the work moves to the IDE. Four steps to a working model.

  1. Open Settings → Models & Providers. Your provider appears in Provider API Keys alongside the built-in ones.
  2. Paste your key and let the field lose focus to save it. A No key provider skips this.
  3. Switch the toggle on. That is what puts its models in the chat dropdown.
  4. Pick a model from the dropdown and start working.

Changes on this website reach Cortex the next time it starts.

6

CSV import

Adding twenty models by hand is nobody's idea of a good time. Both pages take a CSV, and both work the same way.

Download the template first It ships with working example rows, so the format is never a guess.
You get a preview Nothing is written until you confirm. The preview lists every row with what it would do and why.
Re-uploading updates, it does not duplicate Rows are matched on slug for providers and model_id for models, so you can export, edit in a spreadsheet, and upload again.
A bad row is skipped, not fatal It is listed with the reason; everything else still imports.

Save the file as CSV UTF-8. Other encodings are rejected with a message rather than importing mojibake.

7

Column reference

Every column both files accept. Rows carrying the green rail are the ones you cannot leave out.

Providers CSV

Required: slug and base_url. Everything else is optional.

Providers
Column Accepted values
slug 2–40 chars, lowercase letters, digits, hyphens
base_url No query string, no credentials in the URL
display_name Shown in Cortex. Defaults to the slug
description One line, up to 160 chars
auth_style bearer, header, or none
auth_header_name Only when auth_style is header
models_path Defaults to /models
key_prefix_hint Cosmetic. Shown beside the key field in Cortex
accent_color Cosmetic
signup_url Cosmetic
docs_url Cosmetic
is_active true or false

Models CSV

Required: model_id. Everything else falls back to a default.

Models
Column Accepted values
model_id Exactly what the endpoint calls it
display_name What you see in the picker
description What you see in the picker
context_window Whole number. default 128000
max_output_tokens Whole number. default 8192
supports_tools Default true
supports_vision Default false
supports_thinking Default false
is_free Shows a FREE badge. Default false
is_active Default true
sort_order Lower sorts first. default 100
8

Limits & rules

Checked when you save. A save that breaks one of these is refused with the reason, not silently dropped.

Quotas
  • 20 providers per account, 500 models per provider.
  • You cannot reuse the slug of a published provider. Model ids would be ambiguous.
URLs
  • A private provider may use plain http, but only for localhost or a LAN address. That is what makes a local Ollama work.
  • Anything public must use https.
  • No credentials, query strings or fragments in a base URL. The key belongs in Cortex, not in a URL that syncs to our server.
Requests
  • Reserved headers cannot be set through extra_headers — Authorization, Cookie, Host and similar. Cortex builds those itself.
  • extra_body cannot override model, messages, stream, tools or tool_choice. It is for extras like top_p.
9

Share with everyone

If your endpoint is public and useful to others, open it from My Providers and choose Submit for review.

  1. Step 01 You submit it You keep using it while it is being looked at.
  2. Step 02 We take an admin-owned copy Your later edits to your own never change what other people receive.
  3. The result Everyone gets it Your key is never part of this. Each person adds their own.
Cannot be published

A provider pointing at localhost or a LAN address cannot be published, since nobody else could reach it.

10

Troubleshooting

Symptoms in the order people hit them. Find yours and read the one line under it.

The provider is not in Cortex

Restart Cortex — the list is fetched at startup. If it is still missing, check the provider is switched on here, and that you are signed in to the same account in the IDE.

Its models are not in the dropdown

Three things must all be true: the provider is on, at least one of its models is on, and the toggle in Settings → Models & Providers is switched on. The toggle is the one people miss.

404“Not found for account”

The endpoint answered, so your key and URL are fine, but that model id is not available to your account. Check the exact spelling against the provider's own model list.

401 · 403Rejected

The key is wrong, expired, or lacks access. Re-paste it in Cortex.

refusedConnection refused on localhost

The local server is not running, or it is on a different port. Confirm with curl http://localhost:11434/v1/models.

Replies cut off early

max_output_tokens is too low. Raise it on the model.

Errors about context length

context_window is set higher than the model accepts. The error usually names the real limit; put that number in the field.

Cortex
Cortex AI IDE wordmark logo CortexAI IDE

The cross-platform agentic AI IDE. Bring your own API keys, your machine, your models, your rules.

Cortex AI IDE badge
Product
Features Pricing Download Security
Resources
Documentation Cortex Connect Blog Changelog How it works FAQ
Legal
Privacy Terms License (EULA) Support
© 2026 Cortex AI IDE. All rights reserved. v3.0.52  ·  Source on GitHub  ·  Cross-platform  ·  BYOK, 8 providers