Protide is a native desktop API testing tool built with Rust and GPUI - Zed's GPU-accelerated UI framework. It supports HTTP, GraphQL, WebSocket, gRPC, tRPC, and Socket.IO from a single interface.
It ships with a language server (protide-lsp) for .http files, an MCP server for AI tool integration, and a Zed extension with tree-sitter syntax highlighting.
cargo install --git https://github.com/dreygur/protide protide-lspProtocols
- HTTP/HTTPS - GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- GraphQL - query/variables editor with syntax highlighting
- WebSocket - connect/disconnect, send messages, history
- gRPC - proto loading, service/method selection, all streaming types
- tRPC - query and mutation procedures
- Socket.IO - full event support
Request Editor
- URL input with method selector
- Headers, query params, body (JSON, Raw, XML, Form, Binary)
- Authentication - Bearer, Basic, API Key (header or query)
- Environment variables with
{{variable}}substitution - Code generation - cURL, Python, JavaScript, Go, Rust
Collections & Storage
- File-based collections (folders = collections,
.httpfiles = requests) - Request history panel
- Import: cURL, Postman, Bruno, OpenAPI/Swagger
- Export: Markdown
Scripting & Testing
- JavaScript pre/post-request scripts (via rquickjs)
- Test assertions with
expect()API - Request chaining via JSONPath +
# @setannotations
Mock Server
- Local HTTP mock server with configurable routes
- Record/proxy mode - forwards to real server, captures responses as static routes
Collaboration
- CRDT-based local-first sync (LWW registers, Lamport timestamps)
- P2P via libp2p - mDNS discovery + Gossipsub
- Bring-your-own-backend file sync (Dropbox, Google Drive, GitHub)
- PAKE secure pairing for LAN peers
Tooling
- LSP (
protide-lsp) - hover, completion, diagnostics, formatting, semantic tokens, rename, code actions for.httpfiles - MCP server (
protide-mcp) - JSON-RPC 2.0 over stdio, exposessend_requesttool for AI assistants - Zed extension - syntax highlighting with tree-sitter, LSP integration
git clone https://github.com/dreygur/protide
cd protide
cargo build --release
./target/release/protideLinux dependencies:
sudo apt-get install -y \
libgtk-3-dev libwebkit2gtk-4.1-dev \
libxkbcommon-dev libxkbcommon-x11-dev \
libwayland-dev libx11-dev \
libxcb-shm0-dev libxcb-xfixes0-dev libxcb-shape0-dev \
libasound2-dev libfontconfig-dev libudev-dev \
libegl1-mesa-dev mesa-common-devcargo install --git https://github.com/dreygur/protide protide-lspZed: Install the Protide HTTP dev extension from extensions/zed/.
### List posts
# @name list-posts
# @description Fetch all posts from the API
# @protocol http
GET {{base_url}}/posts
Authorization: Bearer {{token}}
> {%
pm.test("Status is 200", () => {
expect(response.status).toBe(200);
});
%}| Annotation | Description |
|---|---|
# @name |
Request name (used for chaining) |
# @description |
Human-readable description |
# @protocol |
Protocol hint (http, graphql, ws, grpc) |
# @set var = $.path |
Extract response value into variable |
# @depends name |
Declare dependency on another named request |
# @tests |
Inline test block |
MIT

