OpenAI with Empryo
OpenAI is one of Empryo's 21 built-in providers. Set one API key and Empryo's GPT-5 series models drive every part of the agent: AST-level edits through the editor, the ranked Genome graph, and per-slot routing. Reasoning effort and thinking budgets are wired in, so you control how hard each model thinks per task.
Popular models
Setup
1. Get an API key
Create a key at platform.openai.com. OpenAI keys start with sk-.
2. Save it to Empryo
empryo --set-key openai sk-...The key goes to your OS keychain when available (macOS Login Keychain, libsecret on Linux, DPAPI on Windows), with an encrypted file fallback otherwise. Confirm it landed:
empryo --list-providersOr pass it per-launch
Built-in providers also read environment variables, useful for CI or one-off sessions. Nothing is persisted:
OPENAI_API_KEY=sk-... empryoIf a shell-exported key keeps overriding a stored one, flip the lookup order in ~/.empryo/config.json:
{ "keyPriority": "app" }"app" resolves keychain → file → env; the default "env" checks env first.
3. Pick a model
Inside Empryo, press Ctrl+L and choose OpenAI, then a model. Or set it as the default in ~/.empryo/config.json:
{ "defaultModel": "openai/gpt-5.5" }From the command line:
empryo --list-models openai
empryo --model openai/gpt-5.4Model strings are always openai/<model-id>, e.g. openai/gpt-5.5, openai/gpt-5.4-mini.
4. Tune reasoning
GPT-5 series models reason. Control the depth in config:
{
"thinking": { "mode": "adaptive" }
}mode is "off", "adaptive", or "enabled". With "enabled", set an explicit thinking.budgetTokens (1024, 2048, 5000, 10000, 20000). "adaptive" lets Empryo scale effort to the task.
5. Route models per task (optional)
You don't have to run one model for everything. The task router assigns models per job, so a cheap model handles search and cleanup while a strong one writes code:
{
"taskRouter": {
"ember": "openai/gpt-5.5",
"spark": "openai/gpt-5.4-mini",
"webSearch": "openai/gpt-5.4-nano",
"compact": "openai/gpt-5.4-mini"
}
}ember runs code-writing agents, spark runs read-only research agents, webSearch runs the search agent, and compact handles context compaction. Anything unset falls back to taskRouter.default, then your active model.