# Deploy

> For the complete documentation index, see [llms.txt](https://docs.lertha.com/llms.txt).
> Any documentation page is available as raw Markdown by appending `.md` to its URL.

> Running the orchestrator locally, and on LAP.

## Locally, from source

```bash
make db-up     # Postgres 16 in Docker on 5432, user/password lertha/lertha
make run       # builds bin/lertha-flow and runs it against that Postgres
```

Any Postgres 12 or newer works; the Homebrew one is fine. Point `LERTHA_FLOW_DB_*` at it.

## On LAP

`deploy/docker-compose.yaml` in the orchestrator repository is a Coolify Docker Compose
resource: Postgres 16 with a volume, and the orchestrator image from GHCR.

- The UI is routed by the platform proxy to `engine.lertha.com` behind the platform's auth, the
  same way the status page and the Deploy dashboard are.
- Port 7233 is what workers and the gateway connect to. Keep it on the app network, not the
  public internet, until frontend auth is configured.
- Secrets come from the platform environment (Doppler into Coolify), never from the compose file.

## Releases

Push a `vX.Y.Z` tag. The release workflow builds the image once, scans it, and pushes
`ghcr.io/lertha-app/lertha-flow:X.Y.Z`. Coolify pulls the tag. Rollback is pulling the
previous tag; schema changes are additive, so an older image runs against a newer database.

## Sizing

The four services in one process idle around 300 to 500 MB on this workload, plus Postgres. It
fits beside the gateway on the current box; give it its own box when history grows.

## Not yet

- **Frontend auth.** No authorizer is configured yet; access is network-level.
- **Multi-node.** Single process by design; the code path to change is one option.
