### CONTRIBUTING # Welcome to RoadRunner docs contributing guide Thank you for investing your time in contributing to our project! Any contribution you make will be reflected on [RR](https://github.com/roadrunner-server/roadrunner#contributors) :sparkles:. Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. ### Issues #### Create a new issue If you spot a problem with the RR, [search if an issue already exists](https://github.com/roadrunner-server/roadrunner/issues). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/roadrunner-server/roadrunner/issues/new/choose). #### Solve an issue Scan through our [existing issues](https://github.com/roadrunner-server/roadrunner/issues) to find one that interests you. You can narrow down the search using `labels` as filters. If you find an issue to work on, you are welcome to open a PR with a fix. ### Pull Request When you're finished with the changes, create a pull request, also known as a PR. - Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request. - Don't forget to update the docs if you are solving one. - Make sure, that all checkboxes in the PR template are solved. Once you submit your PR, a RR team member will review your proposal. We may ask questions or request for additional information. - As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). - If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues. ### Your PR is merged! Congratulations :tada::tada: The RoadRunner team thanks you :sparkles:. Once your PR is merged, your contributions will be publicly visible on the [RR page](https://github.com/roadrunner-server/roadrunner#contributors). Now that you are part of the RoadRunner server community, see how else you can [contribute to the RR](https://github.com/roadrunner-server/roadrunner/issues). --- ### README

All releases

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)

Official Website | Documentation | Forum | Release schedule | Ask RoadRunner Guru

# 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: To get the roadrunner binary file you can use our docker image: `ghcr.io/roadrunner-server/roadrunner:2025.X.X` (more information about image and tags can be found [here](https://github.com/roadrunner-server/roadrunner/pkgs/container/roadrunner)). ```dockerfile FROM ghcr.io/roadrunner-server/roadrunner:2025.X.X 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/v2025.X.X/roadrunner-2025.X.X-linux-amd64.deb sudo dpkg -i roadrunner-2025.X.X-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 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). ## Contributors Thanks to all the people who already contributed! --- ### SECURITY # Security Policy ## Supported Versions | Version | Supported | |----------|-----------| | 2.x | No | | 2023.x.x | No | | 2024.x.x | Yes | | 2025.x.x | Yes | ---