Skip to content

Arena Config File

The arena config file (conventionally config.arena.yaml) is a YAML file that lives inside an ArenaProject bundle. It ties together the prompts, scenarios, providers, tools, and evaluation settings that a run uses. An ArenaJob selects it with spec.arenaFile (default config.arena.yaml; one file, glob patterns are rejected), and the arena worker loads it from the bundle when each of the job’s ArenaRuns executes.

The file uses a lightweight PromptKit envelope. Everything below lives under spec:.

apiVersion: promptkit.altairalabs.ai/v1alpha1
kind: Arena
metadata:
name: customer-support-eval
spec:
# ... fields documented below

Most sections reference sibling files inside the bundle, relative to the config file’s directory, rather than inlining content.

Prompt configurations available to scenarios, referenced by file.

FieldTypeRequiredDescription
idstringYesPrompt identifier referenced by scenarios
filestringYesPath to the prompt YAML within the bundle
spec:
prompt_configs:
- id: assistant
file: prompts/assistant.yaml

The provider entries used by scenarios. Each entry references a provider YAML file and, optionally, assigns the provider to a group.

FieldTypeRequiredDescription
filestringYesPath to the provider YAML within the bundle
groupstringNoProvider group name (e.g. default, judge)
spec:
providers:
- file: providers/gpt4.provider.yaml
group: default
- file: providers/claude-opus.provider.yaml
group: judge

Scenario files to run, each referenced by file.

FieldTypeRequiredDescription
filestringYesPath to the scenario YAML within the bundle
spec:
scenarios:
- file: scenarios/billing.scenario.yaml
- file: scenarios/support.scenario.yaml

Named judge (evaluator) targets. Each judge inherits its model from the referenced provider ID.

FieldTypeRequiredDescription
namestringYesJudge identifier used in assertions
providerstringYesProvider ID reference (must exist in spec.providers)
spec:
judges:
- name: quality-judge
provider: claude-opus

Additional evaluation definitions and tool definitions, each referenced by file.

spec:
evals:
- file: evals/quality.eval.yaml
tools:
- file: tools/search.tool.yaml

Model Context Protocol (MCP) servers to expose to the model during a run. An entry sets command for stdio, url for HTTP, or source for a host-provisioned endpoint. Nothing enforces that only one of these is set. If both command and url are present, the server resolves the transport by precedence instead of rejecting the entry: an explicit transport value first, then url (as sse), then command (as stdio).

FieldTypeDescription
namestringServer identifier
command / args / envstring / []string / mapstdio transport (local subprocess)
url / headersstring / mapHTTP transport
transportstringstdio, sse, or streamable_http
tool_filterobjectallowlist / blocklist of tool names
spec:
mcp_servers:
- name: filesystem
command: mcp-server-filesystem
args: ["--root", "/data"]

Configure self-play (agent-vs-simulated-user) evaluation. Self-play is enabled whenever this section is present.

FieldTypeDescription
personas[]objectPersona files, each { file: <path> }
roles[]objectRole-to-provider mapping, each { id: <role>, provider: <provider-id> }
spec:
self_play:
personas:
- file: personas/frustrated-customer.yaml
roles:
- id: user
provider: gpt4

Default execution settings applied to every scenario unless it overrides them.

FieldTypeDefaultDescription
temperaturenumber-Sampling temperature
max_tokensinteger-Maximum output tokens
seedinteger-Deterministic sampling seed
concurrencyinteger-Parallel runs
run_timeoutstring“5m”Per-run timeout (e.g. "30s")
fail_on[]string-Conditions that mark the run failed
outputobject-Output directory and formats
spec:
defaults:
temperature: 0.5
max_tokens: 500
seed: 42
run_timeout: 2m
output:
dir: out
formats:
- json

Cross-cutting settings applied additively to every scenario.

FieldTypeDescription
conversation_assertions[]objectAssertions appended to every scenario’s own conversation assertions

A minimal bundle layout:

my-bundle/
├── config.arena.yaml
├── prompts/
│ └── assistant.yaml
├── providers/
│ └── gpt4.provider.yaml
└── scenarios/
├── billing.scenario.yaml
└── support.scenario.yaml

config.arena.yaml:

apiVersion: promptkit.altairalabs.ai/v1alpha1
kind: Arena
metadata:
name: customer-support-eval
spec:
prompt_configs:
- id: assistant
file: prompts/assistant.yaml
providers:
- file: providers/gpt4.provider.yaml
group: default
scenarios:
- file: scenarios/billing.scenario.yaml
- file: scenarios/support.scenario.yaml
defaults:
temperature: 0.5
max_tokens: 500
run_timeout: 2m
output:
dir: out
formats:
- json

Leave the providers list empty when the ArenaJob supplies providers from Provider/AgentRuntime CRDs instead:

spec:
# Providers supplied by ArenaJob.spec.providers (resolved from CRDs)
providers: []
scenarios:
- file: scenarios/billing.scenario.yaml

An ArenaJob references the bundle via sourceRef and selects this file via arenaFile:

apiVersion: omnia.altairalabs.ai/v1alpha1
kind: ArenaJob
metadata:
name: eval-001
namespace: arena
spec:
sourceRef:
name: customer-support-source
arenaFile: config.arena.yaml
providers:
default:
- providerRef:
name: gpt4-prod
judge:
- providerRef:
name: claude-opus

See Arena Fleet: Run Your First Evaluation for the workflow steps.

The config file feeds a chain of resources from the bundle to the run’s results:

flowchart LR
config[config.arena.yaml] --> project[ArenaProject]
project --> job[ArenaJob]
job --> run[ArenaRun]
run --> workers[Workers]
workers --> results[Results]
  • ArenaProject — the bundle source that contains this config file.
  • ArenaJob — executes a run using this config file (spec.arenaFile).
  • Provider — LLM provider configuration.
  • ToolRegistry — tool definitions.