TopGit
GitHub Repo Review

Bruno API Client: Open Source Postman Alternative

usebruno/bruno
BTopGit review image for usebruno/bruno
Review by Topgit.dev for usebruno/bruno, with GitHub repository stats and README context.
Quick verdict

Bruno is an open source API client that stores every request as a plain text .bru file on your disk instead of syncing to a vendor's cloud. Reach for it if you want your API collections to live in Git next to your code; skip it if your team depends on real-time cloud collaboration, since Bruno is offline-only by design.

Stars
★ 46.1k
Forks
⑂ 2.8k
Language
JavaScript
License
MIT
Topic
API
Updated
Aug 2026
Homepage
GitHub

Addressing API Client Challenges

Testing REST and GraphQL endpoints usually means keeping request collections inside a client's own cloud account, where a pull request on API changes isn't possible because there's no text file to diff. Bruno's collections live as `.bru` files on disk, so adding a new endpoint or changing a header shows up as an ordinary Git diff instead of a change buried inside someone's synced workspace.

What is Bruno?

Bruno is an open source API client for testing REST and GraphQL APIs, built as a desktop IDE rather than a browser tool. It saves every request as a `.bru` plain text file on disk instead of inside a cloud account, and its GitHub topics include api-client and http-client. The project has 46,157 GitHub stars. Reach for it if you want local files under your control; skip it if you'd rather test APIs from a browser with nothing to install.

Key Capabilities of Bruno

  • Stores every API request as a `.bru` plain text file in a folder on your filesystem, rather than in a proprietary or cloud-hosted format.
  • Works with Git or any other version control system, so API collections get diffed and reviewed like the rest of your codebase.
  • Ships a separate Bruno CLI package (`@usebruno/cli`) so a collection can execute outside the GUI — install with `npm install -g @usebruno/cli` and trigger it from a script or pipeline step.
  • Publishes official Docker images for the CLI on Docker Hub and the GitHub Container Registry, offering `alpine` and `debian` builds for both `linux/amd64` and `linux/arm64` targets, useful in CI/CD.
  • Installs as a binary for Mac, Windows, and Linux, or through package managers including Homebrew, Chocolatey, Scoop, winget, Snap, Flatpak, and Apt.
  • Runs offline by design. The README says there are no plans to add cloud sync, ever.
  • Supports both REST and GraphQL testing inside the same client, per the repo's graphql-client and rest-api topics.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history

Installing Bruno

Bruno ships as a binary download for Mac, Windows, and Linux from its website, or through package managers: `brew install bruno` on Mac, `choco install bruno` or `winget install Bruno.Bruno` on Windows, and `snap install bruno` or `flatpak install com.usebruno.Bruno` on Linux (Apt and AUR packages are also documented in the README). The separate Bruno CLI installs via `npm install -g @usebruno/cli`, and official Docker images are published to Docker Hub and the GitHub Container Registry for running it in CI/CD without a local Node.js install.

Strengths

  • Collections are plain text `.bru` files, so you can `git diff`, branch, and merge them like any other source file.
  • No account or cloud sign-in required to use the core client — the README frames this as a deliberate privacy stance, not a missing feature.
  • The CLI and Docker images give you a real path to run collections unattended in CI/CD, not just interactively.
  • MIT licensed, so there's no ambiguity about using it in a commercial pipeline.

Considerations for Bruno Users

  • Offline-only is permanent by design — the README says there are no plans to add cloud sync, ever, so teams that want built-in real-time collaboration across a distributed team need a different tool or their own sync layer, like a shared Git remote.
  • The README doesn't document version numbers, release cadence, or a changelog, so you can't tell from the repo description alone how mature any given feature is.
  • Some capabilities sit behind separate paid versions — the README points to a pricing page for 'additional features' without listing in the README itself what's free versus paid.

Comparing Bruno to Other API Clients

Postman — the account-based, cloud-first client Bruno's own README positions itself against; more mature but ties your collections to Postman's cloud instead of local files.Insomnia — another established GUI REST/GraphQL client with a similar interactive testing workflow, but without Bruno's plain-text, Git-native storage model.Hoppscotch — a browser-based, open source API client you run as a hosted web app instead of installing a desktop client like Bruno.

Frequently Asked Questions About Bruno

Is Bruno a free API client?

Bruno is free and open source under the MIT license, and its README says the majority of features are free. Separate paid versions exist for teams that want extra features beyond the core client.

Does Bruno support cloud sync?

Bruno does not support cloud sync — it runs offline only, and its maintainers have said publicly they don't intend to add cloud sync at any point, to keep collection data on your own device.

Can Bruno collections be version controlled?

Bruno collections can be version controlled: each request is saved as a `.bru` plain text file in a folder on disk, so Git or any other version control system can track it.

What is the Bruno CLI used for?

Bruno CLI lets you execute a collection's requests outside the GUI, handy for scripted, repeatable test runs. Install it with `npm install -g @usebruno/cli`, then run commands like `bru run` or `bru run folder --env Local`.

How does Bruno compare to Postman?

Bruno's own description brands it a lightweight alternative to Postman: instead of a cloud-synced account, Bruno keeps every request in a local `.bru` file you can commit to Git alongside your code.

What license does Bruno use?

Bruno is released under the MIT license, a permissive open source license with no restriction on commercial use.

Best use cases

  • Keeping a team's API request collection inside the same Git repo as the backend code it tests, so request changes show up in code review.
  • Running a collection headlessly in CI/CD with the Bruno CLI, e.g. `bru run folder --env Local`, to catch broken endpoints before merge.
  • Testing APIs on a laptop with no reliable internet connection, since Bruno doesn't need a cloud account to function.
  • Running the CLI inside a Docker container in a pipeline that isn't allowed to install Node.js or npm on the build host.

Who should try it — and who should skip

Reach for Bruno if your team already lives in Git and treats API test collections as another artifact worth reviewing in a pull request. Skip it if you need built-in real-time collaboration for a distributed team without setting up your own Git workflow — Bruno has no cloud sync and, per its own README, never will.

Related repositories

Source & attribution

Sourced from the usebruno/bruno GitHub repository (github.com/usebruno/bruno), including its README and repository metadata.

GitHub data · last synced Aug 6, 2026Reviewed by Henry
Back to TopGit