Sinatra Docs
Configuration

Models

How the agent gets a model, the credentials Sinatra supports, and the models you can pick.

The agent's intelligence comes from the LLM behind it. Sinatra is the orchestration layer; you choose which model runs and how it is paid for.

Two ways to provide a model

Bring your own key. Paste an Anthropic or OpenRouter API key, or connect a Codex / ChatGPT subscription for OpenAI models. You pay your provider directly, and your free task allowance is higher (see billing).

Use Sinatra's managed key. Let Sinatra route the model on its own keys. Managed usage is metered at the provider's exact cost with no markup, drawn from a prepaid balance. The free tier runs on Sinatra's Codex subscription.

You can connect more than one. The agent picks a default from whatever you have connected, and you can override it per repo in .sinatrarc.

Credentials

CredentialHow you connect itReaches
AnthropicPaste an API keyClaude models, directly
OpenRouterPaste an API keyClaude models routed through OpenRouter
Codex / ChatGPTConnect via OAuthOpenAI models
ManagedNothing to connectSinatra routes on its own keys

There is no pasted-key option for OpenAI. OpenAI models run through a connected Codex / ChatGPT subscription.

Pasted keys are encrypted per workspace with envelope encryption, and the encryption is bound to the workspace, so a key stored in one workspace cannot be decrypted in another.

Engines

An engine is the agent harness that runs inside the sandbox. The engine decides how model names are written.

  • claude-code (default) uses short Anthropic names like opus.
  • opencode uses full provider/model slugs like anthropic/claude-opus-4-8 and is how you reach OpenRouter, OpenAI, and other providers.
  • oh-my-pi uses the same style of provider-qualified slugs. Codex models are openai-codex/* (not opencode's openai/*).

The engine is fixed for the life of a workstream, and a model must belong to the engine you picked. Set both in .sinatrarc.

Supported models

claude-code engine (Anthropic key)

agent.modelEffort levels
sonnetlow, medium, high, max
opuslow, medium, high, xhigh, max
opus-4-8low, medium, high, xhigh, max
opus-5low, medium, high, xhigh, max
fable-5low, medium, high, xhigh, max
fable-5-1low, medium, high, xhigh, max
haikunone

opencode engine (full slugs)

agent.modelCredentialEffort levels
anthropic/claude-sonnet-4-6Anthropiclow, medium, high, max
anthropic/claude-opus-4-7Anthropiclow, medium, high, xhigh, max
anthropic/claude-opus-4-8Anthropiclow, medium, high, xhigh, max
anthropic/claude-opus-5Anthropiclow, medium, high, xhigh, max
anthropic/claude-fable-5Anthropiclow, medium, high, xhigh, max
anthropic/claude-fable-5-1Anthropiclow, medium, high, xhigh, max
anthropic/claude-haiku-4-5Anthropicnone
openrouter/anthropic/claude-opus-4.8OpenRouterlow, medium, high
openrouter/anthropic/claude-opus-5OpenRouterlow, medium, high, xhigh, max
openrouter/anthropic/claude-fable-5OpenRouterlow, medium, high, xhigh, max
openrouter/anthropic/claude-fable-5.1OpenRouterlow, medium, high, xhigh, max
openai/gpt-5.4Codexlow, medium, high, xhigh
openai/gpt-5.4-miniCodexlow, medium, high, xhigh
openai/gpt-5.5Codexlow, medium, high, xhigh

oh-my-pi engine (full slugs)

agent.modelCredentialEffort levels
anthropic/claude-sonnet-4-6Anthropiclow, medium, high
anthropic/claude-opus-4-7Anthropiclow, medium, high, xhigh
anthropic/claude-opus-4-8Anthropiclow, medium, high, xhigh
anthropic/claude-opus-5Anthropiclow, medium, high, xhigh, max
anthropic/claude-fable-5Anthropiclow, medium, high, xhigh, max
anthropic/claude-fable-5-1Anthropiclow, medium, high, xhigh, max
openrouter/anthropic/claude-opus-4.8OpenRouterlow, medium, high
openrouter/anthropic/claude-opus-5OpenRouterlow, medium, high, xhigh, max
openrouter/anthropic/claude-fable-5OpenRouterlow, medium, high, xhigh, max
openrouter/anthropic/claude-fable-5.1OpenRouterlow, medium, high, xhigh, max
openai-codex/gpt-5.4Codexlow, medium, high, xhigh
openai-codex/gpt-5.4-miniCodexlow, medium, high, xhigh
openai-codex/gpt-5.5Codexlow, medium, high, xhigh
openai-codex/gpt-5.6-solCodexlow, medium, high, xhigh, max
openai-codex/gpt-5.6-terraCodexlow, medium, high, xhigh, max
openai-codex/gpt-5.6-lunaCodexlow, medium, high, xhigh, max

Default model

If you do not set agent.model in .sinatrarc, Sinatra picks one from your connected credentials:

  • A connected Codex subscription uses openai/gpt-5.5 on the opencode engine, and wins even when a raw API key is also connected.
  • A single Anthropic key uses opus on claude-code.
  • A single OpenRouter key uses openrouter/anthropic/claude-opus-4.8 on opencode.
  • With several keys connected, Sinatra picks the alphabetically first connected provider that has a usable default.

The managed free tier runs on openai-codex/gpt-5.6-terra through Sinatra's Codex subscription with high effort.

Effort

agent.effort controls how hard the model thinks, from low to max. Not every model supports every level, so Sinatra clamps your choice down to the closest level the model actually honors instead of erroring. Models with no effort levels (such as haiku) ignore the setting. The exact range per model is in the tables above.