---
name: "relayd"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/relayd"
---

# relayd(8)

relay daemon

## NAME

**relayd** – relay daemon

## SYNOPSIS

**relayd** \[**-dnv**\] \[**-D** *macro*=*value*\] \[**-f** *file*\]

## DESCRIPTION

**relayd** is a daemon to relay and dynamically redirect incoming connections to a target host. Its main purposes are to run as a load-balancer, application layer gateway, or transparent proxy. The daemon is able to monitor groups of hosts for availability, which is determined by checking for a specific service common to a host group. When availability is confirmed, layer 3 and/or layer 7 forwarding services are set up by **relayd**.

Layer 3 redirection happens at the packet level; to configure it, **relayd** communicates with [pf(4)](/pf/4.md). To allow **relayd** to properly set up [pf(4)](/pf/4.md) rules, the following line is required in the filter section of [pf.conf(5)](/pf.conf/5.md):

```
anchor "relayd/*"
```

Layer 7 relaying happens at the application level and is handled by **relayd** itself. Various application level filtering and protocol-specific load-balancing options are available for relays.

**relayd** works in terms of the following *entities*: relays, protocols, redirections, and tables. A *relay* represents a layer 7 load-balancing instance. Each instance translates to a listening TCP or UDP port. A *protocol* defines which actions, if any, are taken on the packet payload as data crosses a relay. A *redirection* represents a layer 3 load-balancing instance. Each instance translates to a [pf(4)](/pf/4.md) rdr-to rule being added. A *table* represents a group of hosts which can be checked for availability using the same method. Each table contains at least one host. If a table is used in a layer 3 load-balancing instance, it will be mapped to a [pf(4)](/pf/4.md) table containing only those hosts which are up.

All these entities can be configured in [relayd.conf(5)](/relayd.conf/5.md), and [relayctl(8)](/relayctl/8.md) can be used to alter or report on the status of each entity.

The options are as follows:

- **-D** *macro*=*value*

  Define *macro* to be set to *value* on the command line. Overrides the definition of *macro* in the configuration file.

- **-d**

  Do not daemonize. If this option is specified, **relayd** will run in the foreground and log to *stderr*.

- **-f** *file*

  Specify an alternative configuration file. The default is */etc/relayd.conf*.

- **-n**

  Configtest mode. Only check the configuration file for validity.

- **-v**

  Produce more verbose output.

## FILES

- */etc/relayd.conf*

  Default configuration file.

- */var/run/relayd.sock*

  UNIX-domain socket used for communication with [relayctl(8)](/relayctl/8.md).

## SEE ALSO

[relayd.conf(5)](/relayd.conf/5.md), [relayctl(8)](/relayctl/8.md)

## HISTORY

The **relayd** program, formerly known as **hoststated**, first appeared in OpenBSD 4.1. It was renamed to **relayd** in OpenBSD 4.3.

## AUTHORS

The **relayd** program was written by Pierre-Yves Ritschard ⟨*pyr@openbsd.org*⟩ and Reyk Floeter ⟨*reyk@openbsd.org*⟩.
