spiral/grpc-client
Powerful, extensible gRPC client for PHP with a simple Guzzle-like API. Make unary and streaming calls, add interceptors like timeouts and retries, and integrate easily with Spiral or use standalone. Requires the gRPC extension.
spiral/roadrunner-bridge + server-side tooling..proto-generated typed interfaces, adopting it is effectively a decision to adopt protobuf contracts for a given integration. That's a strategic call (schema governance, contract review process, codegen in CI) worth making explicitly rather than implicitly.spiral/roadrunner-bridge bundles it since 4.0); teams on Laravel/Symfony should price in integration work.with* client derivation (a pre-configured base client, then derived variants) means we can centralize client configuration in one place — a small but real reduction in configuration-drift risk and per-team boilerplate.grpc extension plus protoc with protoc-gen-php-grpc. That's a genuine platform decision: our base container image and CI runners need changes, and that cost should land on the platform/infra roadmap, not be discovered by a feature team mid-sprint.Consider it when:
roadrunner-bridge 4.0+), and the container resolves typed service interfaces directly.GrpcClient::create()), and we want to avoid adopting a heavier framework dependency just for transport..proto contracts and can generate PHP interfaces with protoc-gen-php-grpc in CI.1.0.0-alpha* / rc*, and the alpha notes explicitly caution that public signatures may change. Pin versions and keep the blast radius to one integration.grpc extension in dev, CI, and production images (or we're prepared to own that build work).Look elsewhere when:
ServiceClientProvider + GrpcClientConfig (i.e., leaning on Spiral's container), so a Laravel or Symfony team gets the standalone client only, with a lower feature ceiling.For executives (the one-paragraph version): This is a lightweight, MIT-licensed PHP client for gRPC — the protocol many of our backend services and vendors are moving to. It lets our PHP services call gRPC endpoints with typed contracts, built-in retries and timeouts, and multi-endpoint failover, using a small and clean API. The cost is low and the license is permissive; the main asks are a small platform investment (PHP's gRPC extension and protoc codegen must be in our images and CI) and a tolerance for a young library that is still pre-1.0. Recommendation: adopt for a bounded pilot on one integration where the protocol is already gRPC, not as a company-wide standard yet.
For engineering (the framing that matters):
GrpcClient::create() for standalone use; typed service access by generated interface; an interceptor pipeline for timeouts, retries/backoff, auth metadata, and connection rotation — all configured via DTOs and createConfig() factories rather than bespoke code. Immutable with* methods let us derive pre-configured clients safely, and interceptors are recreated per request and container-scoped, which is exactly the behavior we want under RoadRunner's long-running workers.grpc extension in every environment; protoc-gen-php-grpc in the build; a pinned version because the API is still 1.0.0-rc*.Ask: approval for a two-to-three week pilot on one existing gRPC integration, platform time to add the extension and codegen to CI/base images, and a review checkpoint before any second integration adopts it.
How can I help you explore Laravel packages today?