Skip to main content

Configuration

The control plane reads its configuration from the environment. On the from-source path these live in a .env file copied from .env.example; on the appliance they come from the system configuration and its secrets management, not a file. The keys below are the surface an operator sets.

Database and cache

kixctl keeps its own state in Postgres and runs its queues, cache, and broadcasting through Valkey.

KeyPurpose
DB_CONNECTIONpgsql
DB_HOST, DB_PORTPostgres host and port
DB_DATABASE, DB_USERNAME, DB_PASSWORDPostgres database and credentials
REDIS_HOST, REDIS_PORT, REDIS_PASSWORDValkey connection
QUEUE_CONNECTION, CACHE_STOREredis — Valkey serves both
BROADCAST_CONNECTIONreverb, for live operation progress

Incus transport

How the control plane reaches the fabric — the core of How kixctl accesses Incus.

KeyPurpose
INCUS_DRIVERsocket for a co-located development member, https for a scoped client certificate
INCUS_SOCKETthe local socket path, when the driver is socket

Production is always https with a restricted, project-scoped certificate. The socket is a development convenience on a cluster member and is root-equivalent on the host; it never becomes the production path.

Deploy

KeyPurpose
DEPLOY_BUILD_ATTRthe fallback build attribute for a repository that leaves its own blank
DEPLOY_POLL_ENABLEDmaster switch for the commit poller; webhook pushes still work when it is off
DEPLOY_POLL_TIMEOUTtimeout for a poll's git ls-remote read

Per-repository settings — clone URL, branch, build attribute, webhook secret, and poll interval — live on the repository itself, not in the environment; see Deploy an app. The commit poller runs from the scheduler, which needs php artisan schedule:run every minute — a systemd timer on an installed system, or php artisan schedule:work in development.