# Configuring

## The client

Two things, both optional if your defaults already work.

| Variable | Purpose |
|---|---|
| `OTISK_HOST` | The host to talk to, as `git@host` or `git@host:port` |
| `OTISK_SSH_COMMAND` | The ssh invocation to use |

`otisk host set git@git.otisk.dev` records the host so you do not have to
set it every time; `otisk host` prints what is recorded. The user defaults to
`git` and the port to 22, so a host serving on 22 needs neither: `otisk host
set git.otisk.dev` says the same thing.

For ssh, otisk honours `OTISK_SSH_COMMAND` and falls back to
`GIT_SSH_COMMAND`, so a key or option set that already works for `git` needs
no second configuration.

## The gateway

Read from the environment; see `.env.example` in the repository.

| Variable | Purpose |
|---|---|
| `OTISK_DATABASE_URL` | PostgreSQL connection string |
| `OTISK_S3_ENDPOINT` | Object store endpoint |
| `OTISK_S3_ACCESS_KEY` / `OTISK_S3_SECRET_KEY` | Object store credentials |
| `OTISK_S3_BUCKET` | Bucket holding repository data |
| `OTISK_S3_USE_SSL` | Whether to use TLS to the object store |
| `OTISK_CACHE_DIR` | Local repository cache; safe to delete |
| `OTISK_SSH_HOST_KEY` | Gateway host key; generated if absent |
| `OTISK_SSH_ADDR` | Gateway listen address (default `:2222`) |
| `OTISK_ENV_FILE` | Alternative path to the env file (default `.env`) |

A service refuses to start when a value it requires is missing, naming every
absent variable at once.

Credentials and configuration live on the host and never in the build
artefact: the binary you install contains nothing about where it will run.
