Relay

Relay / Developer documentation

Relay for Windows

A free, open-source desktop API tester under Apache-2.0. The core workflow must work without an account, subscription, cloud workspace, backend integration, repository clone or consumer build step. Windows desktop development is a separate release track from Python/npm Relay. Existing native /relay/ integrations remain supported and their code-discovered endpoints remain read-only.

Product direction

Backend developers should open Relay, paste an address, add auth and send. The request editor sits above a wide response pane. Method colors, visible per-request auth, an always reachable Send/Cancel control, readable response text and predictable keyboard actions carry the interface. Inherit Relay's five themes and identity; avoid promotional UI, dashboard metrics and decorative panels. No fake collections, disabled placeholders or claims of feature parity.

The first supported target is Windows x64. ARM64 and other operating systems require separate consumer verification. Desktop release tags will use desktop/v0.1.0 rather than changing backend package versions. This document defines scope; no desktop release is published yet and there is no launch date.

Architecture

Electron with a React/TypeScript renderer reuses Relay's response renderer, exact JSON formatter, font and theme tokens. The main process owns network transport; a context-isolated, sandboxed renderer has only narrow execute/cancel/copy methods. Only bundled UI assets load through a custom protocol. Block navigation, popups, webviews and permissions. API HTML is displayed as text, never executed. Validate IPC sender/frame and every request payload. Preserve certificate verification and do not follow redirects implicitly. No cloud connection or telemetry is required.

Electron bundles the runtime in the distributed app. Developers build it here; end users should install and launch without Node, Python or a backend server. A portable development build is not a verified installer or signed release.

Milestones

M1: working desktop preview

Verification on 2026-11-02: eight transport tests and 100 shared web tests passed; TypeScript/Vite built successfully. The native development app returned separate user/admin responses and a real HTTPS response. The unpacked executable loaded its bundled UI and returned a real authenticated local response after a fresh launch. Packaging verification inspects the actual archive for its entry page, referenced assets and license notices; this caught and fixed an omitted entry page before sharing the preview. Windows CI builds and checks the unpacked artifact, but does not claim interactive or clean-machine installer verification.

M1 keeps requests, tokens and responses in memory only. No persistent collections, credential store, import/export or installer is claimed by this preview.

M2: local workspaces and credentials

M3: seamless migration and Relay integration

M4: daily-use depth

M5: Windows release

Free core and boundaries

Request execution, local collections/environments, essential auth, response inspection, checks and reviewed import/export belong to the free core. No account gate or artificial request quota. Hosted collaboration, OAuth browser flows, scripting/collection runners, GraphQL and WebSocket tooling need separate scope and verification; they do not block the first useful REST client.

Coordinate changes to shared web modules with backend releases. A desktop milestone must not silently delay backend 0.0.6 or publish its packages. Update checks only with observed evidence and keep an explicit list of unverified release gates.

Developer preview

pnpm install
pnpm --filter @relay/desktop runtime:install
pnpm --filter @relay/desktop test
pnpm --filter @relay/desktop build
pnpm --filter @relay/desktop start

Create an unpacked development app with pnpm --filter @relay/desktop package:dir. These commands are for contributors; the intended user flow is a downloaded Windows app. Requests have a 30-second timeout and 2 MiB body/response-preview limits. Redirects are displayed rather than followed. GET/HEAD bodies, ambient proxies, implicit cookie jars and persisted credentials are not supported by M1.