> For the complete documentation index, see [llms.txt](https://docs.roadrunner.dev/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadrunner.dev/docs/experimental-features/experimental.md).

# List of the Experimental Features

## Introduction

Starting with RR `v2023.3.4`, we introduced a new capability called **Experimental Features**. This allows you to try out features that are not yet ready for production use.

## How to enable experimental features

To enable experimental features, run RR with the `-e` (`--enable-experimental`) flag. For example:

```bash
./rr serve -e
```

Or:

```bash
./rr serve --enable-experimental
```

## Configuration Files

The `envfile` and `include` settings work without the experimental flag. See [Configuration](/docs/plugins/config.md) for these settings.

## HTTP/3 Server

Set `http.http3.cert` and `http.http3.key` to existing certificate and private key files. The HTTP/3 listener requires these files at startup. Start RoadRunner with `-e` to enable this listener.

Sample `.rr.yaml` file:

{% code title=".rr.yaml" %}

```yaml
version: "3"

server:
  command: "php worker.php"
  relay: pipes

http:
  address: 127.0.0.1:15389
  pool:
    num_workers: 2
  http3:
    address: 127.0.0.1:34555
    key: "localhost+2-key.pem"
    cert: "localhost+2.pem"
```

{% endcode %}

You can also generate test certificates manually and use them in the configuration file. To do that, use [mkcert](https://github.com/FiloSottile/mkcert) or [certbot](https://certbot.eff.org/):

```bash
mkcert -install && mkcert -client localhost 127.0.0.1 ::1 && mkcert localhost 127.0.0.1 ::1
```

This command generates the client and server certificates for the `localhost` domain. You can use them in the configuration file:

{% code title=".rr.yaml" %}

```yaml
version: "3"

server:
  command: "php worker.php"
  relay: pipes

http:
  address: 127.0.0.1:15389
  pool:
    num_workers: 2
  http3:
    address: 127.0.0.1:34555
    key: "localhost+2-key.pem" # <- generated by mkcert: "localhost+2-key.pem"
    cert: "localhost+2.pem" # <- generated by mkcert: "localhost+2.pem"
```

{% endcode %}

You can use client certificates in your preferred HTTP/3 client. For example, use [curl3](https://curl.se/docs/http3.html) to test the HTTP/3 server:

```bash
curl3 --http3 -k --cert localhost+2.pem --key localhost+2-key.pem https://127.0.0.1:34555/
```
