gRPCurl query builder from plain-text sheets havily inspired by restclient.el
- Install gRPCurl
- Clone repository to your local directory
- Add following configuration in your
init.elor.emacsfile
(use-package grpclient
:ensure nil
:load-path "~/path/to/grpclient.el/"
:init
(add-to-list 'auto-mode-alist '("\\.grpc\\'" . grpclient-mode)))- Check example file
Insert complete gRPC requests using server reflection. Uses
standard completing-read (works with consult, vertico, icomplete, fido, ido, helm, ivy).
Call grpclient-complete (C-c C-c in grpclient-mode) or M-x.
It prompts for a server address and method name, then inserts:
# Call SayHello
GRPC grpcb.in:9000 hello.HelloService/SayHello
{<message template>}
| Command | Binding | Description |
|---|---|---|
grpclient-complete | C-c C-c | Insert gRPC request at point |
grpclient-refresh-cache | M-x <cmd> | Force-refetch reflection data |
To test the Emacs mode, you can start a local Python gRPC server serving both Proto2 and Proto3 examples.
The easiest way to start the server is to use the provided shell script. It will automatically create a virtual environment, install dependencies, compile the Protocol Buffers, and start the server.
./examples/start_server.shThe server will start on port 9000 with gRPC reflection enabled, making it easy to query using grpcurl and grpclient-mode.
| kdb | function |
|---|---|
| C-c C-v | grpclient-send-current |
| C-c C-u | grpclient-copy-grpcurl-to-clipboard |
| C-c C-l | grpclient-describe |
| C-c C-c | grpclient-complete |
| <tab> | grpclient-toggle-pretty-body |

