Skip to main content
Glama

CI Release Sponsor

Gostman: a POST request with a JSON body returning 201 Created, with checks passing

Save a request once and use it three ways: send it from the app, check it on every pull request with gostman run, and let a coding agent call it through gostman mcp without seeing your secrets. Requests, collections and environments are plain files on your machine, and there is nothing to sign in to. New here? The tutorial builds a tested collection step by step, and the documentation covers every feature.

Gostman is a native desktop application built with Go and Wails, with the same interface in the browser at gostman.com.

Why not Bruno or Postman?

Both are good tools. Gostman is for people who want the paid-tier workflow without a paid tier or an account.

  • Nothing to sign in to. Collections are plain YAML files in a folder you can commit. The desktop app and the browser version both work without an account.

  • No telemetry. No analytics or crash reporting in the apps or the command line; they contact only the hosts you send to and the services you set up. Only the home page at gostman.com counts visits, without cookies. What Gostman connects to lists every network call.

  • No tiers. Data-driven runs, parallel runs, HTML reports, secret managers (Vault, AWS, Azure, Google Cloud, 1Password, Bitwarden, Bitwarden Secrets Manager, KeePassXC), the Git panel and any number of collections are all in the download. Bruno documents several of these under its Pro and Ultimate plans, and Postman lists custom data files in the Collection Runner on its paid plans.

  • Sharing without Git. Send a folder to a teammate as an encrypted link or file that is built on your machine and never uploaded.

  • More in the same download. Load testing, Socket.IO, MQTT, SignalR, GraphQL subscriptions, MCP servers, raw TCP and UDP, NATS, importers for Postman, Bruno, Insomnia, Hoppscotch, Thunder Client, HTTPie, Hurl and Firecamp, scheduled runs with a history, snapshot and negative tests, OpenAPI coverage, spec diff and fuzzing, traffic capture with rules and held calls, a secret scanner and a mock server, a VS Code extension, plus a command line that is one binary with no Node.js to install.

Prices and plans change, so check their pages before you decide. Gostman has no accounts, so it has no hosted collaboration, SSO or cloud monitors. What is free in Gostman compares the paid features of Postman, Bruno and Insomnia with Gostman. Moving from Postman, Bruno or Insomnia? Coming from Postman, Coming from Bruno and Coming from Insomnia cover importing a collection, its scripts and the matching gostman run flags.

Will Gostman add a paid tier?

Gostman has no paid tier, no account and no licence key, and every feature is in the free download. It is released under the MIT licence, so the published code stays free to use, change and fork whatever happens to the project.

Related MCP server: lunge

Quick start

  • Browser: open gostman.com/web, paste a URL and press Send. Requests go through a hosted proxy; run gostman relay to use your own.

  • Desktop: download the installer from Install and open it.

  • Command line: send a request, or run a collection you saved to a folder in the app.

go install github.com/kunalgoesbyken/gostman/cmd/gostman@latest
gostman send GET https://example.com -H 'Accept: text/html'
gostman run path/to/collection

Try a working collection

The examples folder holds collections that call public test APIs, so they run as soon as you clone the repository:

git clone https://github.com/kunalgoesbyken/gostman && cd gostman
gostman run examples/todo-api --env Public
PASS  GET      Todos/List todos  200 OK  99 ms  3/3 checks
PASS  GET      Todos/Get one todo  200 OK  13 ms  3/3 checks
PASS  POST     Todos/Create a todo  201 Created  286 ms  3/3 checks

Requests  3 passed
Checks    9 passed
Duration  412ms

Open the same folder in the desktop app with Open folder to see the requests, the checks and the variable passed from one request to the next.

Learn

Features

  • Protocols: REST, GraphQL (schema browser), gRPC (reflection or .proto), WebSocket, Socket.IO, MQTT over WebSocket, SignalR, GraphQL subscriptions, Server-Sent Events, SOAP, MCP servers, and raw TCP and UDP and NATS (desktop), over HTTP or, on the desktop, as a local command (stdio).

  • Auth: Basic, Bearer, API key, OAuth 2.0 (with PKCE and automatic renewal), OAuth 1, Digest, AWS SigV4, NTLM, Akamai EdgeGrid, JWT Bearer, Atlassian ASAP and Hawk.

  • Workflow: collections with nested folders, environments and variables, extraction rules to chain requests, a cookie jar, history, earlier responses with a side-by-side compare, and a command palette.

  • Checks: assertions plus pre-request and post-response scripts with test() and expect() in a sandbox, and snapshot checks, and a collection runner with CSV, JSON or XLSX data files, parallel runs and HTML, JUnit and JSON reports.

  • Scheduled runs: gostman run --every and the Monitors dialog repeat a run, keep a history (gostman history) and post to a webhook when it starts failing.

  • Local load testing with gostman load: latency percentiles, thresholds and staged ramps.

  • API testing from a spec: gostman negative sends altered copies of saved requests, gostman fuzz sends schema-derived inputs for every operation of an OpenAPI document, gostman diff lists breaking changes between two specs, and gostman run --contract --coverage lists operations a run did not reach.

  • Secret scanner: gostman scan and an in-app check find credentials typed into a collection before you commit or share it.

  • Collections as files: plain YAML in a folder with a Git panel (diff, commit, push, branches, stash, conflicts) on the desktop.

  • Mock server and capture: serve saved examples or an OpenAPI spec locally, and record traffic from your own app.

  • OpenAPI: import, sync with a remote spec, and a spec viewer with a linter (gostman lint).

  • Docs: generate one HTML page with Markdown descriptions and an optional Try it panel.

  • Secret managers: HashiCorp Vault, AWS, Azure and Google Cloud; the password managers KeePassXC, 1Password and Bitwarden, and Bitwarden Secrets Manager; and your OS keychain for stored values. Fields that read from a connection are tinted with its colour.

  • Themes: light and dark, eight palettes, accent colours, and your own background and text colour for each part of the window, with a contrast check.

  • Sharing: encrypted share links that never upload anything, and Open in Gostman links.

  • For coding agents: gostman mcp lets Claude Code, Codex and Cursor call your API through the collection without seeing your secrets.

  • VS Code extension: send a request from a lens above its file, run requests and folders in the Test Explorer, pick the environment from the status bar, run flows, lint an OpenAPI spec and scan for secrets, through the Gostman CLI.

  • AI assistant (optional, bring your own key): generate requests, checks and scripts, and explain errors.

  • Import and export: Postman, OpenAPI, Insomnia, HAR, WSDL, Bruno, Hoppscotch, Thunder Client, HTTPie, Hurl, Firecamp, RAML, API Blueprint, .http files (VS Code REST Client, JetBrains HTTP Client) and curl in; Postman, OpenAPI, HAR, Bruno, .http files, Hurl files, a curl script, Markdown, an HTML docs page and a Gostman backup out.

  • Code generation for cURL, JavaScript, Python, Go, Java, Kotlin, C#, PHP, Ruby, Swift, Rust, Dart and PowerShell, plus axios, Node http, httpx, OkHttp, RestSharp, Guzzle, HTTPie and wget (21 targets).

Install

Download the latest build from the releases page.

Platform

File

Notes

Windows

Gostman-windows-amd64.exe

Installer. Adds Start menu and desktop shortcuts and an uninstaller.

Windows

Gostman-windows-amd64-portable.exe

Single executable, no installation.

macOS

Gostman-darwin-universal.dmg

Intel and Apple Silicon. Drag Gostman to Applications.

Linux

Gostman-linux-amd64.deb

Debian and Ubuntu. sudo apt install ./Gostman-linux-amd64.deb

Linux

Gostman-linux-x86_64.AppImage

Any distribution. chmod +x Gostman-linux-x86_64.AppImage and run it. AppImage managers keep it up to date.

Linux

Gostman-linux-amd64.tar.gz

Other distributions. sudo tar -xzf Gostman-linux-amd64.tar.gz -C / Requires GTK 3 and WebKitGTK 4.1.

Arch Linux

gostman-bin

Community package in the AUR, maintained by @softexpert. yay -S gostman-bin

The builds are not code-signed yet, so the operating system asks for confirmation the first time:

  • Windows: SmartScreen shows "Windows protected your PC". Choose More info, then Run anyway.

  • macOS: right-click Gostman in Applications and choose Open, then confirm.

Windows needs the WebView2 runtime, which ships with Windows 10 and 11; the installer fetches it when it is missing.

VS Code extension and MCP server

Set up with your coding agent

Install the Gostman Agent Skill for the coding agents on your machine:

npx skills add kunalgoesbyken/gostman --skill gostman

Or copy this prompt into your coding agent, from your project:

Set up Gostman in this project so you can call and test its APIs without curl.

1. If `gostman version` fails, install the gostman command with `go install github.com/kunalgoesbyken/gostman/cmd/gostman@latest`, or download the gostman-cli archive for this platform from https://github.com/kunalgoesbyken/gostman/releases/latest.
2. Run `gostman init --skill` in the project root. Note the workspace folder and the `mcp` registration command it prints.
3. Register that command with your MCP client, using the absolute workspace path.
4. If the project has an OpenAPI spec, run `gostman import <spec> --out <workspace>`. Otherwise ask me which API to call.
5. Send one request with the gostman tools, run the workspace with `gostman run <workspace>`, and tell me what passed.

Never pass --reveal. Keep credentials in {{variables}}, and ask me before calling a host that my saved requests do not already use.

Secrets and Git

A folder workspace is meant to be committed. What goes where:

  • Safe to commit: gostman.yaml, folder.yaml, the request files, environments/ and flows/. They hold names, URLs, bodies and the values of variables you did not mark secret, so read a diff before you push.

  • Marked secret: the value lives in the OS keychain on desktop (IndexedDB in the browser). Only the variable name is written to the YAML, so a token never lands in the folder. Mark every token: a variable you do not mark is plain text in the environment file, and the app warns when an unmarked value looks like a credential.

  • Never written to the folder: OAuth tokens, cookies, request history and secret values.

  • Keep out of Git: a .env file next to gostman.yaml is read as {{process.env.NAME}} and never written back. A new workspace gets a .gitignore for .env, .env.* and the .gostman-*.tmp leftovers of an interrupted save; gostman init adds it to an older workspace, and an existing .gitignore is never changed.

  • Check before you share: gostman scan <folder> and the Scan for secrets command flag credentials typed into requests and variables.

See Variables for the details.

Web version

gostman.com runs the same interface in the browser. Browsers cannot call arbitrary APIs directly, so requests are relayed through a small proxy, and that includes any API token in the request. The proxy's code is open source in api/proxy.go and does not store requests or responses; this repository cannot speak for the logs of the host it runs on. To keep tokens off a server you do not run, start gostman relay on your computer and choose it under Preferences, Privacy, or use the desktop app. It differs from the desktop app in these ways:

  • The hosted proxy cannot reach localhost or private network addresses. Use the desktop app for local APIs, or run gostman relay and choose it under Preferences, Privacy.

  • The web app has no proxy, CA certificate or client certificate settings. Use the desktop app, or start gostman relay with --proxy, --cacert or --client-cert.

  • A gRPC stream is collected and shown when it ends; messages for a client stream are written up front as a JSON array.

  • Responses larger than 3 MB are truncated. The desktop app reads up to 50 MB.

Data in the web version is kept in the browser's IndexedDB.

Documentation

The same pages are published at gostman.com/docs. The tutorials and guides are listed under Learn; the reference pages are:

Translations

Translation status

Gostman is translated on Weblate. The first drafts of each language are checked by native speakers over time. To ask for a language, offer to translate or report a wrong translation, use issue #15. Translating Gostman explains how the translation files work and how to send changes.

Contributing

Issues and pull requests are welcome. For anything larger than a small fix, please open an issue first to agree on the approach. See CONTRIBUTING.md for how to build, test and release.

Available Tools

17 tools
changesRecent changesA
Read-onlyIdempotent

List the requests and environments agents saved, imported or changed in this workspace recently, oldest first, with the session that did it. Use it to see what other agents changed before you edit the same items.

Inputs: mine, since. Returns: changes, summary

get_requestShow requestA
Read-onlyIdempotent

Show one saved request in full: URL, headers, body, auth settings, its own variables (vars), assertions, extraction rules, scripts and the names of its saved examples. Credentials are masked; variables appear as {{name}}. options lists only the settings that differ from the defaults. revision identifies this version for save_request.

Inputs: request (required). Returns: id, url, auth, body, +20 more

import_requestsImport requestsA

Add requests to the workspace from an OpenAPI or Swagger spec, a Postman, Insomnia or Bruno collection, a HAR file, .http requests or a curl command. Nothing existing is changed: the collection settings of a Gostman export are adopted only when the workspace has none. Scripts and OAuth 2.0 settings are removed (listed in leftOut; warnings describe the source document), and an import that holds a credential, reads local files or runs local commands is refused. Returns what was added.

Inputs: url, folder, format, content. Returns: notes, folder, folders, leftOut, +9 more

last_responseLast responseA
Read-onlyIdempotent

Show the last response a saved request got in this session, from send_request or run_folder, without sending it again. When the request has saved examples, also compare the response with one: status, content type and, for JSON, the paths that differ.

Inputs: request (required), select, example, shape_only, +2 more. Returns: body, error, status, headers, +6 more

lint_specLint OpenAPI specA
Read-onlyIdempotent

Check an OpenAPI 3 or Swagger 2 document against Gostman's built-in rules: missing operation ids or descriptions, undeclared path parameters, missing error responses, undefined security schemes, broken $refs and similar. Returns the counts and findings.

Inputs: url, content. Returns: counts, omitted, findings

list_environmentsList environmentsA
Read-onlyIdempotent

List the environments of the workspace with the names of their variables, which one is active, and the names of the variables that have a value in this session. Values are never returned; reference a variable as {{name}}. Names under secret get their values from the developer; when one is missing from sessionVariables, ask the developer to pass it with --var-from-env.

Inputs: no named parameters. Returns: active, environments, sessionVariables

list_requestsList requestsA
Read-onlyIdempotent

List the API requests saved in this Gostman workspace: id, name, method, URL template, folder, tags, whether each has checks (hasTests) and whether it has saved example responses. Call this first to find a request to send instead of writing a curl command.

Inputs: folder. Returns: problems, requests, environment

load_testLoad testA
Destructive

Send one saved request many times at once and report throughput, latency percentiles, status codes and error samples. Limited to 20 at once, 30 seconds and 5000 requests, to hosts this session may call. Only test systems the developer owns.

Inputs: request (required), rps, requests, concurrency, +1 more. Returns: hint, total, checks, config, +13 more

mock_statusMock server statusA
Read-onlyIdempotent

Report whether the mock server is running, its address, its routes refreshed from the workspace, and the last requests it answered.

Inputs: no named parameters. Returns: routes, address, running, recentRequests

run_folderRun folderA
Destructive

Send every request in a folder, or in the whole workspace, in order, with scripts and assertions, the way the collection runner does. tags and exclude_tags narrow the run to a subset such as smoke tests; data and iterations repeat it. Use it to check that an API still works after a change. Returns the counts and, for failed requests only, the error, the failed checks (failedTests) and the console output.

Inputs: bail, data, tags, folder, +2 more. Returns: hint, summary, failures, withheld, +4 more

save_requestSave requestA
Destructive

Create a request in the workspace, or update one by id, so the developer finds it in the Gostman app and it can be re-run later. Only the fields you give are changed. Secrets are refused: a value that matches a variable or a credential must be written as {{name}}. Returns the request's id, name, folder and new revision. An update is refused when the request changed since you read it with get_request; read it again and merge.

Inputs: id, url, body, name, +9 more. Returns: id, name, note, folder, +2 more

scan_secretsScan for secretsA
Read-onlyIdempotent

Look for credentials typed into the workspace's requests, environments, scripts and saved examples. Findings show where and why, with at most the first four characters of a value. Run it before the developer commits or shares the workspace.

Inputs: skip_examples. Returns: high, medium, omitted, scanned, +1 more

send_requestSend requestA
Destructive

Send a saved request (give request) or an ad hoc one (give url). Prefer this over curl in a shell: Gostman fills in {{variables}}, auth, cookies and OAuth tokens itself, so no secret has to appear in the command or in the result, and a login made by one call is still in effect for the next. Saved requests also run their scripts, extraction rules and assertions. Returns two parts: a JSON summary (status, duration, size, content type, the address as sent in resolvedUrl with variable values shown as {{name}}, test results, script console output, names of cookies and variables that were set, and body.bytes, body.returnedBytes, body.truncated) followed by the response body as text. When body.truncated is true, narrow the answer with select or raise max_body_bytes. failed is true when the request could not be sent or a test did not pass. unresolved lists placeholders that have no value; withheld lists secrets that were not filled in because none of the developer's requests sends them to this address.

Inputs: url, body, method, select, +6 more. Returns: url, body, hint, logs, +17 more

set_environmentChoose environmentA
Idempotent

Choose the environment whose variables fill in {{name}} for the rest of this session, for example to switch from Local to Staging. The environment's variables are read again and variables set by earlier requests are cleared; cookies and OAuth tokens are kept.

Inputs: name (required). Returns: active, environments, sessionVariables

set_variablesSet environment variablesA
DestructiveIdempotent

Save plain variable values such as baseUrl or userId in an environment file of the workspace, so later requests and the developer's app use them. Credentials are refused, and so are variables the developer marked secret. Values set here never let requests reach a new host. Refused when the environment changed since list_environments showed it.

Inputs: variables (required), revision, environment. Returns: set, note, active, created, +3 more

start_mockStart mock serverA

Start a mock server on localhost that answers each saved request's path with its saved example response. Use it to develop against an API that is not running. Returns the address and, per request, whether it is served and why not.

Inputs: port, delay_ms. Returns: routes, address, running, recentRequests

stop_mockStop mock serverA
Idempotent

Stop the mock server started with start_mock.

Inputs: no named parameters. Returns: routes, address, running, recentRequests

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 17 tools

    Disambiguation4/5

    Most tools target a clearly distinct resource+action: the mock trio (start/stop/status), request CRUD (list/get/save), and execution tools (send_request, run_folder, load_test) each have explicit boundaries spelled out in the descriptions. The only real friction is the environment trio (list_environments / set_environment / set_variables) and the send/run/load family, which an agent must read carefully to choose between, but the descriptions do resolve them.

    Naming Consistency4/5

    Roughly 13 of 17 names follow a clean verb_noun pattern (get_request, save_request, list_requests, start_mock, send_request, run_folder, lint_spec, etc.). The deviations are noun-only names like changes, last_response and mock_status, which are readable but break the otherwise predictable convention.

    Tool Count4/5

    17 tools maps well onto the breadth of the domain — workspace requests, environments, mocking, test runs, imports and linting — and each tool plausibly earns its place. It sits at the upper end of a comfortable set and a couple of the mock/status tools could conceivably be folded together, but nothing is redundant filler.

    Completeness3/5

    The core lifecycle is covered — list/get/save requests, send, run a folder, load test, import, mock serving, environment selection, secrets scanning and spec linting. However there is no way to delete or archive a request, no create/delete environment, and no folder management, so agents will hit dead ends on cleanup and naming/structural operations.

    Maintenance

    ActivityActive
    ResponsivenessUsually handled

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      API client with an MCP server. Your agent builds collections from your codebase, runs requests, writes e2e flows, and exports them to GitHub Actions CI automatically. Category: Developer Tools
      2 npm
      4
      ISC
    • F
      license
      Not graded
      quality
      C
      maintenance
      Agent-native API client for executing REST, GraphQL, WebSocket, SSE, and gRPC requests from MCP-capable agents, with token-efficient responses and file-based collections.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      A keyboard-first API client that stores requests and environments as plain files, and exposes its workspace over MCP so agents can browse, send, and create requests with vault access.
      277 npm
      MIT