LLM profiles

An LLM profile is one model at one vendor: how to reach the model and what it costs. Agents name the profile in the llm command. To use another model, define another profile.

Settings

FieldTypeDefaultDescription
secretsUsedlist of stringThe secret names this profile's expressions read (sys.secret['NAME']). Worked out by the cloud when the profile is saved and sent with the profile to agent servers; anything sent in this field is ignored.
namerequiredstringThe name this profile is referred to by, in agents and in other configuration.
docstringFree-text notes about this profile, for whoever maintains the configuration.
adapterstring"openai"The adapter class that connects to this LLM. It must implement the LlmAdapter interface and be on the allowlist.
urldynamic string"https://api.openai.com"The URL of the LLM server.
headersobject of string → dynamic stringHeaders added to the request. Values are dynamic strings, as in agents.
queryParamsobject of string → dynamic stringQuery parameters. Values are dynamic strings, as in agents.
additionalParamsdynamic dictAdditional parameters to send to the LLM. They are merged with the parameters the adapter class produces and win wherever the two disagree. String values are interpreted as dynamic strings, as in agents.
modelrequiredstringThe model this profile calls. A profile represents one model of one vendor; to use another model, define another profile.
pricingModelDetailsThe model's prices per million tokens. The cost of a run is calculated from these.
maxTokensinteger5000The token ceiling for agents using this profile. An agent may ask for fewer but not more. What it counts depends on the vendor.
retriesinteger1How many times a failed request is retried.
connectionPoolNamestring"default"The connection pool used for calls to the LLM server.
maxToolsinteger10The most tools that may be sent in a single call.
toolErrorPromptstring"Tool returned an error. If changing the arguments to the tool would get past this error, change the arguments. Otherwise, if the tool can be skipped, skip it. As a last resort, provide a text error message and end the conversation."The user prompt sent to the LLM when a tool call fails.

Model prices

Prices are per million tokens. The cost report and each agent's LLM cost limit are computed from them.

FieldTypeDefaultDescription
inputTextnumber0Price per million input text tokens.
outputTextnumber0Price per million output text tokens.
inputImagenumber0Price per million input image tokens.
outputImagenumber0Price per million output image tokens.

Dynamic values

url, the values in headers, and the string values in additionalParams are dynamic strings, evaluated for every call with the same rules as an agent expression. A secret read at call time keeps the key out of the configuration: { f"Bearer {sys.secret['OPENAI_API_KEY']}" }.

Seeded profiles

A new account has eight profiles. Five reach a vendor and read the key from the agent server's environment: OpenAI (gpt5_mini, and gpt_image for image generation), Anthropic (claude_haiku) and Gemini (gemini_flash, and gemini_image for image generation). Three reach a model served on the agent server's own machine and do not need a key: ollama_qwen25, vllm_qwen25 and sglang_qwen25, for Ollama, vLLM and SGLang at their default ports. Edit the model and the prices to match your contracts.

Other vendors

A model you host with Ollama, vLLM or SGLang needs only a profile that names the ollama, vllm or sglang adapter; see LLM vendors. Any endpoint that speaks the OpenAI, Anthropic or Gemini protocol needs only a profile with the endpoint's URL. Any other endpoint needs an adapter.