Getman is a local-first, offline-first, open-source API client. It
speaks HTTP/1.1, HTTP/2 and HTTP/3, gRPC, WebSocket, Server-Sent Events
and Socket.IO, and it is Postman compatible: it opens Postman
collections and runs pm scripts. Use it as a desktop app, in your
browser, in the terminal, or from the CLI in CI. Your requests
are plain YAML files in your repository.
No account. No cloud. No telemetry.
Download · Documentation · Releases · Moving from Postman
getman init --example # a workspace with example requests
getman # open it in your browser
getman tui # or in the terminal
getman run # or run every request, for CI- No account, ever. Saving requests, environments, variables, scripts, the runner and history all work offline. Postman needs you signed in to a workspace to save to collections or use environments.
- Your requests live with your code. One short YAML file per request,
reviewed in pull requests and versioned with the API it calls. Tokens
and personal values go in git-ignored
*.local.yamlfiles, so the rest is always safe to commit. - Free for any team. You share a workspace by committing it. There are no seats, and no paid plan for teams to collaborate.
- Desktop, browser, terminal and CI. A native desktop app that updates itself from signed releases, a browser UI, a terminal UI for SSH sessions, and a CI runner, all from the same code. The command line is one small file with no runtime to install; see Fast.
- Every protocol you test. HTTP/1.1, HTTP/2 and HTTP/3 (QUIC), gRPC
from
.protofiles or server reflection, WebSocket, Server-Sent Events and Socket.IO, side by side in one workspace. - Tests without code. Checks such as
status == 200andjson.data[0].id existsare lines in the request file. Scripts are there when you need them. - Postman compatible.
getman importreads Postman collections, environments and globals, andgetman exportwrites them back.pmis an alias of Getman'sgmscript API, so most scripts run unchanged. - Mocks and AI agents, locally.
getman mockserves saved responses as a mock API, andgetman mcplets AI agents use your requests over the Model Context Protocol, with secrets masked. - Open source, under MIT or Apache-2.0.
Postman still does more: MQTT, hosted mocks and monitors, and real-time collaboration. The full comparison links Postman's own pages for every claim and says when to stay.
Measured on Windows 11 x64 with the 0.3.0 release files, on 28 October 2026:
getman command, browser UI included |
9.5 MiB to download, 25.6 MiB on disk |
getman start-up |
7 ms |
| Browser UI server, idle | 2 MiB of memory |
Desktop app setup, getman command included |
15.2 MiB |
| Desktop app, launch to a loaded window | 0.45 s, 0.8 s the first time |
| Desktop app, idle | 94 MiB of memory: 5 MiB is Getman, the rest the system's WebView2 |
Memory is the private working set, which Task Manager shows. Numbers vary with the system and the workspace.
Getman in its own window, with the getman command included:
| System | Download |
|---|---|
| Windows x64 | Setup · MSI · Portable zip |
| Windows ARM64 | Setup · MSI · Portable zip |
| macOS (Apple silicon and Intel) | Disk image |
| Linux x86_64 | AppImage · .deb · .rpm |
| Linux ARM64 | AppImage · .deb · .rpm |
- Windows: run the setup. It installs for your user, without
administrator rights, and adds
getmanto yourPATH. If Windows says "Windows protected your PC", choose More info, then Run anyway. - macOS: open the disk image and drag Getman to Applications. The
first time, macOS cannot verify it: open System Settings › Privacy &
Security and click Open Anyway. Settings › About in the app
installs the
getmancommand. - Linux:
chmod +xthe AppImage and run it, or install a package withsudo apt install ./getman-desktop_amd64.deborsudo dnf install ./getman-desktop.x86_64.rpm, which also putsgetmanin/usr/bin.
The app checks once a day for a new version, which you can turn off. See Desktop app for the details.
Linux and macOS:
curl -fsSL https://fzn0x.github.io/getman/install.sh | shWindows (PowerShell):
irm https://fzn0x.github.io/getman/install.ps1 | iexThe scripts download the latest release for your system, verify its
SHA-256 checksum and install getman for your user only. You can also
download an archive from the releases page,
or build from source.
api/
getman.yaml settings for every request
environments/
staging.yaml shared values
staging.local.yaml your secrets (git-ignored)
orders/
_folder.yaml auth, headers and scripts for the folder
create-order.yaml
# api/orders/create-order.yaml
name: Create order
method: POST
url: "{{baseUrl}}/orders"
body:
type: json
content: |
{ "sku": "BOOK-42", "quantity": 1 }
checks:
- status == 201
- json.id exists
- time < 500
captures:
orderId: json.idFields at their defaults are not written, so diffs stay small. Folders and the workspace pass headers, authentication, variables, scripts and settings down to the requests inside them. See Workspaces.
Protocols
- HTTP/1.1, HTTP/2 and HTTP/3. Choose the version per request or folder, or let Getman negotiate it; a hint shows when a server offers HTTP/3. JSON, XML, text, forms, multipart with files, binary and GraphQL bodies. See HTTP and connections.
- gRPC. Unary, server, client and bidirectional streaming calls, with
schemas from
.protofiles in your workspace or from server reflection, metadata, deadlines, TLS, decoded status details, and one request per method generated from a service. See gRPC. - WebSocket, Server-Sent Events and Socket.IO. Connect, send saved or composed messages, and watch a live, searchable log. See WebSocket, SSE and Socket.IO.
Authentication
- Basic, Bearer, API key, Digest (MD5, SHA-256, SHA-512-256), OAuth 2.0 (authorization code with PKCE, implicit, client credentials, password, refresh tokens, sign-in in your browser), OAuth 1.0a, AWS Signature Version 4, JWT, Atlassian ASAP, Hawk and Akamai EdgeGrid, inherited from folders. See Authentication.
Connections
- Proxies (HTTP, HTTPS, SOCKS5), client certificates (PEM or PKCS#12), extra CA certificates, and a cookie jar kept between runs that you can edit.
- Where each response's time went: DNS, connect and TLS, first byte and download, with the TLS version and the server's certificate.
- Cancel any request while it is on its way.
Apps
- A desktop app for Windows, macOS and Linux, on x64 and ARM64, that updates itself from signed releases. See Desktop app.
- A keyboard-first browser UI. Tabs and drafts that survive a restart,
a command palette (Ctrl K), send with
Ctrl Enter,
{{variables}}highlighted and completed everywhere with their values on hover, a JSON path filter and hex view on responses, history that keeps each response, a trash with undo, and light and dark themes. See Browser UI. - A terminal UI for when there is no window at all.
Tests and automation
- Checks and captures without code, and scripts in an embedded
JavaScript engine: an expressive assertion library, JSON Schema,
sendRequest, crypto helpers and run control. - A runner with iterations, CSV and JSON data files, delays and bail,
in the UI and as
getman run, with CLI, JSON, JUnit, HTML, CSV and Excel reports. The UI keeps the last 20 runs. - Variables with clear rules. Globals, workspace, environment,
folder, request, data and local scopes, more than 30 dynamic values
such as
{{$uuid}}, and secrets fromGETMAN_*environment variables. - Examples and mocks. Save responses as examples on a request and
serve them with
getman mock. See Examples and mocks. - AI agents.
getman mcpserves the workspace over the Model Context Protocol to Claude Code, Claude Desktop and other agents. See AI agents.
Import and export
- Import Postman collections, environments and globals, OpenAPI 3 and Swagger 2, HAR files from your browser, Insomnia, Hoppscotch and Bruno collections, and cURL commands. Drop files onto the window.
- Export folders as Postman collections or OpenAPI 3.1, environments
as Postman environments, and any request as code: cURL, HTTPie, Wget,
PowerShell, raw HTTP, fetch, axios, Node.js, Python, Go, Rust, Java,
Kotlin, C#, Swift, PHP, Ruby and Dart, or grpcurl for gRPC, with
{{variables}}kept so no token leaks into a snippet.
# .github/workflows/api.yml
- name: Install Getman
run: |
curl -fsSL https://fzn0x.github.io/getman/install.sh | sh
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Run the API checks
run: getman run -w api -e staging -r cli -r junit=getman.xml
env:
GETMAN_API_TOKEN: ${{ secrets.API_TOKEN }}Orders API with the staging environment: 3 requests
✓ POST Create order 201 Created 182 ms · 96 B
✗ GET Get order 404 Not Found 41 ms · 23 B
✗ status == 200
status is 404; expected == 200
✓ DELETE Archive order 204 No Content 37 ms · 0 B
getman run exits with 1 when a request fails, and 2 when it cannot
start. See Running in CI.
The browser UI is served by Getman on 127.0.0.1 only. The server
refuses requests addressed to other host names (DNS rebinding) or sent
from other web pages, and every API call needs a random token that only
the link from your terminal carries. Requests can upload files only from
inside the workspace, and {{$env.…}} reads only variables that start
with GETMAN_. The desktop app's daily update check is the only request
Getman makes on its own, and you can turn it off. See
Security and privacy, and SECURITY.md
to report a vulnerability.
- Getting started · Desktop app · Why Getman, and moving over from Postman
- Workspaces · Variables and environments · Authentication · Checks and captures · Scripts
- HTTP and connections · WebSocket, SSE and Socket.IO · gRPC
- Running in CI · Examples and mocks · AI agents · Import and export
- Browser UI · Terminal UI · Command line · Security and privacy
You need Rust 1.88 or newer and Node.js 22.12 or newer. The browser UI is built first, because it is embedded in the binary.
git clone https://github.com/fzn0x/getman.git
cd getman/web
npm ci
npm run build
cd ..
cargo install --path crates/getmanThe desktop app needs Rust 1.90 or newer and, on Linux, WebKitGTK; run
it with cargo run -p getman-desktop. CONTRIBUTING.md
explains building its installers.
| Path | |
|---|---|
crates/getman-core |
The engine: workspace files, variables, HTTP, gRPC, WebSocket, SSE and Socket.IO, auth, checks, scripts, the runner, import and export |
crates/getman |
The getman command: command line, local server, terminal UI, reporters, mock server and MCP server |
crates/getman-desktop |
The desktop app, with Tauri, and its updates |
web |
The browser UI: Svelte 5, TypeScript and CodeMirror 6 |
site |
This documentation as a website, published to GitHub Pages |
docs |
The documentation pages |
cargo test --workspace
cargo clippy --workspace --all-targets -- --deny warnings
cd web && npm run check && npm testCI runs these on Linux, Windows and macOS, smoke-tests the command line, and checks the minimum supported Rust version. See CONTRIBUTING.md. What changed in each release is in CHANGELOG.md, and everyone taking part follows the Code of Conduct.
Licensed under either of the Apache License, Version 2.0
or the MIT license, at your option. Contributions are
accepted under the same terms. The Departure Mono font in web/public/fonts
is under the SIL Open Font License; see its licence file there.
Postman is a trademark of Postman, Inc. Getman is not affiliated with or endorsed by Postman.