Mock gRPC, Connect, and REST from Protobuf and OpenAPI.
FauxRPC turns .proto files, Protobuf descriptors, and OpenAPI specs into a working mock server and intercepting proxy. Inject test scenarios, debug live service traffic, or fake unimplemented endpoints.
Real-time request inspector and stub manager.
Pass --dashboard to inspect live traffic across every protocol, browse loaded schemas, and turn captured requests into deterministic YAML stubs.



One server speaks gRPC, gRPC-Web, Connect, and REST.
Call the exact same mock service from backend gRPC clients, browser Connect or gRPC-Web apps, and standard HTTP/REST tools using OpenAPI specs or google.api.http annotations.
# Call with fauxrpc curl (auto-generates request payloads)
$ fauxrpc curl --http2-prior-knowledge examples.demo.DemoService/GetItem
# Call with buf curl over Connect or gRPC-Web
$ buf curl --protocol=grpcweb --http2-prior-knowledge \
http://127.0.0.1:6660/examples.demo.DemoService/GetItem
# Call OpenAPI or transcoded google.api.http routes with curl
$ curl http://127.0.0.1:6660/v1/items/550e8400-e29b-41d4-a716-446655440000stubs:
- id: vip-greeting
target: examples.protovalidate.GreetService/Greet
active_if: 'req.name == "Ada Lovelace"'
cel_content: '{"greeting": "Welcome back, " + req.name + "!"}'
- id: rate-limited
target: examples.demo.DemoService/GetItem
active_if: 'req.id == "ffffffff-ffff-ffff-ffff-ffffffffffff"'
error_code: 8
error_message: "rate limit exceeded"Pin specific responses with YAML and CEL rules.
Need deterministic responses or error states for tests? Write declarative stubs that match request fields with Common Expression Language (active_if), compute dynamic fields, or simulate gRPC and HTTP error codes.
Proxy live services, record stubs, or load schemas from anywhere.
Place FauxRPC in front of an upstream service with --proxy-to to inspect calls, inject stubbed test scenarios, record real responses with --record-dir, and automatically fake UNIMPLEMENTED endpoints. Or start standalone from local .proto files, BSR modules, server reflection, and OpenAPI specs.
# Proxy a live service, inject stubs, and record real traffic
$ fauxrpc run --proxy-to=127.0.0.1:8080 --record-dir=stubs/ --dashboard
# Serve directly from the Buf Schema Registry
$ fauxrpc run --schema=buf.build/connectrpc/eliza --dashboard
# Serve an OpenAPI 3.0 specification
$ fauxrpc run --schema=openapi.yaml --dashboard