Configuration Reference

Complete reference for axis.config.json.

Full Example

AXIS is configured via an axis.config.json file in your project root. Here is an example showing all available fields:

{
  "scenarios": "./scenarios",
  "agents": [
    "claude-code",
    {
      "adapter": "gemini",
      "model": "gemini-2.5-pro",
      "scenarios": ["cms/*"],
      "flags": { "yolo": true }
    }
  ],
  "settings": {
    "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 Required Description
scenarios string Yes Path to the scenarios directory.
agents (string | AgentConfig)[] Yes Agent names or full agent configurations.
settings object No Concurrency and scoring weight overrides.
env string[] No Additional environment variables to pass through to agent processes.
mcp_servers object No MCP servers available to all agents.
skills string[] No Skills available to all agents.
adapters object No Custom agent module paths, keyed by agent name.

Agent Configuration

Each entry in the agents array can be a simple string (agent name with defaults) or a full configuration object.

Field Type Required Description
adapter string Yes Agent name: claude-code, codex, gemini, goose, etc.
model string No Model override passed to the agent CLI.
scenarios string[] No Subset of scenarios to run. Supports glob patterns like cms/*.
skills string[] No Agent-specific skills (merged with top-level skills).
flags object No CLI flags passed to the agent, e.g. {"full-auto": true}.
command string No Custom CLI command (for custom agents).

Scoring Weights

Override the default dimension weights under settings.scoring_weights. Values must sum to 1.0. See Scoring Framework for what each dimension measures.

Field Type Required Description
goal_achievement number No Goal Achievement weight. Default: 0.4.
environment number No Environment weight. Default: 0.2.
service number No Service weight. Default: 0.2.
agent number No Agent weight. Default: 0.2.
{
  "settings": {
    "scoring_weights": {
      "goal_achievement": 0.5,
      "environment": 0.2,
      "service": 0.2,
      "agent": 0.1
    }
  }
}

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.

Field Type Required Description
type "stdio" | "http" Yes Server transport type.
command string Yes Command to start the server process (stdio only).
args string[] No Arguments passed to the command.
env object No Environment variables for the server process.
url string Yes Remote server endpoint URL (http only).
headers object No HTTP headers (supports ${VAR} env interpolation).
{
  "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 agent writes MCP configuration in its native format before spawning:

Agent Config File Location
claude-code .mcp.json Workspace root
codex config.toml CODEX_HOME
gemini settings.json GEMINI_CLI_HOME

Skills

Skills extend agent capabilities with reusable instruction sets. Specify them at the top level (shared across all agents), per agent, or per scenario.

Format Example Description
Local path ./skills/deploy Relative to the config file.
GitHub shorthand netlify/axis-skill-deploy owner/repo format, cloned automatically.
Full URL https://github.com/owner/repo GitHub repository URL, cloned automatically.
{
  "skills": [
    "./skills/deploy",
    "netlify/axis-skill-deploy",
    "https://github.com/owner/repo"
  ]
}

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:

Category Variables
API keys ANTHROPIC_API_KEY, CODEX_API_KEY, GEMINI_API_KEY
System PATH, USER, SHELL, LANG, TERM, TMPDIR
{
  "env": ["MY_CUSTOM_TOKEN", "DATABASE_URL"]
}

Scenarios

Scenarios are JSON files in the configured scenarios directory. The filename (without .json) becomes the scenario key. Nested directories create namespaced keys -for example, scenarios/cms/create-post.json maps to key cms/create-post.

Scenarios can define variants to run the same task under different configurations (skills, MCP servers, prompts, etc.) without duplicating files. Each variant produces a separate job with a key like create-post@variant-name.

See Writing Scenarios for the complete scenario schema, rubric design guidance, and example scenarios.