Native macOS app. Built with SwiftUI
Relay app icon

The REST client
your Mac deserves

Fast, focused, and beautiful. Relay strips away the bloat and delivers only what matters: crafting requests, reading responses, and organizing collections.

Free · macOS 14 Sonoma or later

Relay, main app window with collections sidebar, URL bar, and request/response panels

Features

Everything you need.
Nothing you don't.

Relay does one thing exceptionally well. HTTP requests and collections. No bloat, no learning curve, no subscription.

Every HTTP method

Support for GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, TRACE, and CONNECT. The URL bar lives in the title bar with a one-click method selector, and you can cycle through methods with keyboard shortcuts. Configure query parameters, headers, auth, and request bodies all from tabbed panels below.

URL bar with method selector and request configuration

Rich response rendering

Responses render automatically based on content type. JSON gets syntax highlighting and an interactive tree view with collapsible nodes and inline search. XML is pretty-printed, HTML renders in a sandboxed preview, and PDF, images, and Office documents all display natively. Large responses over 10 MB stream with a save-to-file option.

JSON response with syntax highlighting and tree view

Collection management

Group requests into collections with nested folders and drag-and-drop reordering. Each request is stored as an individual JSON file on disk, so your collections are easy to back up, version control with git, or share with a team. Pin frequently used requests to the Working Set and star collections as Favorites for quick access.

Sidebar with collections, folders, and request tree

Built-in auth

Configure authentication per request with Bearer tokens, Basic auth (username and password), or custom Authorization header values. Auth fields support {{variable}} interpolation, so you can store tokens as environment or collection variables and swap them by switching environments. No extra plugins or configuration files needed.

Auth configuration panel: Bearer, Basic, Custom

Collection variables

Define {{variables}} at the global, collection, folder, or environment level and use them anywhere in your requests. Variables resolve with clear precedence and are color-coded inline so you always know where a value comes from. Type {{ to get autocomplete suggestions. Secret variables are stored in macOS Keychain, never written to disk as plaintext.

Variable editor with {{syntax}} highlighting and autocomplete

Network console

A built-in activity log that records every request and response with timestamps, HTTP method badges, status codes, response times, and body sizes. Click any entry to expand and see the full request and response headers and body preview. Proxied requests are flagged, and errors show details inline. Toggle it with a keyboard shortcut and resize the panel by dragging.

Console panel with request log entries and timing

All 36 features

36 features across 6 categories

Core10

Collections & Folders

Nested folder hierarchies with drag-and-drop reordering and inline rename

HTTP Methods

GET, POST, PUT, DELETE, PATCH plus HEAD, OPTIONS, TRACE, CONNECT via toggle

Query Params & Headers

Key-value editors with toggleable rows, bulk edit, header autocomplete, and bidirectional URL sync

Authentication

Bearer token, Basic auth, and custom headers with {{variable}} substitution

Request Body

None, JSON, multipart form-data, and raw file upload with drag-and-drop

Response Viewer

JSON tree + text, HTML, XML, PDF, images, Office docs, hex dump, and large file handling

Code Generation

14 generator variants across cURL, Python, JavaScript, Swift, Go, Ruby, PHP, and Java

Import

Postman v2.1, Insomnia v4, OpenAPI 3.x / Swagger 2.0, and cURL commands

CloudKit Sync

Sync collections across all your Macs via iCloud with conflict resolution

Default Headers

Configure headers in Preferences that auto-populate every new request

Variables & Environments7

Global Variables

Define {{variables}} available across all collections

Collection Variables

Scoped variables that override globals within a collection

Environments

Named variable sets (Dev, Staging, Prod) with one-click toolbar switching

Three-Color Highlighting

Orange for collection, teal for environment, blue for global, red for unresolved

Smart Autocomplete

{{ triggers grouped suggestions by scope in URL bar, headers, auth, and body

Secret Variables

Values stored in macOS Keychain rather than on disk

Variable Tooltips

Hover over {{var}} to see its resolved value and source tier

Testing & Extraction4

Lightweight Assertions

Declarative tests for status code, headers, JSON path, body contains, and response time

Response Value Extraction

Pull JSON values into collection, environment, or global variables using dot-notation paths

Response History

Last 15 responses per request stored on disk with timeline browser

Response Diff

Myers algorithm-powered line-by-line diff with colored additions and removals

Network & Security4

Proxy Settings

HTTP, HTTPS, and SOCKS5 proxy with authentication and bypass lists

Client Certificates (mTLS)

PKCS12 import with Keychain-backed passwords, global or per-collection

Follow Redirects Toggle

Per-request control over 3xx redirect behavior

Cookie Jar

Auto-capture Set-Cookie headers and replay cookies, scoped per collection

Session Management5

Pinned Tabs

Pin frequently used requests that persist across app restarts

Recent Sessions

Auto-managed list of recently opened requests

Favorites

Star requests from any collection for quick sidebar access

Dirty State Tracking

Visual indicator for unsaved changes with Save/Discard/Cancel on close

Session Persistence

Full app state restored on launch: tabs, responses, variables, and environments

Developer Experience6

Response Body Search

Cmd+F across text and JSON tree views with match highlighting

cURL Import

Paste cURL commands with full parsing of quoted strings, flags, and continuations

Inspector Panel

Timing breakdown (DNS, TCP, TLS, TTFB), response headers, cookies, and cURL preview

Console

Per-request log with timestamp, method, URL, status, and elapsed time

Keyboard Shortcuts

22 commands for requests, navigation, view toggles, clipboard, and more

Request Cancellation

Cancel in-flight requests instantly via the Send/Cancel button

Code Generation

Export to any language

Turn any request into production-ready code with a single click. 8 languages, 14 library variants, live preview in a floating panel that stays out of your way.

cURL
Python+1
JavaScript+2
Swift
Go
Ruby+1
PHP+1
Java+1
Floating code generation panel with syntax-highlighted output
Import preview showing collections, folders, and requests to be imported

Import

Switch in seconds

Bring your existing work with you. Import collections from Postman, Insomnia, or OpenAPI specs, including variables, auth configurations, and folder structure.

Postman

v2.1 collection format with variables

Insomnia

v4 JSON/YAML with nested groups

OpenAPI

3.x and Swagger 2.0, JSON or YAML

URL Import

Paste a URL to fetch and auto-detect format

iCloud Sync

Your collections, everywhere

Opt-in CloudKit sync keeps your collections and requests in your private iCloud database. Secret variables stay in Keychain. Only names sync, never values.

Private CloudKit

Your data stays in your private iCloud database. No third-party servers, ever.

Keychain secrets

API keys and tokens stored in macOS Keychain. Never written to disk or synced to iCloud.

Delta sync

Only changed records sync. Fast, efficient, and works with intermittent connectivity.

Performance

Built for speed

Native Swift + SwiftUI means no Electron, no web views, no garbage collection pauses. Just raw performance.

< 500ms

App launch

Cold start to ready

< 50ms

Request overhead

Time added by Relay

< 16ms

Tab switch

Single frame render

< 100MB

Idle memory

With 5 tabs open

Keyboard First

17 shortcuts. Zero friction.

Every action has a keyboard shortcut. Keep your hands on the keyboard and your flow uninterrupted.

Send request
New tab
T
Close tab
W
Focus URL bar
L
Generate code
K
Save request
S
Import collection
I
Switch config tab
1-4

Why Relay

Less is more

Relay is for developers who are tired of bloated tools that try to do everything. Here's what makes it different.

What Relay does

  • HTTP requests: GET, POST, PUT, DELETE, PATCH
  • Auth helpers: Bearer, Basic, custom headers
  • JSON editor with syntax highlighting
  • Response rendering: JSON, XML, HTML, PDF, images
  • Tab-based interface with scratch tabs
  • Folder-organized collections on disk
  • Code generation in 8 languages
  • Import from Postman, Insomnia, OpenAPI
  • Collection variables with {{syntax}}
  • iCloud sync via private CloudKit
  • Keychain storage for secrets
  • Full keyboard shortcut coverage

Intentionally excluded

  • Test scripts, automation, or CI/CD
  • GraphQL, WebSocket, gRPC protocols
  • Mock servers or API docs generation
  • Plugin systems or marketplace
  • Team collaboration or sharing
  • Subscription or account required

These aren't missing features. They're deliberate design choices. Relay stays fast and simple by doing fewer things better.

Free to use

No subscription, no account, no trial timer. Just download and start sending requests.

Relay

Full access to everything. No tiers, no lock-ins.

Free
Download for macOS

macOS 14+ · Apple Silicon + Intel · Signed + notarized

  • Unlimited requests & collections
  • 9 HTTP methods with full body options
  • Bearer, Basic, and custom auth
  • Variables & environments with autocomplete
  • Code generation in 8 languages
  • Import from Postman, Insomnia, OpenAPI, cURL
  • JSON tree viewer, XML, HTML, PDF, images
  • Response history & diff
  • Extractors & assertions
  • Cookie jar per collection
  • Proxy (HTTP/HTTPS/SOCKS5) & mTLS
  • Automatic updates via Sparkle
  • All future updates included
Relay

Ready to try Relay?

Download and start sending requests in seconds. Free to use, no account required.

Download for macOS
macOS 14+Apple Silicon + IntelFree