Configuration Reference
Complete reference for axis.config.json and scenario files.
axis.config.json
AXIS is configured via an axis.config.json file in your project root.
{
"scenarios": "./scenarios",
"agents": [
"claude-code",
{
"adapter": "gemini",
"model": "gemini-2.5-pro",
"scenarios": ["cms/*"],
"flags": { "yolo": true }
}
],
"defaults": {
"concurrency": 4,
"scoring_weights": {
"goal_achievement": 0.4,
"environment": 0.2,
"service": 0.2,
"agent": 0.2
}
},
"env": ["ANTHROPIC_API_KEY", "GEMINI_API_KEY"],
"mcp_servers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
}
},
"skills": ["./skills/deploy"],
"adapters": {
"my-agent": "./adapters/my-agent.ts"
}
} Top-Level Fields
| Field | Type | Description |
|---|---|---|
scenarios | string | Path to the scenarios directory (required). |
agents | (string | AgentConfig)[] | Adapter names or full agent configurations (required). |
defaults | object | Default concurrency and scoring weights. |
env | string[] | Environment variables to pass through to agent processes. |
mcp_servers | object | MCP servers available to all agents. |
skills | string[] | Skills available to all agents (local paths, GitHub shorthand, or URLs). |
adapters | object | Custom adapter module paths, keyed by adapter name. |
Agent Configuration
Agents can be specified as a simple string (adapter name) or a full configuration object.
| Field | Type | Description |
|---|---|---|
adapter | string | Adapter type (required): claude-code, codex, gemini, etc. |
model | string | Model override passed to the agent CLI. |
scenarios | string[] | Subset of scenarios to run (supports glob patterns like cms/*). |
skills | string[] | Agent-specific skills (merged with top-level skills). |
flags | object | CLI flags passed to the agent (for example, {"full-auto": true}). |
command | string | Custom CLI command (for custom adapters). |
Scoring Weights
Override the default dimension weights under defaults.scoring_weights. Values
must sum to 1.0.
{
"defaults": {
"scoring_weights": {
"goal_achievement": 0.4,
"environment": 0.2,
"service": 0.2,
"agent": 0.2
}
}
}
MCP Servers
Configure Model Context Protocol servers that are automatically wired into each agent
environment. AXIS supports both stdio (local process) and HTTP (remote endpoint) servers.
{
"mcp_servers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"env": { "LOG_LEVEL": "info" }
},
"remote-api": {
"type": "http",
"url": "https://mcp.example.com/tools",
"headers": { "Authorization": "Bearer ${TOKEN}" }
}
}
}
Each adapter writes MCP configuration in its native format before spawning the agent.
- Claude Code:
.mcp.json in workspace root. - Codex:
config.toml in CODEX_HOME. - Gemini:
settings.json in GEMINI_CLI_HOME.
Skills
Skills extend agent capabilities with reusable instruction sets. Specify them at the top level
(shared), per agent, or per scenario.
{
"skills": [
"./skills/deploy",
"netlify/axis-skill-deploy",
"https://github.com/owner/repo"
]
}
- Local paths: Relative to the config file.
- GitHub shorthand:
owner/repo format. - Full URLs: GitHub repository URLs.
Remote skills are cached in .axis/skills-cache/. Use --refresh-skills
to force re-clone.
Environment Variables
The env field lists additional environment variables to pass through to agent
processes. The following are always passed through by default:
ANTHROPIC_API_KEY, CODEX_API_KEY, GEMINI_API_KEY - System essentials:
PATH, USER, SHELL, LANG, TERM, TMPDIR
Scenarios
Scenarios are JSON files in the configured scenarios directory. The filename (without .json)
becomes the scenario key. Nested directories create namespaced keys.
scenarios/hello-world.json maps to key hello-world. scenarios/cms/create-post.json maps to key cms/create-post.
Scenario Schema
{
"name": "Debug and fix a broken script",
"prompt": "There is a JavaScript file at /tmp/app/add.js that has a bug. Find it, fix it, and verify.",
"rubric": [
{ "check": "Agent identified the bug", "weight": 0.3 },
{ "check": "Agent fixed the bug", "weight": 0.4 },
{ "check": "Agent verified the fix", "weight": 0.3 }
],
"setup": [
{ "action": "run_script", "command": "mkdir -p /tmp/app" },
{ "action": "run_script", "command": "echo 'function add(a,b) { return a-b; }' > /tmp/app/add.js" }
],
"teardown": [
{ "action": "run_script", "command": "rm -rf /tmp/app" }
],
"agents": ["claude-code"]
}
Field Type Description name string Human-readable scenario title (required). prompt string Task description sent to the agent (required). rubric string | object[] Success criteria: a string or array of checks with optional weights (required). setup object[] Lifecycle actions run before the agent. teardown object[] Lifecycle actions run after scoring. agents string[] Override which agents run this scenario. skills string[] Scenario-specific skills.
Setup and Teardown
Lifecycle actions run sequentially with a 30-second timeout per action. Setup failures abort
the job. Teardown failures are logged but do not block subsequent jobs.