Providers
ACL provider configuration and environment injection
Providers
A3S Code reads runtime configuration from ACL. A config source can be a path to an .acl file or an inline ACL string. JSON and legacy HCL configs are intentionally not supported.
Basic Shape
default_model = "provider/model-id"
max_parallel_tasks = 8
auto_parallel = false
providers "provider" {
apiKey = env("PROVIDER_API_KEY")
baseUrl = env("PROVIDER_BASE_URL")
models "model-id" {
name = "Human readable model name"
tool_call = true
}
}
storage_backend = "file"apiKey and api_key are accepted aliases. baseUrl and base_url are accepted aliases. Prefer environment variables for secrets and commit only templates or non-secret defaults.
Delegation Controls
agent_dirs = ["./.a3s/agents"]
auto_delegation {
enabled = true
auto_parallel = false
min_confidence = 0.72
max_tasks = 4
}max_parallel_tasks limits bounded sibling fan-out. auto_delegation.enabled
turns on automatic subagent delegation. The top-level auto_parallel = false
overrides auto_delegation.auto_parallel and disables only automatic parallel
child-agent fan-out; manual parallel_task remains available.
Anthropic
default_model = "anthropic/claude-sonnet-4-20250514"
providers "anthropic" {
apiKey = env("ANTHROPIC_API_KEY")
}OpenAI-Compatible
Any service compatible with OpenAI Chat Completions can be configured through the openai provider:
default_model = "openai/gpt-4o"
providers "openai" {
apiKey = env("A3S_OPENAI_API_KEY")
baseUrl = env("A3S_OPENAI_BASE_URL")
}For MiniMax, use the same provider block:
default_model = "openai/MiniMax-M2.7-highspeed"
providers "openai" {
apiKey = env("A3S_OPENAI_API_KEY")
baseUrl = env("A3S_OPENAI_BASE_URL")
models "MiniMax-M2.7-highspeed" {
name = "MiniMax M2.7 Highspeed"
tool_call = true
}
}Test scripts map MINIMAX_API_KEY and MINIMAX_BASE_URL to A3S_OPENAI_API_KEY and A3S_OPENAI_BASE_URL when the latter are not set.
Storage
storage_backend = "memory"
storage_backend = "file"
storage_url = ".a3s/sessions"Use memory storage for short-lived tests. Use file storage with storage_url
for resumable local sessions.
Private Provider Check
Use a temporary environment-injected ACL when validating a private provider. The release scripts are designed to avoid mutating the real .a3s/config.acl: they extract provider values, write a temporary ACL that uses env(...), and inject those values into the process environment.
Use this pattern for private provider checks:
A3S_CONFIG_FILE=/path/to/.a3s/config.acl \
A3S_OPENAI_API_KEY="$A3S_OPENAI_API_KEY" \
A3S_OPENAI_BASE_URL="$A3S_OPENAI_BASE_URL" \
scripts/real_config_env_integration.shSDK parity is covered by a separate real-provider check:
A3S_CONFIG_FILE=/path/to/.a3s/config.acl \
scripts/sdk_real_config_env_integration.shKeep the resulting provider evidence with the release. For the complete local API surface, see API Contract.