runhttp
v0.1.0
Published
Run .http files (VS Code REST Client format) from the command line. Zero dependencies — a tiny, unbloated alternative to Postman.
Maintainers
Readme
runhttp
Run .http files from the command line. You already have .http files —
the ones VS Code's REST Client extension runs. runhttp runs the same files
in your terminal and in CI. Zero dependencies, no Electron, no account, no
config.
# api.http
@base = https://api.example.com
@token = {{$env API_TOKEN}}
### Get the current user
GET {{base}}/me
Authorization: Bearer {{token}}
Accept: application/jsonnpx runhttp api.httpGET https://api.example.com/me # Get the current user
200 OK · 142ms · application/json · 318 B
{
"id": 7,
"name": "Ada Lovelace"
}Why
You want to fire off a saved HTTP request and see the response. The options:
- Postman / Insomnia — a whole GUI app and an account, to send one GET.
- Hurl is great, but uses its own
.hurlformat — your existing VS Code.httpfiles don't run in it. - httpyac runs
.httpfiles but pulls in dozens of dependencies. - curl works, but now you're translating a clean
.httpfile into a wall of-Hflags every time.
runhttp runs the .http files you already keep next to your code. One small
binary's worth of pure standard library — npx/pipx and go.
Usage
runhttp api.http # run every request in order
runhttp api.http -n 2 # run only request #2 (1-based)
runhttp api.http --name login # run the request titled "### login"
runhttp api.http --list # list requests without sending
cat api.http | runhttp # read from stdin| Option | |
|---|---|
| -n, --request <n> | run only the nth request |
| --name <title> | run the request with this ### title / # @name |
| --list | print requests, don't send |
| --var k=v | define/override a variable (repeatable) |
| -i, --include | print response headers |
| --json | emit results as a JSON array (stdout) |
| --no-follow | don't follow redirects (default: follow, max 5) |
| --insecure | skip TLS verification |
| --timeout <sec> | per-request timeout (default 30) |
Variables
@base = https://api.example.com # file variable
GET {{base}}/users # {{name}} to use it
Authorization: Bearer {{$env TOKEN}} # {{$env NAME}} reads the environmentOverride or supply any variable from the command line with --var name=value.
An undefined variable is an error — a typo never gets silently sent.
Exit codes
0 every request came back < 400
1 some request returned an HTTP status >= 400
2 parse error, connection failure, or bad usagerunhttp smoke.http && echo "all endpoints healthy"Scope (on purpose)
Supports the everyday .http: @variables, {{vars}} / {{$env}}, request
titles, headers, request bodies, multiple requests per file, and redirect
following. It does not do gRPC/WebSocket/GraphQL transports or response
assertions — if you need those, reach for httpyac or Hurl. runhttp is the
small, dependency-free one for the 90% case.
Install
npx runhttp api.http # Node >= 18
pip install runhttp # Python >= 3.8 (byte-for-byte port)- npm: https://www.npmjs.com/package/runhttp
- PyPI: https://pypi.org/project/runhttp/
- GitHub: https://github.com/jjdoor/runhttp · runhttp-py
License
MIT
