Skip to content

Bruno

An API client that stores collections as plain files in your repository instead of in someone’s cloud, for exercising an API while you build it.

Homebrew cask Homebrew formula Direct download

What it does

Bruno is a Postman-style client for HTTP APIs, with one structural difference: a collection is a directory of .bru text files on disk. That makes requests reviewable in a pull request, mergeable, and versioned alongside the code they exercise.

There is no account and no mandatory sync. Environments and secrets are files too, so secrets stay out of the collection by convention (.env, or a gitignored environment file).

The CLI

bruno-cli runs the same collections headlessly — the normal way to put API checks in CI:

bru run --env staging --reporter-json results.json

Notes

The GUI cask and the CLI formula are versioned separately and can drift; keep them close when using .bru features added recently.

Alternative to

AlternativeTypeTrade-off
PostmanFreemiumThe market standard, but account-bound and increasingly cloud-first
InsomniaFreemiumLighter than Postman, now also account-gated
Hoppscotch and YaakOpen source / FreemiumBruno’s file-based instincts
.http files in VS Code or JetBrains—No separate app at all
curl or HTTPieOpen sourceFor anything that does not need to be saved

Install

brew install --cask bruno   # GUI
brew install bruno-cli      # CLI

Links

This post is licensed under CC BY 4.0 by the author.
Last updated on