Skip to main content
Pullfrog model names are rolling aliases — like a latest tag on npm. “Claude Opus” resolves to a concrete version at runtime (anthropic/claude-opus-5), and when a new generation ships we bump it. Your configuration doesn’t change.

Selecting a model

Pick one under Agent > Model in the console. The API key row names the secret that model needs; store it in the console or in your workflow env: — see BYOK. Set an org-wide default from the org console, which every repo inherits until it picks its own.
Model selector in the Pullfrog console
Reasoning effort sits next to the model and offers exactly the levels that model publishes. Per run, use the --effort flag.
Models marked Free need no API key at all. See free models.
On Pullfrog Router without a card on file, runs use DeepSeek Flash and the other models are locked, so a trial balance can’t be spent on a premium model. Adding a card unlocks them. Free models and any model you hold a Pullfrog-stored key for are exempt. BYOK is never gated.

Pullfrog for OSS

Repos in Pullfrog for OSS have their model costs covered by us, so the picker offers the set we fund: Anything outside this set falls back to the default, and the PR footer says so — unless you’ve stored that provider’s key with Pullfrog, in which case the run uses your key and your pick. A key that lives only in GitHub Actions secrets doesn’t opt you out, because the server can’t see it when it decides. Same rule for a per-run --model flag.

Model resolution

When a run starts, Pullfrog picks a model in this order:
  1. model action input — your workflow file, or the console. The recommended way.
  2. Auto-select — Pullfrog asks OpenCode which models your keys can reach and takes the best curated match, preferring each provider’s top tier.
  3. Provider default — OpenCode’s own pick, if nothing matched.
Specifiers use the models.dev format (anthropic/claude-opus-5); Pullfrog’s aliases map onto them. The model also decides which agent runs it: an Anthropic model with Anthropic credentials runs on Claude Code, and everything else runs on OpenCode. Organizations opted in to the experimental Codex CLI agent run OpenAI models on Codex instead, when a Codex subscription or an OPENAI_API_KEY is present. Runs billed through Pullfrog Router or the OSS program always use OpenCode.

Supported providers

Custom providers

The table above is what the console has a card for. It is not the limit of what runs. Pullfrog runs models through OpenCode, which carries the whole models.dev catalog. Any provider there — Groq, Mistral, Cerebras, Together, Fireworks — switches on the moment its API key is in the run’s environment. Nothing to enable, nothing to wait on us for.
This is BYOK. Set Model access to BYOK on the Billing card first — on Router billing the server hands the run a Router credential before it starts, and a key that lives only in GitHub Actions secrets is invisible to the server, so it can’t know to step aside.
1. Add the key as a GitHub Actions secret, under the exact name that provider’s models.dev page declares. 2. Map it in, and name the model. The specifier must be one models.dev lists — the run checks it against the provider’s catalog before starting. Non-secret settings some providers want (a region, an endpoint) go straight in env:.
3. Set the console model to Custom. A model stored in the console beats the workflow’s model input, so pick Custom (set in workflow) — or Inherit from org if your org has a default. The job log confirms it took:
Use OpenAI-compatible endpoints instead when your provider isn’t in the catalog, when you front several behind one gateway, or when you need a model ID the catalog doesn’t carry.

Routers

OpenRouter and OpenCode Zen are providers like any other, with their own aliases (OpenRouter’s “Claude Opus” → openrouter/~anthropic/claude-opus-latest). To pin an exact version instead of the rolling alias, set the model input to the full specifier: