{"owner":"roadrunner-server","repo":"roadrunner","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nRoadRunner is a high-performance PHP application server and process manager written in Go. It supports running as a service with extensive plugin functionality for HTTP/2/3, gRPC, queues (RabbitMQ, Kafka, SQS, NATS), KV stores, WebSockets, Temporal workflows, and more.\n\n## Development Commands\n\n### Build\n```bash\nmake build\n# Or manually:\nCGO_ENABLED=0 go build -trimpath -ldflags \"-s\" -o rr cmd/rr/main.go\n```\n\n### Test\n```bash\nmake test\n# Or manually:\ngo test -v -race ./...\n```\n\n### Debug\n```bash\nmake debug\n# Uses delve to debug with sample config\n```\n\n### Run RoadRunner\n```bash\n./rr serve -c .rr.yaml\n```\n\n### Other Commands\n```bash\n./rr workers          # Show worker status\n./rr workers -i       # Interactive worker information\n./rr reset            # Reset workers\n./rr jobs             # Jobs management commands\n./rr stop             # Stop RoadRunner server\n```\n\n### Run Single Test\n```bash\ngo test -v -race -run TestName ./path/to/package\n```\n\n## Architecture\n\n### Plugin System\n\nRoadRunner uses the **Endure** dependency injection container. All plugins are registered in `container/plugins.go:Plugins()`. The plugin architecture follows these principles:\n\n1. **Plugin Registration**: Plugins are listed in `container/plugins.go` and automatically wired by Endure\n2. **Plugin Dependencies**: Plugins declare dependencies via struct fields with interface types\n3. **Initialization Order**: Endure resolves the dependency graph and initializes plugins in correct order\n\n### Key Components\n\n- **`cmd/rr/main.go`**: Entry point that delegates to CLI commands\n- **`internal/cli/`**: CLI command implementations (serve, workers, reset, jobs, stop)\n- **`container/`**: Plugin registration and Endure container configuration\n- **Plugin packages**: External packages under `github.com/roadrunner-server/*` (imported in go.mod)\n\n### Configuration\n\n- Primary config: `.rr.yaml` (extensive sample provided)\n- Version 3 config format required (`version: '3'`)\n- Environment variable substitution supported: `${ENVIRONMENT_VARIABLE_NAME}`\n- Sample configs: `.rr-sample-*.yaml` for different use cases (HTTP, gRPC, Temporal, Kafka, etc.)\n\n### Core Plugins\n\n**Server Management:**\n- `server`: Worker pool management (NewWorker, NewWorkerPool)\n- `rpc`: RPC server for PHP-to-Go communication (default: tcp://127.0.0.1:6001)\n- `logger`: Logging infrastructure\n- `informer`: Worker status reporting\n- `resetter`: Worker reset functionality\n\n**Protocol Servers:**\n- `http`: HTTP/1/2/3 and FastCGI server with middleware support\n- `grpc`: gRPC server\n- `tcp`: Raw TCP connection handling\n\n**Jobs/Queue Drivers:**\n- `jobs`: Core jobs plugin\n- `amqp`, `sqs`, `nats`, `kafka`, `beanstalk`: Queue backends\n- `gps`: Google Pub/Sub\n\n**KV Stores:**\n- `kv`: Core KV plugin\n- `memory`, `boltdb`, `redis`, `memcached`: Storage backends\n\n**HTTP Middleware:**\n- `static`, `headers`, `gzip`, `prometheus`, `send`, `proxy_ip_parser`, `otel`, `fileserver`\n\n**Other:**\n- `temporal`: Temporal.io workflow engine integration\n- `centrifuge`: WebSocket/Broadcast via Centrifugo\n- `lock`: Distributed locks\n- `metrics`: Prometheus metrics\n- `service`: Systemd-like service manager\n\n### Worker Communication\n\nRoadRunner communicates with PHP workers via:\n- **Goridge protocol**: Binary protocol over pipes, TCP, or Unix sockets\n- **RPC**: For management operations (reset, stats, etc.)\n- Workers are PHP processes that implement the RoadRunner worker protocol\n\n### Testing\n\n- Tests use standard Go testing with `-race` flag\n- Test files follow `*_test.go` convention\n- Sample configs in `.rr-sample-*.yaml` are used for integration tests\n- Test directories: `container/test`, `internal/rpc/test`\n\n## Important Notes\n\n- Go version: 1.25+ required (see go.mod)\n- Module path: `github.com/roadrunner-server/roadrunner/v2025`\n- Some versions are explicitly excluded in go.mod (e.g., go-redis v9.15.0, viper v1.18.x)\n- Debug mode available via `--debug` flag (starts debug server on :6061)\n- Config overrides supported via `-o dot.notation=value` flag\n- Working directory can be set with `-w` flag\n- `.env` file support via `--dotenv` flag or `DOTENV_PATH` environment variable\n\n## Adding New Plugins\n\n1. Import the plugin package in `container/plugins.go`\n2. Add plugin instance to the `Plugins()` slice\n3. Plugin must implement appropriate RoadRunner plugin interfaces\n4. Endure will handle dependency injection and lifecycle management\n\n## Configuration Patterns\n\n- Each plugin has its own configuration section (named after plugin)\n- Pools configuration is consistent across plugins (num_workers, max_jobs, timeouts, supervisor)\n- TLS configuration follows similar pattern across plugins\n- Most plugins support graceful shutdown via timeouts\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nRoadRunner is a high-performance PHP application server and process manager written in Go. It supports running as a service with extensive plugin functionality for HTTP/2/3, gRPC, queues (RabbitMQ, Kafka, SQS, NATS), KV stores, WebSockets, Temporal workflows, and more.\n\n## Development Commands\n\n### Build\n```bash\nmake build\n# Or manually:\nCGO_ENABLED=0 go build -trimpath -ldflags \"-s\" -o rr cmd/rr/main.go\n```\n\n### Test\n```bash\nmake test\n# Or manually:\ngo test -v -race ./...\n```\n\n### Debug\n```bash\nmake debug\n# Uses delve to debug with sample config\n```\n\n### Run RoadRunner\n```bash\n./rr serve -c .rr.yaml\n```\n\n### Other Commands\n```bash\n./rr workers          # Show worker status\n./rr workers -i       # Interactive worker information\n./rr reset            # Reset workers\n./rr jobs             # Jobs management commands\n./rr stop             # Stop RoadRunner server\n```\n\n### Run Single Test\n```bash\ngo test -v -race -run TestName ./path/to/package\n```\n\n## Architecture\n\n### Plugin System\n\nRoadRunner uses the **Endure** dependency injection container. All plugins are registered in `container/plugins.go:Plugins()`. The plugin architecture follows these principles:\n\n1. **Plugin Registration**: Plugins are listed in `container/plugins.go` and automatically wired by Endure\n2. **Plugin Dependencies**: Plugins declare dependencies via struct fields with interface types\n3. **Initialization Order**: Endure resolves the dependency graph and initializes plugins in correct order\n\n### Key Components\n\n- **`cmd/rr/main.go`**: Entry point that delegates to CLI commands\n- **`internal/cli/`**: CLI command implementations (serve, workers, reset, jobs, stop)\n- **`container/`**: Plugin registration and Endure container configuration\n- **Plugin packages**: External packages under `github.com/roadrunner-server/*` (imported in go.mod)\n\n### Configuration\n\n- Primary config: `.rr.yaml` (extensive sample provided)\n- Version 3 config format required (`version: '3'`)\n- Environment variable substitution supported: `${ENVIRONMENT_VARIABLE_NAME}`\n- Sample configs: `.rr-sample-*.yaml` for different use cases (HTTP, gRPC, Temporal, Kafka, etc.)\n\n### Core Plugins\n\n**Server Management:**\n- `server`: Worker pool management (NewWorker, NewWorkerPool)\n- `rpc`: RPC server for PHP-to-Go communication (default: tcp://127.0.0.1:6001)\n- `logger`: Logging infrastructure\n- `informer`: Worker status reporting\n- `resetter`: Worker reset functionality\n\n**Protocol Servers:**\n- `http`: HTTP/1/2/3 and FastCGI server with middleware support\n- `grpc`: gRPC server\n- `tcp`: Raw TCP connection handling\n\n**Jobs/Queue Drivers:**\n- `jobs`: Core jobs plugin\n- `amqp`, `sqs`, `nats`, `kafka`, `beanstalk`: Queue backends\n- `gps`: Google Pub/Sub\n\n**KV Stores:**\n- `kv`: Core KV plugin\n- `memory`, `boltdb`, `redis`, `memcached`: Storage backends\n\n**HTTP Middleware:**\n- `static`, `headers`, `gzip`, `prometheus`, `send`, `proxy_ip_parser`, `otel`, `fileserver`\n\n**Other:**\n- `temporal`: Temporal.io workflow engine integration\n- `centrifuge`: WebSocket/Broadcast via Centrifugo\n- `lock`: Distributed locks\n- `metrics`: Prometheus metrics\n- `service`: Systemd-like service manager\n\n### Worker Communication\n\nRoadRunner communicates with PHP workers via:\n- **Goridge protocol**: Binary protocol over pipes, TCP, or Unix sockets\n- **RPC**: For management operations (reset, stats, etc.)\n- Workers are PHP processes that implement the RoadRunner worker protocol\n\n### Testing\n\n- Tests use standard Go testing with `-race` flag\n- Test files follow `*_test.go` convention\n- Sample configs in `.rr-sample-*.yaml` are used for integration tests\n- Test directories: `container/test`, `internal/rpc/test`\n\n## Important Notes\n\n- Go version: 1.25+ required (see go.mod)\n- Module path: `github.com/roadrunner-server/roadrunner/v2025`\n- Some versions are explicitly excluded in go.mod (e.g., go-redis v9.15.0, viper v1.18.x)\n- Debug mode available via `--debug` flag (starts debug server on :6061)\n- Config overrides supported via `-o dot.notation=value` flag\n- Working directory can be set with `-w` flag\n- `.env` file support via `--dotenv` flag or `DOTENV_PATH` environment variable\n\n## Adding New Plugins\n\n1. Import the plugin package in `container/plugins.go`\n2. Add plugin instance to the `Plugins()` slice\n3. Plugin must implement appropriate RoadRunner plugin interfaces\n4. Endure will handle dependency injection and lifecycle management\n\n## Configuration Patterns\n\n- Each plugin has its own configuration section (named after plugin)\n- Pools configuration is consistent across plugins (num_workers, max_jobs, timeouts, supervisor)\n- TLS configuration follows similar pattern across plugins\n- Most plugins support graceful shutdown via timeouts\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nRoadRunner is a high-performance PHP application server and process manager written in Go. It supports running as a service with extensive plugin functionality for HTTP/2/3, gRPC, queues (RabbitMQ, Kafka, SQS, NATS), KV stores, WebSockets, Temporal workflows, and more.\n\n## Development Commands\n\n### Build\n```bash\nmake build\n# Or manually:\nCGO_ENABLED=0 go build -trimpath -ldflags \"-s\" -o rr cmd/rr/main.go\n```\n\n### Test\n```bash\nmake test\n# Or manually:\ngo test -v -race ./...\n```\n\n### Debug\n```bash\nmake debug\n# Uses delve to debug with sample config\n```\n\n### Run RoadRunner\n```bash\n./rr serve -c .rr.yaml\n```\n\n### Other Commands\n```bash\n./rr workers          # Show worker status\n./rr workers -i       # Interactive worker information\n./rr reset            # Reset workers\n./rr jobs             # Jobs management commands\n./rr stop             # Stop RoadRunner server\n```\n\n### Run Single Test\n```bash\ngo test -v -race -run TestName ./path/to/package\n```\n\n## Architecture\n\n### Plugin System\n\nRoadRunner uses the **Endure** dependency injection container. All plugins are registered in `container/plugins.go:Plugins()`. The plugin architecture follows these principles:\n\n1. **Plugin Registration**: Plugins are listed in `container/plugins.go` and automatically wired by Endure\n2. **Plugin Dependencies**: Plugins declare dependencies via struct fields with interface types\n3. **Initialization Order**: Endure resolves the dependency graph and initializes plugins in correct order\n\n### Key Components\n\n- **`cmd/rr/main.go`**: Entry point that delegates to CLI commands\n- **`internal/cli/`**: CLI command implementations (serve, workers, reset, jobs, stop)\n- **`container/`**: Plugin registration and Endure container configuration\n- **Plugin packages**: External packages under `github.com/roadrunner-server/*` (imported in go.mod)\n\n### Configuration\n\n- Primary config: `.rr.yaml` (extensive sample provided)\n- Version 3 config format required (`version: '3'`)\n- Environment variable substitution supported: `${ENVIRONMENT_VARIABLE_NAME}`\n- Sample configs: `.rr-sample-*.yaml` for different use cases (HTTP, gRPC, Temporal, Kafka, etc.)\n\n### Core Plugins\n\n**Server Management:**\n- `server`: Worker pool management (NewWorker, NewWorkerPool)\n- `rpc`: RPC server for PHP-to-Go communication (default: tcp://127.0.0.1:6001)\n- `logger`: Logging infrastructure\n- `informer`: Worker status reporting\n- `resetter`: Worker reset functionality\n\n**Protocol Servers:**\n- `http`: HTTP/1/2/3 and FastCGI server with middleware support\n- `grpc`: gRPC server\n- `tcp`: Raw TCP connection handling\n\n**Jobs/Queue Drivers:**\n- `jobs`: Core jobs plugin\n- `amqp`, `sqs`, `nats`, `kafka`, `beanstalk`: Queue backends\n- `gps`: Google Pub/Sub\n\n**KV Stores:**\n- `kv`: Core KV plugin\n- `memory`, `boltdb`, `redis`, `memcached`: Storage backends\n\n**HTTP Middleware:**\n- `static`, `headers`, `gzip`, `prometheus`, `send`, `proxy_ip_parser`, `otel`, `fileserver`\n\n**Other:**\n- `temporal`: Temporal.io workflow engine integration\n- `centrifuge`: WebSocket/Broadcast via Centrifugo\n- `lock`: Distributed locks\n- `metrics`: Prometheus metrics\n- `service`: Systemd-like service manager\n\n### Worker Communication\n\nRoadRunner communicates with PHP workers via:\n- **Goridge protocol**: Binary protocol over pipes, TCP, or Unix sockets\n- **RPC**: For management operations (reset, stats, etc.)\n- Workers are PHP processes that implement the RoadRunner worker protocol\n\n### Testing\n\n- Tests use standard Go testing with `-race` flag\n- Test files follow `*_test.go` convention\n- Sample configs in `.rr-sample-*.yaml` are used for integration tests\n- Test directories: `container/test`, `internal/rpc/test`\n\n## Important Notes\n\n- Go version: 1.25+ required (see go.mod)\n- Module path: `github.com/roadrunner-server/roadrunner/v2025`\n- Some versions are explicitly excluded in go.mod (e.g., go-redis v9.15.0, viper v1.18.x)\n- Debug mode available via `--debug` flag (starts debug server on :6061)\n- Config overrides supported via `-o dot.notation=value` flag\n- Working directory can be set with `-w` flag\n- `.env` file support via `--dotenv` flag or `DOTENV_PATH` environment variable\n\n## Adding New Plugins\n\n1. Import the plugin package in `container/plugins.go`\n2. Add plugin instance to the `Plugins()` slice\n3. Plugin must implement appropriate RoadRunner plugin interfaces\n4. Endure will handle dependency injection and lifecycle management\n\n## Configuration Patterns\n\n- Each plugin has its own configuration section (named after plugin)\n- Pools configuration is consistent across plugins (num_workers, max_jobs, timeouts, supervisor)\n- TLS configuration follows similar pattern across plugins\n- Most plugins support graceful shutdown via timeouts\n","category":"root","tokens":1213}]}