# Without Kubernetes

> Running ACOG on virtual machines: what is and is not supported, the processes to run, the start order and the constraints that matter.

Product: AI Cost Optimizer Gateway (ACOG). Web version: https://tessarac.com/docs/acog/self-hosted/without-kubernetes. Last updated: 2026-10-16.

Kubernetes with the Helm chart is the supported installation. There is no packaged virtual-machine installation (no system packages, systemd units or Compose file), and none is tested. You can derive one from the chart; this page lists what that involves. Talk to us before choosing this path.

## Processes

At least ten processes: the web tier, data plane, control plane, metering, DLP, embedder and named-entity service, and PostgreSQL, Dragonfly (or another Redis-protocol store) and ClickHouse. Add Milvus, etcd and MinIO for the semantic cache.

## Start order

1. The datastores.
2. The control plane (it applies the database schema).
3. Metering.
4. The data plane, DLP, embedder and named-entity service.
5. The web tier.

## Constraints

- **Run exactly one metering instance.**
- The control plane and data plane must share the same `ACOG_CREDS_KEY`.
- The web tier needs `ACOG_API_BASE_URL=/api`, and exits if it is missing. Set `ACOG_GATEWAY_URL` only if your gateway has its own address; the console then shows it to your users instead of `<your-acog-host>/gateway`.
- Terminate TLS in front of the web tier, and serve only the web tier publicly.
- The ClickHouse database must be named `acog`.
- Configuration is read once at start; restart a process to change it.

Every setting is described in [Configuration](https://tessarac.com/docs/acog/self-hosted/configuration.md). The chart's templates are the reference for how the processes are wired together.
