# 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](../advanced/incus-access.md).

| 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](../guides/deploy-an-app.md). 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.
