# Connect services to each other

Every deployed service gets an **internal host** on Koo's private network — a hostname the other services in its [environment](/docs/projects/projects-and-environments) use to call it. Traffic between your services stays on the platform: it never crosses the internet, and an internal host doesn't resolve outside it.

## Find a service's internal host

1. 
2. 
3.

The value looks like `<service>.<project>-<environment>.cpln.local`. Treat it as read-only: copy it rather than building it yourself. The same value is the read-only `internalHost` field on the [Service object](/api/objects/service).

The host appears once the service is deployed — before that, the field shows a placeholder instead.

## Call another service

Address the target as `http://<internal host>:<port>`, where the port is whatever the target service listens on — the **Port** field in its Settings.

> **Note:**
>
> Traffic on the private network is plain HTTP. TLS belongs to the public side: a service's default URL and [custom domains](/docs/networking/custom-domains) carry HTTPS, terminated before requests reach your code.

## Services in the same environment

Internal hosts connect services in the same environment, and each environment has its own hosts and its own databases. When you [clone an environment](/docs/projects/clone-an-environment), the clone's services call the clone's copies — internal hosts and connection variables resolve within their own environment.

## Run a private service

A web service doesn't have to be public. Leave **Public networking** off and it gets no public URL — it is reachable only at its internal host, from your services on the private network.

That is the pattern for an internal API, a background worker, or an admin backend: the service deploys and logs like any other; it just has no public address.

## How databases fit

A database's `HOST` connection key is its internal host, and the [connection variable](/docs/databases/connect-a-database) you add on a consuming service carries it — inside the connection URL, or as a single key. Postgres listens on port `5432` and Redis on `6379`.

Databases are never internet-reachable. They are reachable only from your services on Koo's private network, from the same environment.
