A more expressive universal gRPC client with REPL and CLI modes for API inspection and automation.
Evans is a feature-rich gRPC client that simplifies interaction with gRPC services. It provides both an interactive REPL mode for manual exploration and a CLI mode for scripting and automation, making it a versatile tool for developers and testers. It supports gRPC reflection, streaming RPCs, header management, and gRPC-Web compatibility.
Developers and testers working with gRPC services who need to manually inspect APIs, automate testing, or script interactions. It is particularly useful for those who require both interactive exploration and command-line automation in a single tool.
Developers choose Evans over alternatives because it combines an intuitive REPL with powerful auto-completion for easy exploration and a stateless CLI that follows UNIX philosophy for seamless scripting. Its support for gRPC reflection eliminates the need to manually specify proto files, and it offers enriched responses with headers, trailers, and status codes.
Evans: more expressive universal gRPC client
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The REPL mode offers powerful auto-completion for packages, services, and messages, making manual API exploration intuitive without memorizing commands, as demonstrated in the GIFs.
CLI mode follows UNIX philosophy, allowing input from stdin and files with JSON output for easy integration with tools like jq, enabling seamless automation, as shown in examples.
Supports gRPC reflection, enabling connection to servers without manually specifying proto files, simplifying setup and usage with the -r option.
Fully supports client, server, and bidirectional streaming RPCs with intuitive input handling, detailed in the usage sections for both modes.
Allows easy management of custom headers and displays enriched responses including headers, trailers, and status codes with the --enrich option, useful for debugging.
Bytes fields require base64 encoding, with deprecated fallbacks and warnings in the README, leading to potential confusion and compatibility issues.
The README states that TLS is not supported for gRPC-Web at the moment, restricting secure connections in browser-based scenarios.
While reflection is a strength, it becomes a weakness when servers don't have it enabled, forcing manual proto file specification which can be cumbersome.
Evans relies on custom headers for authentication, lacking built-in support for common protocols like OAuth or JWT, requiring additional setup.