_   _   _            _             _
 | |_| |_| |_ _ __ ___| |_ __ _ _ _ | |_____ _ _
 | ' \  _|  _| '_ \___|  _/ _` | ' \| / / -_) '_|
 |_||_\__|\__| .__/    \__\__,_|_||_|_\_\___|_|
             |_|

A lightweight terminal HTTP client for API testing

Create, manage and execute HTTP requests directly from your terminal. Includes a built-in MCP server for AI assistant integration.

Features

Everything you need to test APIs from your terminal

HTTP Methods

Full support for GET, POST, PUT, PATCH and DELETE requests with custom headers and JSON payloads.

Request Management

Create, edit, delete and browse saved requests. All persisted locally in JSON format.

Response Inspector

View response details including status, headers, body and execution time. Inspect in your editor.

Binary Download

Binary responses are streamed directly to disk without loading into memory. Save files to any location.

cURL Export

Generate the equivalent cURL command for any saved request. Copy and share effortlessly.

HTTPS Insecure Mode

Skip TLS certificate verification for testing with self-signed certificates.

Installation

Get up and running in seconds

Pre-built binaries

Pre-built binaries for Linux and macOS (amd64 and arm64). No Go installation required.

PlatformBinary
Linux (amd64)tanker-v0.0.1-linux-amd64
Linux (arm64)tanker-v0.0.1-linux-arm64
macOS (amd64)tanker-v0.0.1-darwin-amd64
macOS (arm64)tanker-v0.0.1-darwin-arm64
bash
# Example for macOS arm64
cp tanker-v0.0.1-darwin-arm64 /usr/local/bin/tanker
chmod +x /usr/local/bin/tanker

# macOS: remove quarantine flag (macOS blocks unsigned binaries downloaded from the internet)
xattr -d com.apple.quarantine /usr/local/bin/tanker

Build from source

Requires Go 1.21+.

bash
git clone https://github.com/PierreKieffer/http-tanker.git
cd http-tanker
./build.sh v0.1.0

The binaries are generated in the bin/ directory.

Quick Start

Launch the interactive terminal UI

Start http-tanker with the default database:

bash
tanker

Use a custom database location:

bash
tanker -db /path/to/custom/dir

Configure your AI assistant to use http-tanker as an MCP server:

json
{
  "mcpServers": {
    "http-tanker": {
      "type": "stdio",
      "command": "/path/to/tanker",
      "args": ["--mcp"]
    }
  }
}

CLI Examples

See http-tanker in action

Home menu

tanker
 ──────────────────────────────────────────────────
  _   _   _            _             _
 | |_| |_| |_ _ __ ___| |_ __ _ _ _ | |_____ _ _
 | ' \  _|  _| '_ \___|  _/ _` | ' \| / / -_) '_|
 |_||_\__|\__| .__/    \__\__,_|_||_|_\_\___|_|
             |_|
 version: edge
 ──────────────────────────────────────────────────

╭──────────────────────────────────────────────────╮
│ Home Menu                                        │
╰──────────────────────────────────────────────────╯
 ──────────────────────────────────────────────────

? Select :  [Use arrows to move, type to filter]
> Browse requests
  Create request
  About
  Exit

Browse requests

tanker
╭──────────────────────────────────────────────────╮
│ Requests                                         │
╰──────────────────────────────────────────────────╯
 ──────────────────────────────────────────────────

? Select :  [Use arrows to move, type to filter]
> Back to Home Menu
  [GET] get-example - https://httpbin.org/get
  [GET] get-https-insecure - https://self-signed.badssl.com/
  [POST] post-example - https://httpbin.org/post
  [GET] download-image-example - https://httpbin.org/image/png

Create request

tanker
? Name :  foobar
? Method :  POST
? URL :  https://foobar/post
? Payload (Enter the payload in json format {"key": "value"}) :
 [Enter to launch editor]
? Authentication :  Basic Auth
? Username :  john
? Password :  ****
? Headers (Enter the headers in json format {"key": "value"}, default = {}) :
 {"Content-Type": "application/json"}
? Skip TLS certificate verification ? (y/N) y

Request details

tanker
╭──────────────────────────────────────────────────╮
│ Request details                                  │
╰──────────────────────────────────────────────────╯
 Name   : foobar
 Method : POST
 URL    : https://foobar/post
 Payload :
 {
     "foo": "bar"
 }
 Headers :
 {
     "Content-type": "application/json"
 }
 Auth     : Basic john:****
 Insecure : true (TLS verification skipped)
 ──────────────────────────────────────────────────

?   [Use arrows to move, type to filter]
> Run
  cURL
  Edit
  Delete
  Back to requests
  Exit

Response details

tanker
╭──────────────────────────────────────────────────╮
│ Response details                                 │
╰──────────────────────────────────────────────────╯
 Status         : 200 OK
 Status code    : 200
 Protocol       : HTTP/2.0
 Headers :
 {
     "Access-Control-Allow-Credentials": [
         "true"
     ],
     "Access-Control-Allow-Origin": [
         "*"
     ],
     "Content-Length": [
         "363"
     ],
     "Content-Type": [
         "application/json"
     ],
     "Date": [
         "Mon, 16 Feb 2026 13:56:06 GMT"
     ],
     "Server": [
         "gunicorn/19.9.0"
     ]
 }
 Body :
 {
     "args": {
         "count": "42",
         "foo": "bar"
     },
     "headers": {
         "Accept": "application/json",
         "Accept-Encoding": "gzip",
         "Host": "httpbin.org",
         "User-Agent": "Go-http-client/2.0",
         "X-Amzn-Trace-Id": "Root=1-699321f6-4de146b7397276213e32bb4d"
     },
     "origin": "5.48.194.113",
     "url": "https://httpbin.org/get?count=42&foo=bar"
 }
 Execution time : 426 ms
 ──────────────────────────────────────────────────

? Inspect response in editor ? (y/N) y

Binary download

tanker
┌──────────────────────────────────────────────────┐
│ Response details                                 │
╰──────────────────────────────────────────────────╯
 Status         : 200 OK
 Content-Type   : image/png
 Size           : 8.1 KB
 Body           : [Binary content]
? Save file locally ? Yes
? Save to : ~/Downloads/image.png
 File saved to ~/Downloads/image.png

MCP Server

AI-powered HTTP request management

http-tanker includes a built-in MCP (Model Context Protocol) server, allowing AI assistants like Claude to manage and execute your HTTP requests through natural language.

⚠ Be cautious when using authentication fields (tokens, passwords, API keys) through an AI agent you don't self-host — your credentials will be visible to the model provider.

ToolDescription
list_requestsList all saved HTTP requests
get_requestGet full details of a saved request
save_requestCreate or update a saved request
delete_requestDelete a saved request
send_requestExecute a saved request and return the response
send_custom_requestExecute an ad-hoc HTTP request without saving it
curl_commandGenerate the equivalent cURL command for a saved request

Configuration (.mcp.json)

json
{
  "mcpServers": {
    "http-tanker": {
      "type": "stdio",
      "command": "/path/to/tanker",
      "args": ["--mcp"]
    }
  }
}

MCP Examples

Interact with http-tanker through your AI assistant

List saved requests

Claude Code
▎▋▓▓▓█▌ Claude Code v2.1.42 ▕█████▋░ Opus 4.6 · Claude Pro ░░ ▕▕ List my requests ⚫ http-tanker - list_requests (MCP) ⎮ { "requests": [ { ... +26 lines (ctrl+o to expand) } ⚫ Here are your saved HTTP requests: ┌────────────────────────┬────────┬─────────────────────────────────┐ │ Name │ Method │ URL │ ├────────────────────────┼────────┼─────────────────────────────────┤ │ foobar │ POST │ https://foobar/post │ ├────────────────────────┼────────┼─────────────────────────────────┤ │ get-example │ GET │ https://httpbin.org/get │ ├────────────────────────┼────────┼─────────────────────────────────┤ │ get-https-insecure │ GET │ https://self-signed.badssl.com/ │ ├────────────────────────┼────────┼─────────────────────────────────┤ │ post-example │ POST │ https://httpbin.org/post │ ├────────────────────────┼────────┼─────────────────────────────────┤ │ download-image-example │ GET │ https://httpbin.org/image/png │ └────────────────────────┴────────┴─────────────────────────────────┘ You have 5 saved requests.

Execute a request

Claude Code
Execute get-example ⚫ http-tanker - send_request (MCP)(name: "get-example") ⎮ { "status": "200 OK", "statusCode": 200, ... +38 lines (ctrl+o to expand) } 200 OK (447ms) Response body: { "args": { "count": "42", "foo": "bar" }, "headers": { "Accept": "application/json", "Accept-Encoding": "gzip", "Host": "httpbin.org", "User-Agent": "Go-http-client/2.0" }, "origin": "5.48.194.113", "url": "https://httpbin.org/get?count=42&foo=bar" }

Download binary content

Claude Code
execute download-image-example ⚫ http-tanker - send_request (MCP)(name: "download-image-example", output_file: "/tmp/image.png") ⎮ { "body": "[Binary content not included]", "bodySize": 8090, ... +27 lines } 200 OK (107ms) - Content-Type: image/png - Size: 8,090 bytes - Saved to: /tmp/image.png Let me show you the downloaded image. ⚫ Read 1 file (ctrl+o to expand) ⚫ The image was successfully downloaded.

Create a request via natural language

Claude Code
Create a POST request to https://api.example.com/users with a JSON body and headers ──────────────────────────────────────────────────────────────────────────────── ← ☐ Request name ☐ Body ☐ Headers ☐ Params ✔ Submit → What name would you like to give this request? 1. create-user Descriptive name for creating a user 2. post-users Method-based naming convention 3. Type something. ──────────────────────────────────────────────────────────────────────────────── ← ☒ Request name ☒ Body ☒ Headers ☒ Params ✔ Submit → ⚫ What payload would you like to use for the request body? {"name" : "John", "email": "johndoe@mail.com"} ⚫ http-tanker - save_request (MCP)(name: "create-user", method: "POST", url: "https://api.example.com/users", payload: "{\"name\": \"John\", \"email\": \"johndoe@mail.com\"}", headers: "{\"Content-Type\": \"application/json\"}") ⎮ Request "create-user" saved successfully Request create-user saved successfully! ┌─────────┬───────────────────────────────────────────────┐ │ Field │ Value │ ├─────────┼───────────────────────────────────────────────┤ │ Name │ create-user │ ├─────────┼───────────────────────────────────────────────┤ │ Method │ POST │ ├─────────┼───────────────────────────────────────────────┤ │ URL │ https://api.example.com/users │ ├─────────┼───────────────────────────────────────────────┤ │ Headers │ Content-Type: application/json │ ├─────────┼───────────────────────────────────────────────┤ │ Body │ {"name": "John", "email": "johndoe@mail.com"} │ └─────────┴───────────────────────────────────────────────┘ Would you like to execute it?