Configuration Reference
All configuration keys for ctrl-exec.conf, agent.conf, and the ENVEXEC_ hook interface.
/etc/ctrl-exec/ctrl-exec.conf
| Key | Default | Description |
|---|---|---|
port |
7443 |
mTLS port agents connect to |
cert |
— | Path to the ctrl-exec TLS certificate |
key |
— | Path to the ctrl-exec private key |
ca |
— | Path to the CA certificate |
auth_hook |
— | Path to the auth hook executable. Optional. |
api_port |
7445 |
HTTP port for ctrl-exec-api |
api_cert |
— | TLS certificate for the API server. Enables TLS when set. |
api_key |
— | TLS private key for the API server |
api_bind |
127.0.0.1 |
Address the API server binds to |
api_auth_default |
deny |
API behaviour when no hook is configured: deny or allow |
cert_days |
365 |
Lifetime in days for new and renewed agent certificates |
cert_renewal_days |
90 |
Begin cert renewal when this many days of validity remain |
cert_overlap_days |
30 |
Days to retry serial broadcast before marking an agent stale |
cert_check_interval |
14400 |
Seconds between internal cert expiry checks (4 hours) |
read_timeout |
60 |
Seconds to wait for a response from an agent |
pairing_port |
7444 |
Port for the pairing listener |
pairing_max_queue |
10 |
Maximum pending pairing requests held at once |
registry_dir |
/var/lib/ctrl-exec/agents/ |
Agent registry directory |
/etc/ctrl-exec-agent/agent.conf
| Key | Default | Description |
|---|---|---|
port |
7443 |
Port the agent listens on |
cert |
— | Path to the agent TLS certificate |
key |
— | Path to the agent private key |
ca |
— | Path to the CA certificate (for verifying ctrl-exec connections) |
auth_hook |
— | Path to the agent-side auth hook executable. Optional. |
script_dirs |
— | Colon-separated list of approved script directories. If set, only scripts under these directories are permitted regardless of the allowlist. |
revoked_serials |
/etc/ctrl-exec-agent/revoked-serials |
Path to the certificate serial revocation list |
dispatcher_serial_path |
/etc/ctrl-exec-agent/dispatcher-serial |
Path to the stored ctrl-exec serial number |
allowed_ips |
— | Comma-separated IP addresses or CIDR prefixes permitted to connect. All IPs permitted if unset. |
rate_limit_volume |
10/60/300 |
Volume threshold: limit/window_seconds/block_seconds |
rate_limit_probe |
3/600/3600 |
Probe threshold (TLS failures): limit/window_seconds/block_seconds |
stdin_timeout |
10 |
Seconds to wait for a script to consume stdin context |
pairing_port |
7444 |
Port to connect to on ctrl-exec during pairing |
disable_rate_limit |
0 |
Set to 1 to disable rate limiting. Only for test environments. |
Agent Tags
The [tags] section in agent.conf sets arbitrary key/value metadata returned in discovery and capabilities responses. Tags are reloaded on SIGHUP.
[tags]
env = production
role = database
site = london
scripts.conf
The allowlist is a separate file at /etc/ctrl-exec-agent/scripts.conf. Each line maps a short name to an absolute script path:
backup-mysql = /opt/ctrl-exec-scripts/backup-mysql.sh
check-disk = /opt/ctrl-exec-scripts/check-disk.sh
restart-app = /opt/ctrl-exec-scripts/restart-app.sh
Script names must match [\w-]+. The file reloads on SIGHUP.
ENVEXEC_* Environment Variables
These variables are passed to auth hooks by ctrl-exec and by the agent. They use the ENVEXEC_ prefix in all distributions — this prefix is never substituted by make-release.
| Variable | Type | Description |
|---|---|---|
ENVEXEC_ACTION |
string | Operation type: run, ping, or api |
ENVEXEC_SCRIPT |
string | Script name requested. Empty for ping. |
ENVEXEC_HOSTS |
string | Comma-separated list of target hosts |
ENVEXEC_ARGS |
string | Space-joined arguments. Ambiguous for arguments containing spaces — use ENVEXEC_ARGS_JSON instead. |
ENVEXEC_ARGS_JSON |
JSON string | Arguments as a JSON array. Reliable for all argument values. |
ENVEXEC_USERNAME |
string | Username from the request. Caller-supplied; not verified by ctrl-exec. |
ENVEXEC_TOKEN |
string | Auth token from the request |
ENVEXEC_SOURCE_IP |
string | 127.0.0.1 for CLI callers; caller IP for API callers |
ENVEXEC_TIMESTAMP |
string | ISO 8601 UTC timestamp of the request |
Docker Environment Variable
| Variable | Description |
|---|---|
CTRL_EXEC_HOST |
Hostname or IP of the ctrl-exec instance, used in agent container entrypoints during pairing |