~/.ftl/config.json set during ftl setup, overridden by per-project .ftlconfig files.
Configuration Files
Global Configuration
~/.ftl/config.json stores machine-wide defaults set by ftl setup:
~/.ftl/config.json
Global config is used as the template when you run
ftl init in a new project.Project Configuration
.ftlconfig in your project root defines per-project settings:
.ftlconfig
Configuration Precedence
Settings are merged in this order:- Default values - Built-in FTL defaults
- Global config -
~/.ftl/config.json - Project config -
.ftlconfigin project root
Full Configuration Schema
.ftlconfig
Configuration Fields
Core Settings
string
default:"claude-code"
required
Agent to run. Options:
"claude-code", "codex", "aider", "kiro"string
default:"claude-haiku-4-5-20251001"
required
LiteLLM model string for adversarial test generation
Environment Variables
array
default:"[]"
Extra environment variable names to shadow beyond what’s in
.envarray
default:"[]"
Environment variables from your host to forward into the sandbox
Setup Hook
string
Shell command run once on a fresh container only, before the agent startsThe
true at the end prevents missing files from failing the boot. On warm container reuse, this command is skipped.Snapshot Storage
string
default:"local"
Snapshot storage backend:
"local" or "s3"string
S3 bucket name. Required when
snapshot_backend is "s3"AWS Integration
string
CloudWatch log group for session traces
string
AWS Secrets Manager prefix. When set, replaces Secrets with JSON object values are expanded into individual keys. Plain-string secrets use the last path segment as the key name, uppercased.
.env as the secrets sourcestring
Bedrock Guardrail ID. When set, replaces the local lint scan with a Bedrock Guardrail that hard-blocks merge if it intervenes
string
default:"DRAFT"
Guardrail version to apply
Tester Model Configuration
Thetester field accepts any LiteLLM-supported model:
- Anthropic Direct
- AWS Bedrock
- OpenAI
- Disable Testing
Default option using Anthropic API:Requires
.ftlconfig
ANTHROPIC_API_KEY.The tester runs in parallel with the agent, so model latency doesn’t add to wall-clock time.
Setup Examples
Basic Python Project
.ftlconfig
Node.js Project
.ftlconfig
Full-Stack with AWS
.ftlconfig
Initializing Configuration
1
Run ftl init
Create This creates
.ftlconfig in your project root:.ftlconfig with values from your global config.2
Edit .ftlconfig
Customize settings for your project:
.ftlconfig
3
Commit to Git
Add
.ftlconfig to version control:AWS Quick Setup
Provision all AWS resources and update.ftlconfig in one command:
1
Reads AWS Identity
Uses STS to get your account ID and region
2
Creates S3 Bucket
Creates
ftl-<account>-<region> (idempotent)3
Creates CloudWatch Log Group
Creates
/ftl/<project-name> (idempotent)4
Creates Bedrock Guardrail
Creates
ftl-<project-name> with PII and credential blocking5
Prompts for Secrets Manager
Optional Secrets Manager prefix for secret storage
6
Updates .ftlconfig
Merges all resource IDs into your project config
Finding Configuration
FTL walks up from the current directory to find.ftlconfig, similar to how Git finds .git:
ftl commands from any subdirectory in your project.