Web
Available nowStart instantly in your browser. Nothing to install, no account needed.
FREE • LOCAL-FIRST • 14 PROTOCOLS
Build, test and debug APIs, streams, brokers, databases and services from one powerful workspace.
Pick a protocol to see it in the Voyager workspace
1{2 "id": 42,3 "name": "Ada Lovelace",4 "email": "ada@example.com",5 "role": "admin",6 "active": true7} query GetUser($id: ID!) { user(id: $id) { name email }} 1{2 "data": {3 "user": { "name": "Ada Lovelace", "email": "ada@example.com" }4 }5} { "id": "42" } 1{2 "name": "Ada Lovelace",3 "plan": "PLAN_TEAM"4} SQL query
SELECT id, name, plan FROM accounts WHERE id = $1; Params $1 = {{accountId}}
| id | name | plan |
|---|---|---|
| 42 | Ada Lovelace | team |
To: qa@example.comSubject: Password reset test 1{2 "accepted": ["qa@example.com"],3 "rejected": [],4 "messageId": "<a1b2c3@example.com>"5} <soap:Body> <Add><a>5</a><b>7</b></Add></soap:Body> 1<soap:Body>2 <AddResponse>3 <AddResult>12</AddResult>4 </AddResponse>5</soap:Body> Illustrative preview of the Voyager workspace. Pick a protocol to see it in action.
Protocols
REST is where most API clients stop. Voyager keeps going — streams, brokers, mail servers, raw sockets and databases, all in the same request-and-response workflow.
Every method, every body type, every header — with environments and auth built in.
1{2 "id": 42,3 "name": "Ada Lovelace",4 "email": "ada@example.com",5 "role": "admin",6 "active": true7} What you can do
Where it runs
Queries and mutations with a JSON variables editor and operation names.
query GetUser($id: ID!) { user(id: $id) { name email }} 1{2 "data": {3 "user": { "name": "Ada Lovelace", "email": "ada@example.com" }4 }5} What you can do
Where it runs
Hand-tuned XML envelopes with SOAPAction headers for legacy services.
<soap:Body> <Add><a>5</a><b>7</b></Add></soap:Body> 1<soap:Body>2 <AddResponse>3 <AddResult>12</AddResult>4 </AddResponse>5</soap:Body> What you can do
Where it runs
Open a socket, send messages and watch the live message log.
What you can do
Where it runs
Namespaces, auth payloads and named events, without writing a client.
What you can do
Where it runs
Subscribe to an event stream and inspect every event, id and payload.
What you can do
Where it runs
Talk to brokers and devices: subscribe with wildcards, publish with QoS.
What you can do
Where it runs
In the browser, brokers must be reachable over ws:// or wss://.
Call services from a .proto file or discover them with server reflection.
{ "id": "42" } 1{2 "name": "Ada Lovelace",3 "plan": "PLAN_TEAM"4} What you can do
Where it runs
Available in the VS Code extension today.
Browse, upload, download and delete files, with optional FTPS.
What you can do
Where it runs
On the web, List and Delete only — through the Voyager relay, when signed in.
SSH file transfer with password or private-key authentication.
What you can do
Where it runs
On the web, List and Delete only — through the Voyager relay, when signed in.
Send real test emails through any SMTP server and see who accepted them.
To: qa@example.comSubject: Password reset test 1{2 "accepted": ["qa@example.com"],3 "rejected": [],4 "messageId": "<a1b2c3@example.com>"5} What you can do
Where it runs
On the web, sent through the Voyager relay when signed in.
Open a raw TCP connection, optionally over TLS, and exchange messages.
What you can do
Where it runs
On the web, connections run through the Voyager relay when signed in.
Fire datagrams at a host and see replies with their source address.
What you can do
Where it runs
On the web, datagrams run through the Voyager relay when signed in.
Run SQL with positional parameters and read results as a table.
SQL query
SELECT id, name, plan FROM accounts WHERE id = $1; Params $1 = {{accountId}}
| id | name | plan |
|---|---|---|
| 42 | Ada Lovelace | team |
What you can do
Where it runs
Available in the VS Code extension today.
Where each protocol runs: all 14 in VS Code, 12 on the web (five of them through the relay when you're signed in). Desktop is coming soon.
Full protocol matrixOne workspace
The same request builder, collections and environments wherever you open it. Start in the browser, keep going in your editor — sign in and your workspace follows you.
Start instantly in your browser. Nothing to install, no account needed.
Keep API testing next to your code — all 14 protocols, as native editor tabs.
A native, lightweight desktop workspace. No public installer yet.
One Voyager experience
Request builder
Method and URL up top, then params, headers, body, auth, scripts and tests — each in its own editor. No hand-written cURL strings to get wrong.
Add
1{2 "page": 2,3 "total": 87,4 "data": [{ "id": 21, "name": "Grace Hopper" }, …]5} 1{2 // created from the onboarding flow3 "name": "Ada Lovelace",4 "email": "ada@example.com",5} 1{ "id": 42, "name": "Ada Lovelace" } 1<profile>2 <timezone>Europe/London</timezone>3 <locale>en-GB</locale>4</profile> 1<profile updated="true" /> Add
1{ "id": 42, "role": "admin" } 1query Team($id: ID!) {2 team(id: $id) { name members { name } }3} 1{ "data": { "team": { "name": "Platform" } } } Add
No response body
Illustrative requests against example endpoints.
https://api.dev.example.com/users/7
https://api.staging.example.com/users/1024
https://api.example.com/users/42
Auth type
Token
Sent as
Authorization: Bearer ••••••••
Auth + environments
Write a request once, then point it at any environment. Variables resolve as you switch — secrets stay masked.
Scripts + tests
Every request can carry a pre-request script and a set of tests. Write plain JavaScript; see pass, fail and console output right beside the response.
1// Pre-request · runs before the request is sent2const requestId = "req-" + Math.random().toString(36).slice(2, 10);3variables.set("requestId", requestId);4console.log("Sending", request.name, "as", requestId); 1// Tests · run after the response arrives2test("status is 201", () => response.status === 201);3 4test("responds with JSON", () =>5 response.headers["content-type"].includes("application/json"));6 7const order = JSON.parse(response.bodyPreview);8test("order has an id", () => typeof order.id === "string");9test("quantity matches", () => order.quantity === 2); Console
› Sending Create order as req-8f3k2a9x
Pre-request scripts
Prepare data and set variables before the request goes out.
Post-response tests
Assert on status, headers and body with test(name, fn).
Sandboxed JavaScript
Runs in an isolated QuickJS runtime with a time limit — no access to your machine.
Console output
console.log output is captured next to your test results.
Import from anything
Bring your existing APIs with you. Drop in a Postman, Insomnia or Thunder Client export or an OpenAPI document — Voyager detects the format and rebuilds your collections, folders and environments.
Imported “Payments API” · Insomnia export
24 requests · 5 folders · 2 environments
Payments API
Charges
POSTCreate charge
GETGet charge
POSTCapture charge
Refunds
Webhooks
Sandbox, Live environments created
Paste a cURL command. Get a ready-to-run request.
Mock servers
Spin up a local mock server in seconds. Define routes, status codes, headers and response delays, and make responses dynamic with request data.
/users/:id{{params.id}}, {{query.page}}, {{headers.authorization}}VS Code + Desktop — not available in the web app
Routes
Status
201
Delay
0 ms
Content-Type
application/json
Response body
{ "id": "usr_{{query.seed}}", "created": true} Status
200
Delay
300 ms
Content-Type
application/json
Response body
{ "id": "{{params.id}}", "name": "Ada Lovelace", "locale": "{{query.locale}}"} Status
200
Delay
120 ms
Content-Type
application/json
Response body
[ { "sku": "VOY-001", "price": 49 }, { "sku": "VOY-002", "price": 99 }] Request log live
Code generation
Turn any REST request into ready-to-paste code — with your environment’s variables already resolved.
cURL · JavaScript · Node.js · Python · Java
Headers
Body · JSON
{ "sku": "VOY-001", "quantity": 2} Resolved against Production
terminal
1curl --request POST \2 --url 'https://api.example.com/v1/orders' \3 --header 'Authorization: Bearer eyJhbGciOi…' \4 --header 'Content-Type: application/json' \5 --data '{"sku":"VOY-001","quantity":2}' fetch.js
1const response = await fetch("https://api.example.com/v1/orders", {2 method: "POST",3 headers: {4 "Authorization": "Bearer eyJhbGciOi…",5 "Content-Type": "application/json",6 },7 body: "{\"sku\":\"VOY-001\",\"quantity\":2}",8}); axios.mjs
1import axios from 'axios';2 3const response = await axios.request({4 method: "POST",5 url: "https://api.example.com/v1/orders",6 params: {},7 headers: {8 "Authorization": "Bearer eyJhbGciOi…",9 "Content-Type": "application/json",10 },11 data: "{\"sku\":\"VOY-001\",\"quantity\":2}",12}); request.py
1import requests2 3response = requests.request(4 "POST",5 "https://api.example.com/v1/orders",6 headers={7 "Authorization": "Bearer eyJhbGciOi…",8 "Content-Type": "application/json",9 },10 data="{\"sku\":\"VOY-001\",\"quantity\":2}",11) Request.java
1import java.net.URI;2import java.net.http.HttpClient;3import java.net.http.HttpRequest;4import java.net.http.HttpResponse;5 6HttpClient client = HttpClient.newHttpClient();7HttpRequest request = HttpRequest.newBuilder()8 .uri(URI.create("https://api.example.com/v1/orders"))9 .header("Authorization", "Bearer eyJhbGciOi…")10 .header("Content-Type", "application/json")11 .method("POST", HttpRequest.BodyPublishers.ofString("{\"sku\":\"VOY-001\",\"quantity\":2}"))12 .build();13 14HttpResponse<String> response =15 client.send(request, HttpResponse.BodyHandlers.ofString());16System.out.println(response.body()); API documentation
Right-click a collection, choose Generate docs, and get a clean, self-contained HTML page you can share with anyone — no extra tooling.
Accounts API
Users
GETList users
GETGet user
POSTCreate user
Billing
Rename
New folder
Generate docs (HTML)
Export collection
Move to workspace…
accounts-api-docs.html
Accounts API
User and billing endpoints for the Acme platform.
Users
Get user
GET {{baseUrl}}/users/:id
Auth: Bearer token
Query parameters
| include | teams |
Headers
| Accept | application/json |
Create user
POST {{baseUrl}}/users
Body json
{ "name": "Ada Lovelace", "email": "ada@example.com" } Document your API in one click — available on every platform.
Everything included
Every feature below is available to every user, on day one, at no cost.
Method, URL, params, headers, body, auth, scripts and tests — each with its own editor, in tabs like your code.
Pretty, raw and preview modes in a Monaco viewer. Headers and parsed cookies, searchable.
Bearer, Basic, API key and OAuth 2.0 client credentials.
{{variables}} that resolve per environment, with secrets.
Pre-request scripts and assertions in sandboxed JavaScript.
Every send is logged. Reopen any past request in one click.
Postman, Insomnia, Thunder Client, OpenAPI and cURL in; JSON and cURL out.
cURL, JavaScript, Node.js, Python and Java.
Local routes with templates and delays.
One-click HTML docs from any collection.
Share, assign roles, follow activity.
Search requests and run actions without the mouse.
Send, save, search and toggle panels from the keyboard.
Light, dark or system. Side-by-side or stacked panels.
Keyboard-first
Send, save, search and jump anywhere without reaching for the mouse.
Requests
New REST request
Get user GET · Accounts API
Workspace
Toggle sidebar ⌘B
Toggle history
Mock servers
Keyboard shortcuts ⌘/
Environment
Switch to Staging
Appearance
Dark theme Active
Collaboration
Share workspaces and collections, organize people into teams, and follow every change — with roles that keep the right people in control. No seat pricing, ever.
Share “Payments API”
Collection · 24 requests
Illustration — names and activity are examples.
Shared workspaces
Invite people into a whole workspace.
Collection sharing
Share just one collection when that’s enough.
Teams
Owner, Admin and Member roles, one dashboard.
Admin · Editor · Viewer
Per-person or per-team access to each resource.
Invitations
Invite by email or link; resend or revoke anytime.
Activity feed
See what changed, who changed it, and when.
Notifications
In-app notifications with an unread count.
Shared with me
Everything others shared with you, in one place.
Resource links
Link a teammate straight to a request or collection.
Ownership transfer
Hand a collection or team to someone else.
Cloud sync
Your workspace on web, VS Code and desktop.
Secrets stay secret
Viewers never receive secret variable values.
Collaboration needs a free Voyager account. How sharing works
Local-first
Voyager works on your device first. The cloud is there when you want to sync or collaborate — never as the price of getting started.
Optional · with a free account
Cloud sync
Collaboration
Relay proxy
Pricing
$0
Forever
Every feature, every user.
14
protocols
5
import formats
5
code languages
4
auth methods
Voyager is community-supported rather than locked behind a subscription. If it saves you time, you can choose to support it from inside the app — every feature stays free either way.
Platforms
Two ways to start today, and a native desktop app on the way.
Start instantly in your browser.
Nothing to install. Open a tab and send your first request in seconds.
Keep API testing next to your code.
The most complete edition — every protocol, mock servers, real editor tabs.
A native desktop workspace.
A lightweight Tauri app for macOS, Windows and Linux.
Roadmap
Where Voyager is heading. These aren’t available yet — they’re labelled so you always know what ships today.
AI assistant
Natural language to requests, response explanations, test generation.
Scheduled runs
Run requests on a schedule.
Uptime & latency monitoring
Monitors with alerting.
CLI runner
voyager-cli for pipelines, with exit-code pass/fail.
GitHub Actions
Run your Voyager tests in CI.
Plugin marketplace
Signed, sandboxed third-party protocols and tools.
Desktop gRPC
gRPC in the native desktop app.
Desktop PostgreSQL
PostgreSQL in the native desktop app.
FAQ
Still curious? The fastest answer is to try it — no account needed.
Open VoyagerVoyager is a free, local-first API client. You can build, send and debug requests across 14 protocols — REST, GraphQL, SOAP, WebSocket, Socket.IO, Server-Sent Events, MQTT, FTP, SFTP, SMTP, TCP, UDP, gRPC and PostgreSQL — and organize them into workspaces, collections and environments.
Yes. There is no paid tier, no feature gating, no seat limit and no subscription. Voyager is community-supported: if it helps you, you can choose to support it, but every feature is available either way.
No. You can build and send requests without signing up, and your data is stored locally. A free account is optional — it adds cloud sync, sharing, teams and the relay that lets the web app reach FTP, SFTP, SMTP, TCP and UDP servers.
All 14 protocols are available in the VS Code extension. The web app runs REST, GraphQL, SOAP, WebSocket, Socket.IO, SSE and MQTT directly, plus FTP, SFTP, SMTP, TCP and UDP through Voyager’s relay when you’re signed in (FTP/SFTP are list and delete only on the web). gRPC and PostgreSQL currently need the VS Code extension.
Yes. Voyager imports Postman collections, Insomnia exports, Thunder Client collections and OpenAPI/Swagger documents — the format is detected automatically. You can also paste a cURL command to get a ready-to-run request.
Yes. The Voyager API Client extension is on the Visual Studio Code Marketplace. It is the most complete edition today: all 14 protocols, mock servers, and requests that open as native editor tabs.
Yes, by default. The web app stores your workspace in your browser, and the desktop app uses a local database. Requests from the web app go straight from your browser to the API first; only when the browser blocks a request (for example, CORS) and you’re signed in does Voyager retry it through its proxy. Cloud sync only happens if you sign in.
Yes, for free. With an account you can share workspaces and collections with people or teams using Admin, Editor and Viewer roles, create teams, invite members, follow an activity feed and get in-app notifications.
Yes. Create as many environments as you need, switch between them from the top bar, and reference values with {{variable}} syntax in URLs, headers, bodies and protocol settings. Variables can be marked secret, and secret values are hidden from viewers when an environment is shared.
Yes. Any collection can be turned into a standalone HTML documentation page in one click, covering each request’s method, URL, parameters, headers, authentication and body.
Yes, in the VS Code extension and the desktop app. Define routes with path parameters, status codes, headers, bodies and response delays, use templates like {{params.id}}, and watch incoming requests in a live log.
On the roadmap: an AI assistant, scheduled runs, uptime and latency monitoring, a CLI runner with GitHub Actions support, a plugin marketplace, and gRPC and PostgreSQL in the desktop app. None of these are available yet.
One workspace. Fourteen protocols. Zero cost.
No signup required. Also on VS Code