# services.<name>.healthcheck

> How Guv decides a new deployment is healthy before moving traffic.

How Guv decides a new deployment is healthy before moving traffic. A string is shorthand for an HTTP path.

- **Type:** string or object
- **Since:** manifest v1

**Accepted forms**

- string
- object: the full form, with the fields below

## Example

```yaml
services:
  web:
    healthcheck: /healthz
```

```yaml
services:
  web:
    healthcheck:
      path: /healthz
      timeout: 10s
```

## Fields

### type

`services.<name>.healthcheck.type`

HTTP GET expecting 2xx/3xx, or a TCP connect.

- **Type:** `http`, `tcp`
- **Default:** `http`
- **Since:** manifest v1

```yaml
services:
  web:
    healthcheck:
      type: http
```

### path

`services.<name>.healthcheck.path`

Path for HTTP checks.

- **Type:** string
- **Default:** `/`
- **Pattern:** `^/`
- **Since:** manifest v1

```yaml
services:
  web:
    healthcheck:
      path: /healthz
```

### port

`services.<name>.healthcheck.port`

Port to check; defaults to the service port.

- **Type:** integer
- **Range:** 1 to 65535
- **Since:** manifest v1

```yaml
services:
  web:
    healthcheck:
      port: 3000
```

### timeout

`services.<name>.healthcheck.timeout`

Per-check timeout (up to 60s).

- **Type:** [duration](/docs/manifest/#duration)
- **Since:** manifest v1

```yaml
services:
  web:
    healthcheck:
      timeout: 10s
```

### interval

`services.<name>.healthcheck.interval`

Time between checks.

- **Type:** [duration](/docs/manifest/#duration)
- **Since:** manifest v1

```yaml
services:
  web:
    healthcheck:
      interval: 10s
```

### start_timeout

`services.<name>.healthcheck.start_timeout`

How long a new deployment has to become healthy (up to 15m).

- **Type:** [duration](/docs/manifest/#duration)
- **Since:** manifest v1

```yaml
services:
  web:
    healthcheck:
      start_timeout: 5m
```

## See also

- [services](/docs/manifest/services/): all fields of `services`
- [guv.yaml reference](/docs/manifest/)
