Skip to main content
Route Pullfrog’s model calls through your own Azure OpenAI resource. Inference bills to your Azure subscription, so Azure credits and commitments apply.
Azure OpenAI is bring-your-own-key only. Pullfrog never proxies Azure traffic.

Setup

1

Store the five values

In the Pullfrog console, click Set up on the Azure OpenAI tile of the Providers card and fill in the five values from the table below. Pullfrog injects them into every run, so pullfrog.yml needs no changes.
The Configure Azure OpenAI dialog with its five fields
To keep them in the workflow instead, put AZURE_API_KEY in a GitHub Actions secret and the rest in the env: block of .github/workflows/pullfrog.yml:
2

Pick the model

On the Model card, choose Manual and pick Azure OpenAI from the model menu.

Variables

The first five are required. The two limits must be positive numbers, so 128k is rejected. A value set in the workflow wins over a stored one.
On an account that pays through Pullfrog Router, store the values in the Pullfrog console. Pullfrog decides how to fund a run before the runner starts, when GitHub Actions secrets are not visible to it, so a run whose key exists only there falls back to the Router’s default model.

Token limits

A deployment name carries no model metadata, so Pullfrog cannot look up the limits and needs you to declare them. Undeclared limits would break two things:
  • Completions are capped at 32000 tokens, and a model with a smaller cap rejects every request.
  • Auto-compaction turns off. Compaction keys off the context limit, so a long session grows until Azure refuses it.
Set AZURE_CONTEXT to the real window of the deployed model. A low value compacts earlier than needed; a high value delays compaction until Azure refuses the request.

Reasoning effort

The effort setting does not apply to Azure runs. A deployment name does not identify a model, so Pullfrog sends no effort level and the model’s own default applies.

Deployment name

Azure routes on the deployment name, not the model name. Set AZURE_DEPLOYMENT to the name given to the deployment, which defaults to the model’s name but is often changed:
  • Deployed gpt-5 and kept the default name: AZURE_DEPLOYMENT: gpt-5
  • Renamed the deployment prod-reasoning: AZURE_DEPLOYMENT: prod-reasoning
Find the name under Deployments in Microsoft Foundry, or under Model deployments on the resource in the Azure portal. Any OpenAI model the resource has deployed works. Non-OpenAI models on Azure, such as Anthropic, DeepSeek, Llama, Mistral and Phi, are Foundry Models served from a different endpoint, which this integration cannot reach. Point OpenAI-compatible endpoints at the Foundry inference URL for those.

Routing

Pullfrog sends requests to the resource’s Responses endpoint, /openai/v1/responses, through OpenCode’s azure provider. GPT-5-family models speak it as deployed. Older deployments such as gpt-4 and gpt-35-turbo speak only Chat Completions; set AZURE_USE_CHAT_COMPLETIONS: "true" for them. Pullfrog sends a static key and cannot refresh a Microsoft Entra ID token during a run. If your organization forbids resource keys, put a gateway that does the token exchange in front of the resource, and point OpenAI-compatible endpoints at the gateway.

Troubleshooting