Skip to content

.vally.yaml Configuration

The .vally.yaml file defines project-level configuration for eval discovery, named environments, and eval suites. Place it at your project root.

paths:
evals: evals/

Configures where to find skills, evals, and results.

FieldTypeDefaultDescription
skillsstring or string[]["skills/"]Directories containing SKILL.md files
evalsstring or string[]["evals/"]Directories to scan for eval files
resultsstring"results/"Directory for output results
evalFilenamesstring or string[]["eval.yaml", "eval.yml"]Filename patterns for eval discovery (supports globs)
paths:
evals: [evals/, tests/evals/]
evalFilenames: ["eval.yaml", "eval.yml", "*.eval.yaml"]

Named groups of evals for running specific subsets. Each suite must have at least one of filter or evals.

Select stimuli by tags across all discovered evals:

suites:
fast:
description: "P0 tests for inner loop"
filter:
priority: p0

Filter semantics: AND across keys, OR within values.

Scope to specific eval files by path or glob:

suites:
safety:
description: "All safety evals"
evals:
- "evals/safety/**/*.eval.yaml"
- "evals/shared/baseline.eval.yaml"

Scope by file path, then filter by tags:

suites:
safety-p0:
evals: ["evals/safety/**/*.eval.yaml"]
filter: { priority: p0 }

File scoping narrows which eval files are loaded. Tag filtering narrows which stimuli within those files run.

Named environments for reuse across eval specs.

environments:
auth-workspace:
skills:
- skills/auth
files:
- src: fixtures/users.json
dest: test-data/users.json
commands:
- npm install

Reference in eval specs by name:

environment: auth-workspace
stimuli:
- name: login-test
prompt: "Test the login flow"

Environment Fields

environment:
skills:
- ./path/to/SKILL.md
files:
- src: fixtures/input.txt
dest: input.txt
- src: fixtures/test-data # directories are copied recursively
dest: test-data
commands:
- npm install
git:
type: worktree
ref: v2.1.0
source: ../my-repo
mcpServers:
db:
type: stdio
command: db-serve
args: ["--port", "5432"]
api:
type: http
url: http://localhost:3000/mcp
FieldTypeDescription
commandsstring[]Shell commands to run during setup
files{src, dest}[]Files or directories to copy into the workspace before execution
gitobjectGit worktree configuration for fixture data (see below)
mcpServersRecord<string, McpServerConfig>Named MCP servers to start or connect to
skillsstring[]Paths to SKILL.md files to load

Git config

The git field sets up a Git worktree as the evaluation workspace, checking out a specific commit, tag, or branch from a local repository.

environment:
git:
type: worktree
ref: v2.1.0
source: ../my-repo
commands:
- dotnet restore
FieldTypeRequiredDescription
type"worktree"YesMust be "worktree"
refstringYesA commit-ish value (tag, commit SHA, or branch name) to check out
sourcestringYesPath to the local repo used as the worktree source

MCP server config

Each entry in mcpServers is either a stdio server (launched as a child process) or a remote server (connected over HTTP/SSE).

Stdio (child process)

mcpServers:
db:
type: stdio
command: db-serve
args: ["--port", "5432"]
env:
DB_HOST: localhost
cwd: ./services/db
timeout: 5000
FieldTypeRequiredDescription
type"stdio"YesLaunch as a child process
commandstringYesExecutable to run
argsstring[]NoArguments passed to the command
envRecord<string, string>NoExtra environment variables for the child process
cwdstringNoWorking directory for the child process
timeoutnumberNoTimeout in milliseconds for connecting to / invoking the server

Remote (HTTP/SSE)

mcpServers:
api:
type: http # or "sse"
url: http://localhost:3000/mcp
headers:
Authorization: "Bearer ${API_TOKEN}"
timeout: 10000
FieldTypeRequiredDescription
type"http" | "sse"YesConnect to a remote server
urlstringYesServer endpoint URL
headersRecord<string, string>NoExtra HTTP headers (e.g. auth tokens)
timeoutnumberNoTimeout in milliseconds for connecting to / invoking the server
paths:
skills: [skills/]
evals: [evals/]
results: results/
evalFilenames: ["eval.yaml", "eval.yml", "*.eval.yaml"]
environments:
default-workspace:
skills: [skills/copilot]
commands: [npm install]
mcpServers:
db:
type: stdio
command: db-serve
args: ["--port", "5432"]
suites:
ci-gate:
description: "Fast checks for every PR"
filter:
priority: [p0, p1]
safety:
description: "All safety evals"
evals: ["evals/safety/**/*.eval.yaml"]
safety-p0:
description: "Critical safety evals only"
evals: ["evals/safety/**/*.eval.yaml"]
filter: { priority: p0 }

The JSON schema is at packages/core/src/config/vally-config.schema.json. For VS Code autocompletion, add to settings:

{
"yaml.schemas": {
"./packages/core/src/config/vally-config.schema.json": ".vally.yaml"
}
}