Configuration

Environment variables, YAML config files, and deployment options for ID Agents

Configuration#

ID Agents is configured through environment variables and YAML deployment files. Environment variables control global settings like database connections and API keys. YAML files define teams, agents, and their capabilities.

Environment Variables#

VariableRequiredDescription
DATABASE_URLYesPostgreSQL connection string
ANTHROPIC_API_KEYNoAnthropic API key (not needed with Claude Max -- run claude login instead)
CLAUDE_MODELNoDefault model (e.g., claude-opus-4-6)
ORCHESTRATOR_TYPENoDefault agent runtime type
ID_PROJECTNoDefault team/project name
ID_REGISTRAR_PRIVATE_KEYNoWallet private key for onchain agent registration
ID_CONTROL_API_KEYNoAPI key for the /remote endpoint
ID_AGENT_API_KEYNoDefault API key for agent authentication
PUBLIC_BASE_URLNoPublic URL base for agents (e.g., https://idbot.live)
MANAGER_PORTNoManager port (default: 4100)

Set these in a .env file at the project root or export them in your shell environment. Environment variables take precedence over config file values.

YAML Configuration#

Deploy multiple agents from a single YAML config file. Use /deploy path/to/config.yaml from the CLI.

Minimal Example#

version: "1.0"
team: my-team

agents:
  - name: coder
    description: "Writes and reviews code"
  - name: researcher
    description: "Research and analysis"

Full Example#

version: "1.0"
team: production-team

parameters:
  - name: model_tier
    default: sonnet

onchain:
  chainId: 11155111
  registryAddress: "0x1234567890abcdef1234567890abcdef12345678"
  registrarAddress: "0xabcdef1234567890abcdef1234567890abcdef12"
  register: false

defaults:
  runtime: claude-code
  model: claude-haiku-4-5-20251001
  requireAuth: true
  plugins:
    - name: id-rest-ap
      path: plugins/id-rest-ap

agents:
  - name: lead
    model: claude-${model_tier}-4-20250514
    systemPrompt: |
      You are the lead developer.
      Coordinate work and review code from other agents.
    register: true

  - name: dev-frontend
    systemPrompt: "You specialize in React and TypeScript."

  - name: dev-backend
    systemPrompt: "You specialize in Node.js and databases."

  - name: public-assistant
    requireAuth: false
    systemPrompt: "You are a helpful public assistant."

Top-Level Fields#

version#

Required. Configuration format version. Currently "1.0".

team#

Team or namespace for the deployment. Defaults to default.

parameters#

Define substitution variables using ${name} syntax throughout the config:

parameters:
  - name: environment
    default: development
  - name: model_tier
    default: haiku

team: project-${environment}

agents:
  - name: worker-${environment}
    model: claude-${model_tier}-4-5-20251001

Each parameter accepts name (required), default, and description fields.

onchain#

Configuration for onchain agent registration:

FieldRequiredDescription
chainIdYesEVM chain ID (e.g., 11155111 for Sepolia)
registryAddressYesAgent registry contract address
registrarAddressNoRegistrar contract address
registerNoDefault registration setting for all agents

defaults#

Default settings applied to all agents unless overridden at the agent level:

FieldTypeDescription
runtimeStringDefault runtime (claude-code)
modelStringDefault LLM model
requireAuthBooleanRequire API key authentication
pluginsArrayDefault plugins for Claude Code agents
skillsArrayDefault skills
allowedToolsArrayDefault tool restrictions

Agent Configuration#

Each agent in the agents array supports these fields:

FieldRequiredDefaultDescription
nameYes--Agent name (unique within team)
descriptionNo--Human-readable description
modelNoFrom defaultsLLM model to use
runtimeNoFrom defaultsAgent runtime
systemPromptNo--Custom system prompt
apiKeyNo--Static API key (legacy)
requireAuthNoFrom defaultsRequire client authentication
pluginsNoFrom defaultsPlugins for Claude Code agents
skillsNoFrom defaultsSkills
allowedToolsNoFrom defaultsRestrict available tools
envNo{}Environment variables for the process
registerNoFrom onchainRegister agent onchain
domainNo--ENS domain (preserved across redeploys)
tokenIdNo--Namehash of the ENS domain
workingDirectoryNo--Working directory for the agent

Agent Authentication#

Set requireAuth: true to require clients to authenticate with manager-issued API keys:

# Issue a client key
curl -X POST http://localhost:4100/keys/issue \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ID_CONTROL_API_KEY" \
  -d '{"name": "my-client", "scopes": ["talk"]}'

# Use the key
curl http://localhost:4101/talk \
  -H "X-API-Key: sk-id-xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"message": "hello"}'

Public endpoints (/health, /.well-known/restap.json) are always accessible without authentication.

Static API Key (Legacy)#

For simpler deployments, set a static apiKey directly on an agent. This does not support key rotation or revocation.

Runtime#

ID Agents runs on Claude Code, which provides full tool access and session support via both the Claude Agent SDK and Claude Code CLI.

Plugins#

Plugins are copied to the agent's working directory at spawn time:

plugins:
  - name: id-rest-ap
    path: plugins/id-rest-ap

Environment Variable References#

Use ${env:VAR_NAME} syntax to reference environment variables in config files, keeping secrets out of YAML:

defaults:
  apiKey: ${env:ID_AGENT_API_KEY}

Config File Locations#

ID Agents looks for configuration files in this order:

  1. Path specified via CLI: /deploy path/to/config.yaml
  2. Team config: configs/<team-name>.yaml
  3. Default config: configs/default.yaml