Building the product · Edition No. 17 · 11 Sep 2026

usebruno/bruno

A desktop app for testing an API, with the requests saved as files in the repository.

← Building the productRead the whole edition →
Bruno: an API client as files. Tests a web service, with requests as files.

47.7k stars · MIT · v4.2.1 (2026-09-30) · Track this in Rising ↗

A desktop app for testing an API, with the requests saved as files in the repository.

Verified27 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive100

Last code pushed 27 Oct 2026, the same day before this check.

Releases100

Latest release v4.3.0 on 22 Oct 2026.

Maturity70

Public since September 2022, about 4 years.

Adoption94

47,871 stars and 3,035 forks.

Activity100

359 commits and 213 new issues in the last 90 days.

Community100

495 contributors. 351 pull requests merged in 90 days.

Security40

No security policy file says how to report a problem. 5 published security advisories.

Licence MIT: permissive: use it for anything, keep the notice
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 27 Oct 2026 from the repository on GitHub. Covered in Edition 17.

▶Repo detailsthe review · specs · pros & cons · install

What it does

It sends HTTP requests and shows the response, in the same family of tools as Postman and Insomnia. Each request is stored as a small text file in a folder you choose, in a format the project calls Bru. Collections, environments and variables are all files, so they can be reviewed and merged like code. A command-line runner, bru, replays the same collection in an automated check. It needs no account and no sign-in, and it works with no internet connection. Version 4.2.1 was released on 30 September 2026, and code landed on 2 September 2026. It is a desktop application with a command-line companion; there is no hosted version to open in a browser.

Why it matters

Who it suits. Anybody building a web service who wants the saved requests to be part of the repository rather than part of someone else's cloud account. Those files become documentation that cannot go stale, because they change in the same commit as the code. Two people reading the same repository see the same requests. Skip it if what you actually need is shared team workspaces and cloud history, because that is the shape of tool this deliberately is not.

Verdict. Worth an hour, and the payoff is mostly in review: a change to an endpoint and the request that exercises it arrive together. Two things to watch: some Postman collections do not import cleanly and need editing by hand, and every machine needs the app installed. hoppscotch/hoppscotch is the option to look at if a browser-based client suits better, and Orange-OpenSource/hurl if the requests only ever need to run in an automated check.

Stars47.7k
LicenceMIT
Latestv4.2.1 (2026-09-30)
Summary (Key Points)from the README
Key features
  • Filesystem collections: Collections are stored as plain folders on your disk, with each request saved in Bru, a plain text markup language.
  • Git-friendly: You can collaborate on API collections with Git or any other version control system you choose.
  • Offline-only: Bruno has no cloud sync, and the README states there are no plans to add it. Data stays on your device.
  • Cross-platform desktop app: Binaries are available for Mac, Windows and Linux.
  • Command-line runner: The Bruno CLI runs collections from the terminal, aimed at automated testing and CI/CD pipelines.
  • Official Docker images: The CLI is published to Docker Hub and the GitHub Container Registry on every CLI release, in alpine and debian variants for linux/amd64 and linux/arm64.
  • Mostly open source: The README says the majority of features are free and open source, with optional paid versions.
Ways to install
Platform or methodWhat it needsEffort
Binary download from the website (Mac, Windows, Linux)The README does not list extra requirementsLow
Package managers: Homebrew, Chocolatey, Scoop, Snap, Flatpak, AptThe matching package manager on your systemLow
Bruno CLI via npmNode.js and npm on the hostLow to moderate
Bruno CLI Docker imagesA container runtime; Node.js and npm are not needed on the hostModerate
Important
  • No cloud collaboration: Sharing relies on Git or another version control system, since Bruno is offline-only.
  • Paid tiers exist: Some additional features are in commercial versions, so check the pricing page if you need them.
  • Docker details live elsewhere: Tag matrix, environment files and CI examples are in the external Bruno CLI Docker documentation, not the README.
  • CLI reference is external: The full command reference is in the separate Bruno CLI documentation.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Good
  • Requests live in git, so who changed what and when is visible.
  • No account and no sign-in. It works offline.
  • A command-line runner means the same requests can guard a deploy.
Watch for
  • Shared workspaces and cloud history are not the point here. A team that needs those will find it thin.
  • Some Postman collections do not import cleanly and need editing by hand.
  • It is a desktop application, so every machine needs it installed. There is no web version.
Install
# Desktop app: download from https://www.usebruno.com/downloads
# macOS:
brew install bruno
# Command-line runner, for automated checks:
npm install -g @usebruno/cli
cd my-api-collection
bru run --env local
Screenshots
usebruno/bruno: GitHub preview cardusebruno/bruno: Screenshot 1usebruno/bruno: Screenshot 2usebruno/bruno: Screenshot 3usebruno/bruno: Screenshot 4

On Stack Radar: Build & Ship › APIs & Developer Utilities › API Clients.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.