OpenAI: API key and base URL
GPT models, official API. Bring your own key; nothing is billed by us.
What the harness already knows
| Provider id | openai |
| Base URL | https://api.openai.com/v1 |
| Protocol | OpenAI Responses API |
| API key | OPENAI_API_KEY |
| Model discovery | Yes — the model list is asked of the endpoint rather than shipped. |
Connecting it
The endpoint above is built in, so there is nothing to configure. Put the key in the environment and the provider appears in the model picker:
export OPENAI_API_KEY="..."Keys are issued by OpenAI — where to get one.
Models on OpenAI
The newest models OpenAI serves that can call tools, from the models.dev snapshot OHarness ships. The harness also asks the endpoint for its live list, so a model released after this snapshot still appears in the picker.
| Model id | Context / output | $/M in / cached / out | Reasoning |
|---|---|---|---|
gpt-6-astra | 1.05M / 128K | 10 / 1 / 50 | Yes |
gpt-5.6 | 1.05M / 128K | 4 / 0.4 / 20 | Yes |
gpt-5.6-luna | 1.05M / 128K | 0.2 / 0.02 / 1.2 | Yes |
gpt-5.6-sol | 1.05M / 128K | 4 / 0.4 / 20 | Yes |
gpt-5.6-terra | 1.05M / 128K | 2 / 0.2 / 12 | Yes |
gpt-realtime-2.1 | 128K / 32K | 4 / 0.4 / 24 | Yes |
gpt-5.5 | 1.05M / 128K | 5 / 0.5 / 30 | Yes |
gpt-5.5-pro | 1.05M / 128K | 30 / — / 180 | Yes |
gpt-5.4-mini | 400K / 128K | 0.75 / 0.075 / 4.5 | Yes |
gpt-5.4-nano | 400K / 128K | 0.2 / 0.02 / 1.25 | Yes |
List prices in USD per million tokens, read from models.dev on 2026-09-19. OpenAI changes its prices and models; its own pricing page is the authority. Start a session on the newest:
oharness -m openai/gpt-6-astraWorth knowing
Responses is the API OpenAI's current models are documented against, and some (the pro tiers) are served nowhere else. A proxy that only speaks chat completions needs { "providers": { "openai": { "protocol": "openai-chat" } } }.
Pointing it somewhere else
A regional host, a gateway, or a server of your own. Overrides in ~/.oharness/config.json are field level, so changing the endpoint does not mean restating the rest of the provider — this is the whole block, shown holding the default so the shape is clear:
{
"providers": {
"openai": {
"baseUrl": "https://api.openai.com/v1"
}
}
}What you get either way
The same agent loop, the same tools, the same MCP servers and the same permission rules, whichever provider is underneath — and switching between them mid-session converts nothing, because history is never stored in a vendor’s shape. What an agent harness is covers why that is the hard part, and the providers reference covers the catalogue itself.