Proto RPC
February 11, 2026 · View on GitHub
Send gRPC requests to services defined in
.protofiles — directly from VS Code.
✨ Features
| Feature | Description |
|---|---|
| Service Discovery | Automatically scans the workspace for .proto files and lists every service & RPC method. |
| Payload Editor | JSON text area with immediate validation — edit request bodies before sending. |
| Custom Headers | Attach arbitrary key: value metadata (e.g. authorization: Bearer …). |
| Server Override | A project-level default address via settings, overridable per request in the UI. |
| Unary gRPC Calls | Sends requests through @grpc/grpc-js and displays the response inline. |
| Saved Requests | Persist frequently used payloads as a shareable JSON file committed to the repo. |
| Response History | Every call is logged to a configurable JSON file for debugging & comparison. |
🚀 Quick Start
# clone
git clone https://github.com/r-52/proto-rpc.git
cd proto-rpc
# install & build
make install build
# run tests
make test
Then press F5 in VS Code to launch the Extension Development Host.
Open the command palette (Cmd+Shift+P) → Proto RPC: Open Client.
⚙️ Extension Settings
| Setting | Default | Description |
|---|---|---|
protoRpc.serverAddress | localhost:50051 | Default gRPC server address (host:port). |
protoRpc.savedRequestsPath | .proto-rpc/saved-requests.json | Workspace-relative path to saved requests. |
protoRpc.historyPath | .proto-rpc/history.json | Workspace-relative path to response history. |
Settings are configured in .vscode/settings.json or VS Code's Settings UI.
🛠️ Development
Prerequisites
- Node.js ≥ 18
- npm ≥ 9
Makefile Targets
| Target | Description |
|---|---|
make install | Install npm dependencies |
make build | Compile TypeScript → dist/ |
make watch | Compile in watch mode |
make test | Build + run unit tests (mocha) |
make lint | Lint sources with ESLint |
make clean | Remove dist/ and .vsix files |
make package | Build + package into a .vsix |
make publish | Build + publish to the VS Code Marketplace |
Project Structure
src/
├── extension.ts Activation & command registration
├── protoRpcPanel.ts Webview panel lifecycle & message handling
├── protoParser.ts .proto file discovery & regex-based parsing
├── grpcClient.ts Unary gRPC request logic
├── storage.ts Read/write saved requests & history JSON
├── utils.ts Workspace helpers
└── test/
└── protoRpc.test.ts Unit tests (mocha)
media/
├── main.js Webview UI logic
├── styles.css Webview styles (VS Code theme variables)
├── icon.svg Extension icon (source)
└── icon.png Extension icon (256 × 256)
📦 Packaging & Publishing
# Package into a .vsix
make package
# Publish (requires `npx vsce login <publisher>` first)
make publish