discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
roadrunner-server/roadrunner · source
Snapshot 0 · 2026-11-04T12:47:25Z · Go · MIT
Content fingerprint
23e8bd856a52dad2a700cbe89d02dadd4e604f445db8ffc3e8cab7583a843ff3GitHub description at capture
🤯 High-performance PHP application server, process manager written in Go and powered with plugins
README at capture
<a href="https://roadrunner.dev" target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/roadrunner-server/.github/assets/8040338/e6bde856-4ec6-4a52-bd5b-bfe78736c1ff">
<img align="center" src="https://github.com/roadrunner-server/.github/assets/8040338/040fb694-1dd3-4865-9d29-8e0748c2c8b8">
</picture>
</a>
<p align="center">
<a href="https://packagist.org/packages/roadrunner/roadrunner"><img src="https://poser.pugx.org/roadrunner/roadrunner/version"></a>
<a href="https://pkg.go.dev/github.com/roadrunner-server/roadrunner/v3?tab=doc"><img src="https://godoc.org/github.com/roadrunner-server/roadrunner/v3?status.svg"></a>
<a href="https://twitter.com/spiralphp"><img src="https://img.shields.io/twitter/follow/spiralphp?style=social"></a>
<a href="https://codecov.io/gh/roadrunner-server/roadrunner/"><img src="https://codecov.io/gh/roadrunner-server/roadrunner/branch/master/graph/badge.svg"></a>
<a href="https://github.com/roadrunner-server/roadrunner/actions"><img src="https://github.com/roadrunner-server/roadrunner/workflows/rr_cli_tests/badge.svg" alt=""></a>
<a href="https://discord.gg/TFeEmCs"><img src="https://img.shields.io/badge/discord-chat-magenta.svg"></a>
<a href="https://packagist.org/packages/roadrunner/roadrunner"><img src="https://img.shields.io/packagist/dd/roadrunner/roadrunner?style=flat-square"></a>
<img alt="All releases" src="https://img.shields.io/github/downloads/roadrunner-server/roadrunner/total">
<a href="https://gurubase.io/g/roadrunner"><img src="https://img.shields.io/badge/Gurubase-Ask%20RoadRunner%20Guru-006BFF?style=flat-square"></a>
</p>
RoadRunner is an open-source (MIT licensed) high-performance PHP application server, process manager written in Go and powered with plugins ❤️.
It supports running as a service with the ability to extend its functionality on a per-project basis with plugins.
# Features
**RoadRunner** features a range of plugins, including `HTTP(S)/2/3` and `fCGI` servers that are compatible with PSR-7/PSR-17 standards. This is just one of its many capabilities. It serves as an effective alternative to the traditional Nginx+FPM setup, providing improved performance and more flexibility. Its extensive plugin options go far beyond just `HTTP(S)/2/3` and `fCGI` servers, offering a broad range of functionalities:
- Queue drivers: RabbitMQ, Kafka, SQS, Beanstalk, NATS, In-Memory.
- KV drivers: Redis, Memcached, BoltDB, In-Memory.
- OpenTelemetry protocol support (`gRPC`, `http`, `jaeger`).
- [Workflow engine](https://github.com/temporalio/sdk-php) via [Temporal](https://temporal.io).
- `gRPC` server. For increased speed, the `protobuf` extension can be used.
- `HTTP(S)/2/3` and `fCGI` servers features **automatic TLS management**, **103 Early Hints** support and middleware like: Static, Headers, gzip, prometheus (metrics), send (x-sendfile), OTEL, proxy_ip_parser, etc.
- Embedded distribute lock plugin which manages access to shared resources.
- Metrics server (you might easily expose your own).
- WebSockets and Broadcast via [Centrifugo](https://centrifugal.dev) server.
- Systemd-like services manager with auto-restarts, execution time limiter, etc.
- Production-ready.
- And more 😉
# Join our discord server: [Link](https://discord.gg/TFeEmCs)
<p align="center">
<a href="https://roadrunner.dev/"><b>Official Website</b></a> |
<a href="https://docs.roadrunner.dev/"><b>Documentation</b></a> |
<a href="https://github.com/orgs/roadrunner-server/discussions"><b>Forum</b></a> |
<a href="https://github.com/orgs/roadrunner-server/projects/4"><b>Release schedule</b></a> |
<a href="https://gurubase.io/g/roadrunner"><b>Ask RoadRunner Guru</b></a>
</p>
# Installation
The easiest way to get the latest RoadRunner version is to use one of the pre-built release binaries, which are available for
OSX, Linux, FreeBSD, and Windows. Instructions for using these binaries are on the GitHub [releases page](https://github.com/roadrunner-server/roadrunner/releases).
## Docker:
Use `ghcr.io/roadrunner-server/roadrunner:3.0.0` to copy the RoadRunner binary into your application image. See the [image tags](https://github.com/roadrunner-server/roadrunner/pkgs/container/roadrunner).
```dockerfile
FROM ghcr.io/roadrunner-server/roadrunner:3.0.0 AS roadrunner
FROM php:8.3-cli
COPY --from=roadrunner /usr/bin/rr /usr/local/bin/rr
# USE THE RR
```
Configuration located in the `.rr.yaml` file ([full sample](https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml)):
## Installation via Composer
You can also install RoadRunner automatically using the command shipped with the composer package, run:
```bash
composer require spiral/roadrunner-cli
./vendor/bin/rr get-binary
```
Server binary will be available at the root of your project.
> **Note**
>
> PHP's extensions `php-curl` and `php-zip` are required to download RoadRunner automatically.
> PHP's extensions `php-sockets` need to be installed to run roadrunner.
> Check with `php --modules` your installed extensions.
## Installation option for the Debian-derivatives (Ubuntu, Mint, MX, etc)
```bash
wget https://github.com/roadrunner-server/roadrunner/releases/download/v3.0.0/roadrunner-3.0.0-linux-amd64.deb
sudo dpkg -i roadrunner-3.0.0-linux-amd64.deb
```
## Download the latest release via curl:
```bash
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh
```
## MacOS using [Homebrew](https://brew.sh/):
```bash
brew install roadrunner
```
## Windows using [Chocolatey](https://community.chocolatey.org/):
```bash
choco install roadrunner
```
---
Configuration can be located in `.rr.yaml` file ([full sample](https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml)):
```yaml
version: '3'
rpc:
listen: tcp://127.0.0.1:6001
server:
command: "php worker.php"
http:
address: "0.0.0.0:8080"
logs:
level: error
```
> Read more in [Documentation](https://docs.roadrunner.dev).
Example Worker:
--------
```php
<?php
use Spiral\RoadRunner;
use Nyholm\Psr7;
include "vendor/autoload.php";
$worker = RoadRunner\Worker::create();
$psrFactory = new Psr7\Factory\Psr17Factory();
$worker = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);
while ($req = $worker->waitRequest()) {
try {
$rsp = new Psr7\Response();
$rsp->getBody()->write('Hello world!');
$worker->respond($rsp);
} catch (\Throwable $e) {
$worker->getWorker()->error((string)$e);
}
}
```
> [!IMPORTANT]
> If you see the `EOF` error, check that you have installed the PHP packages from [this step](https://github.com/roadrunner-server/roadrunner#installation-via-composer).
> If this does not help, try to execute the command `php worker.php` directly and check the output.
---
### Available Plugins: [link](https://docs.roadrunner.dev)
Run:
----
To run application server:
```
$ ./rr serve -c .rr.yaml
```
License:
--------
The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. Maintained
by [Spiral Scout](https://spiralscout.com).
## Releases
[Release Please](https://github.com/googleapis/release-please) updates a release PR on `master` from [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/). It updates `CHANGELOG.md` and `.release-please-manifest.json`. Merge the release PR to create the tag and GitHub release. The release workflows then build the binaries, Debian packages, gRPC compiler, and container images. Re-run failed jobs if a build fails.
## Contributors
Thanks to all the people who already contributed!
<a href="https://github.com/roadrunner-server/roadrunner/graphs/contributors">
<img src="https://contributors-img.web.app/image?repo=roadrunner-server/roadrunner" />
</a>