MCPcopy Index your code
hub / github.com/roadrunner-server/roadrunner

github.com/roadrunner-server/roadrunner @v2025.1.15

repository ↗ · DeepWiki ↗ · release v2025.1.15 ↗ · Ask this repo → · + Follow
171 symbols 593 edges 58 files 76 documented · 44% updated 5d agov2025.1.15 · 2026-06-17★ 8,48161 open issues
README

<img align="center" src="https://github.com/roadrunner-server/.github/assets/8040338/040fb694-1dd3-4865-9d29-8e0748c2c8b8">

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 via Temporal. - 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 server. - Systemd-like services manager with auto-restarts, execution time limiter, etc. - Production-ready. - And more 😉

Join our discord server: Link

<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>

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.

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).

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):

Installation via Composer

You can also install RoadRunner automatically using the command shipped with the composer package, run:

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)

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:

curl --proto '=https' --tlsv1.2 -sSf  https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh

MacOS using Homebrew:

brew install roadrunner

Windows using Chocolatey:

choco install roadrunner

Configuration can be located in .rr.yaml file (full sample):

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.

Example Worker:

<?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. If this does not help, try to execute the command php worker.php directly and check the output.


Available Plugins: link

Run:

To run application server:

$ ./rr serve -c .rr.yaml

License:

The MIT License (MIT). Please see LICENSE for more information. Maintained by Spiral Scout.

Contributors

Thanks to all the people who already contributed!

Extension points exported contracts — how you extend this code

Logger (Interface)
Logger is the interface that the mock logger provides via Endure DI. [1 implementers]
tests/mock/logger.go

Core symbols most depended-on inside this repo

Stop
called by 21
tests/mock/logger.go
Init
called by 13
tests/mock/logger.go
log
called by 11
internal/cli/serve/command.go
SdNotify
called by 8
internal/sdnotify/sdnotify.go
NewCommand
called by 7
internal/cli/root.go
log
called by 7
internal/cli/serve/command_windows.go
Stop
called by 7
internal/debug/server.go
NewClient
called by 7
internal/rpc/client.go

Shape

Function 112
Method 42
Struct 12
Interface 4
TypeAlias 1

Languages

Go99%
TypeScript1%

Modules by API surface

tests/mock/observer.go20 symbols
tests/proto/service/service_grpc.pb.go15 symbols
tests/mock/logger.go13 symbols
tests/proto/service/service.pb.go11 symbols
internal/rpc/client.go10 symbols
internal/cli/workers/render.go8 symbols
lib/roadrunner.go7 symbols
internal/rpc/client_test.go7 symbols
tests/helpers/helpers.go6 symbols
internal/cli/root_test.go6 symbols
lib/roadrunner_test.go5 symbols
tests/e2e_http_test.go4 symbols

Dependencies from manifests, versioned

nyholm/psr71.5 · 1×
spiral/goridge4.0 · 1×
spiral/roadrunner-grpc3.0 · 1×
spiral/roadrunner-http3.5 · 1×
spiral/roadrunner-jobs4.0 · 1×
spiral/roadrunner-worker3.5 · 1×
cloud.google.com/gov0.123.0 · 1×
cloud.google.com/go/auth/oauth2adaptv0.2.8 · 1×
cloud.google.com/go/compute/metadatav0.9.0 · 1×

For agents

$ claude mcp add roadrunner \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact