mrkeyoor.com_
Wed 16 Sept 05:25 UTC
Dev Toolsevaluationupdated 25 Aug 2026

bruno review

Bruno is an open-source desktop client for sending API requests, organizing collections, and running those collections from a CLI. It keeps collection data in plain-text Bru files on your computer, so teams can review API changes through Git instead of depending on a hosted workspace.

+121stars / 7d
Verdict

Our Bruno source install took 97 seconds, pulled 3,430 packages, and left 1,956 MB on disk, so developers should use a packaged release unless they intend to contribute. For teams that want API collections reviewed in Git and kept off a vendor cloud, Bruno is an easy recommendation. Large collection-variable sets and the 26 audit findings deserve a trial before standardizing it across a company.

We ran it

Lab card: what happened when we ran brunoScreenshot of bruno (www.usebruno.com)
Install✓ · 97s3430 packages · 1956 MB
Buildn/ano build script
Testsn/ano test script
Known vulns261 critical · 12 high · 6 moderate · 7 low (npm audit)
Repo4224 files~429,917 lines of source · 22.6 MB · 7 CI workflows · tests dir

Answers from our run

Does bruno build from source?

Dependencies installed in 97 seconds (3430 packages), and the project has no separate build step. We cloned commit 6759656 into a clean Debian container with 3 CPUs and no project-specific setup.

Does bruno have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does bruno have known vulnerabilities in its dependencies?

npm audit flagged 26 known advisories in the dependency tree, including 1 critical at the time of our run.

Who should not use bruno?

Teams that require live cloud synchronization inside the client: the README says Bruno is offline-only and has no plans to add cloud sync.

What are the alternatives to bruno?

Hoppscotch, Insomnia, HTTPie Desktop. Our Bruno source install took 97 seconds, pulled 3,430 packages, and left 1,956 MB on disk, so developers should use a packaged release unless they intend to contribute.

Setup3/5Easy binaries, but source install pulled 3,430 packages
Docs4/5Clear install and CLI paths, thin contributor guidance in the README
Community5/5August 2026 push, release, issue replies, and fixes
Maturity4/5Multi-platform app and CLI, with a large active issue queue

Discussed on

  1. hnBruno: Fast and Git-friendly open-source API client (Postman alternative)1,538 points
  2. hnBruno – Opensource, sustainability, privacy, freedom and incentives82 points
  3. hnBruno: Open-Source IDE for Exploring and Testing APIs78 points
  4. hnBruno, Announcing Version 1.0.018 points
  5. hnWhy replacing Postman for Bruno saved my company millions (really)10 points

Who it’s for

Developers who want API collections stored beside application code and reviewed through Git.
Teams that need an offline desktop client without mandatory accounts or cloud sync.
CI maintainers who want to run the same collections through an npm CLI or official container image.
Postman or Insomnia users willing to trade live cloud collaboration for local files and version-control history.

Who it’s NOT for

Teams that require live cloud synchronization inside the client: the README says Bruno is offline-only and has no plans to add cloud sync.
Developers working with very large collection-variable sets who cannot accept editor slowdown: issue #8928 reports lag, high CPU use, and long saves in that case.
Contributors who need a small dependency surface: our source install pulled 3,430 packages, used 1,956 MB, and reported 26 known vulnerabilities.
Release pipelines that expect a root build and test command to work immediately: our harness found neither target, despite 7 CI workflows and a tests directory.

Setup reality

Our sandbox installed Bruno's npm workspace successfully in 97 seconds. That run pulled 3,430 packages and occupied 1,956 MB. The audit reported 26 known vulnerabilities: 1 critical, 12 high, 6 moderate, and 7 low.

Most users should install a desktop binary or use Homebrew, Chocolatey, Scoop, winget, Snap, Flatpak, AUR, or Apt. The CLI installs separately from npm, and its official container images can run collections in CI. Bruno itself needs no account or cloud service, but requests still need whatever API URLs, tokens, certificates, or environment values your collection requires.

The contributor path is less tidy than the download path. At commit 6759656, our harness found no root build script or test target, so both steps were skipped. The checkout held 4,224 files and about 429,917 source lines in a 22.6 MB monorepo. It has 7 CI workflow files and a tests directory, but no Dockerfile; the published CLI images are separate from building this repository.

Bruno stores collections as plain-text Bru files

Each request lives in an ordinary folder as a plain-text Bru file, which means a collection can sit beside the application it describes. A teammate can inspect a diff, comment on a pull request, and restore an earlier revision with the same version-control habits used for source code. That is a concrete improvement over passing exported collection files around or placing the only shared copy in a vendor account.

The project makes a firm trade: Bruno is offline-only, and its README says cloud sync will not be added. That keeps collection data on the user's machine and avoids making an account part of basic API work. It also means collaboration happens through Git rather than live presence, shared comments, or automatic workspace updates. A team already comfortable with branches and pull requests may prefer that. A support or QA group expecting Google Docs-style collaboration probably will not.

Packaged installers avoid the 1,956 MB dependency tree

Bruno publishes desktop downloads for macOS, Windows, and Linux, and the README documents Homebrew, Chocolatey, Scoop, winget, Snap, Flatpak, AUR, and Apt routes. That breadth makes the packaged application approachable even if the codebase behind it is large. The separate @usebruno/cli package can run a whole collection, one request, or one folder against a named environment.

Automation is credible too. Official CLI images are published to Docker Hub and GitHub Container Registry in Alpine and Debian variants for amd64 and arm64. Mount a collection into the container and the same files used in the desktop app can run in CI. One distinction matters: our repo scan found no Dockerfile in the 4,224-file checkout. Bruno provides built CLI images, but this source tree does not present a root Docker build as the contributor entry point.

What happened when we ran it

Our sandbox installed commit 6759656 successfully in 97 seconds on 3 CPUs with 8 GB of RAM using Node 22 on Debian. npm pulled 3,430 packages, and the installed tree occupied 1,956 MB. The repository itself was 22.6 MB checked out, with about 429,917 lines of source, so the dependency footprint is far larger than the files a contributor initially clones.

There was no root build script or target for our harness to call, so the build step was skipped. The same was true for tests: the repository has a tests directory and 7 CI workflow files, but our harness found no test script or target and skipped that step. This does not say the project has no tests. It says a fresh source checkout did not expose the standard commands our run looks for, which makes local verification less obvious than the end-user install.

The npm audit reported 26 known vulnerabilities: 1 critical, 12 high, 6 moderate, and 7 low. An audit result is not proof that the desktop application exposes every advisory, and we did not trace reachability. It is still enough to stop a security-sensitive team from treating the source install as clean. Review the affected dependency paths and the current lockfile before using the monorepo as a base for internal extensions.

Issue #8928 reports lag around 500 variables

Bruno covers the expected daily workflow: desktop requests, file-backed collections, environments, scripts, and headless collection runs. Version 4.1.0, released on August 20, 2026, added a mock server, more variable controls, YAML migration work, and preservation of scripts during Postman import and export. Those changes show a product moving beyond a minimal request sender into documentation, migration, and team workflow territory.

The growing surface has sharp edges. Open issue #8928 reports severe lag when a collection has about 500 variables, including high CPU use while typing and saves that can take minutes. That is a specific limit worth reproducing if your team carries large generated environments or shared variable catalogs. The same issue was still active on August 25. Smaller collections may never hit it, but the report makes a company-wide rollout without a representative import test a bad bet.

August 2026 activity outweighs the 1,824-item queue

The repository was pushed on August 25, 2026, five days after v4.1.0 shipped. Issues were being opened, updated, and closed that same day, including work around collection migration, OAuth behavior, memory use, and long-standing interface bugs. GitHub showed 1,824 open issues and pull requests combined. That is a large queue, but it is not 1,824 confirmed defects, and the dated activity does not resemble an abandoned project.

Documentation is strongest for users. The README separates desktop packages, npm CLI use, official containers, commercial versions, and links to the full command reference. It is less direct for contributors: our run encountered a monorepo with no root build or test target that matched the harness, despite the visible CI and test structure. People evaluating Bruno as a tool have a short path. People modifying Bruno should budget time to learn the workspace-specific commands and dependency layout.

Bruno fits teams that use Git for collection sync

The recommendation is strongest for a development team that wants collection changes to travel with code changes. The offline rule is clear, the desktop distribution covers 3 operating-system families, and the CLI gives those files a route into CI. No cloud account is required for the core workflow.

That recommendation narrows if your team needs instant shared state or routinely opens collections with hundreds of variables. The 3,430-package install and 26 audit findings also make source-level adoption a different decision from installing the desktop release. Start with a packaged build, import one real collection, run it through the CLI, and test the largest environment your team owns. If Git already carries your collaboration, Bruno fits. If Git feels like a workaround for the collaboration you want, choose a client built around shared workspaces.

Alternatives

ProjectWhat it isPick it when
Hoppscotch gh↗A web-first API development client with cloud, desktop, CLI, and self-hosted options.pick this instead when browser access or a self-hosted shared workspace matters more than plain-text local collections.
Insomnia gh↗A cross-platform API client covering REST, GraphQL, WebSockets, SSE, and gRPC.pick this instead when you want local, Git, and cloud storage choices in the same client.
HTTPie DesktopA desktop client centered on a clean interface for HTTP, REST, and GraphQL requests.pick this instead when a simpler request-testing interface matters more than Bruno's Git-oriented collection format.
YaakA desktop API client for REST, GraphQL, WebSockets, SSE, and gRPC.pick this instead when you want another local desktop workflow and prefer Yaak's interface or protocol mix.

Sources

  1. Bruno repository and README
  2. Bruno v4.1.0 release
  3. Issue #8928: Performance issues with large collection variables
  4. Bruno CLI documentation

More dev tools reviews

noty · forward-implementation-first · breakscale · black · ASC · BrewUI · the whole board →