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.
| Key | Purpose |
|---|---|
DB_CONNECTION | pgsql |
DB_HOST, DB_PORT | Postgres host and port |
DB_DATABASE, DB_USERNAME, DB_PASSWORD | Postgres database and credentials |
REDIS_HOST, REDIS_PORT, REDIS_PASSWORD | Valkey connection |
QUEUE_CONNECTION, CACHE_STORE | redis — Valkey serves both |
BROADCAST_CONNECTION | reverb, for live operation progress |
Incus transport
How the control plane reaches the fabric — the core of How kixctl accesses Incus.
| Key | Purpose |
|---|---|
INCUS_DRIVER | socket for a co-located development member, https for a scoped client certificate |
INCUS_SOCKET | the 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
| Key | Purpose |
|---|---|
DEPLOY_BUILD_ATTR | the fallback build attribute for a repository that leaves its own blank |
DEPLOY_POLL_ENABLED | master switch for the commit poller; webhook pushes still work when it is off |
DEPLOY_POLL_TIMEOUT | timeout 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.