unsubbed.co

Bruno

Git-native, offline-first API client that stores collections as plain text files. Free MIT alternative to Postman with no accounts, no cloud sync, no per-seat billing.

Best for: Developer teams who want API collections treated like source code — versioned in Git, reviewed in PRs, co-located with the codebase — without paying per-seat Postman fees.

TL;DR

  • What it is: A desktop API client for REST, GraphQL, gRPC, and WebSocket that stores collections as plain text files you commit to Git — no cloud sync, no account, ever [1][2].
  • Who it’s for: Developer teams who want API collections versioned alongside their code, and anyone tired of paying Postman’s per-seat fees.
  • Cost savings: Postman charges $14/user/month (Basic) or $29/user/month (Professional). Bruno is MIT-licensed and free. A 10-person team on Postman Professional costs $3,480/year. Bruno: $0 [2].
  • Key strength: Collections are plain .bru text files on your filesystem. Git becomes your collaboration layer — branches, code review, audit history, and access control are already there [1][2].
  • Key weakness: Desktop-only. No browser version. Collaboration requires Git, which means non-developers need a technical teammate to set things up [1].

What is Bruno

Bruno is an open-source API client. You install it on Mac, Windows, or Linux, point it at a folder on your filesystem, and it stores every request, every environment variable, and every collection as plain text files using a format called “Bru” [1].

There is no account. There is no workspace in the cloud. The README states plainly: “Bruno is offline-only. There are no plans to add cloud-sync to Bruno, ever.” [1]

The project sits at 41,905 GitHub stars with an MIT license [1]. Microsoft, Autodesk, and Capital One appear as organizations using it on the homepage [2] — a signal that it’s not a weekend toy but a tool running in real engineering teams.

If you’ve used Postman or Insomnia, the UX is familiar: a left pane for collections, a request builder in the middle, a response panel on the right. The difference is what happens when you hit save — Bruno writes a .bru file to disk. You commit it. Your team gets it via git pull.

The website summarizes the philosophy: “An API Client, not a Platform — Bruno is an open-source challenger to the movement of turning everything into a bloated ‘platform’. A devtool should be extensible and work with the other tools in your stack… not against them.” [2]

Why people choose it

The pattern in user testimonials is consistent: people leave Postman because Postman pushed them into a cloud-first workflow they didn’t want.

Arnaud (@arnaduga) on the Bruno website: “Postman sunsetted scratchpad, making impossible to manage your assets locally: you have to create an account and use their cloud. Unacceptable for businesses. Alternative? Bruno, git friendly and an exponentially growing community.” [3]

Miguel Segovia Gil: “Bye Postman, hello Bruno. I say goodbye to Postman for API pentesting, it has become a very heavy and annoying API client, now it forces you to be connected, log in and use their cloud services to use Collection Runner… Bruno is light, fast, you can work offline and to work collaboratively you are not forced to do it using the Postman cloud.” [3]

Tobias Davis: “Like Postman but you can commit readable collections, using this has been amazing.” [3]

Barath Raj Ramachandran: “Bruno is the only one which only takes a fraction of seconds to load, consumes very less memory and mainly it has the features which are intended to have… once we do and if we like it we will never go back.” [3]

Four reasons dominate:

1. Git-native collaboration. If your collection is text on disk, your team’s existing Git workflow applies. Branches, pull requests, code review, audit history — no extra tooling. Bruno’s pitch: “all of your existing permissions and controls automatically cascade to Bruno. From role-based access, to audit logs, to secret management, there’s no additional configuration needed.” [2]

2. Privacy by default. No data leaves your machine. The website is explicit: “Bruno never syncs any of your data to the cloud and there’s not even the concept of a login or account. We don’t have visibility into what you’re inputting into Bruno, and we certainly aren’t training any AI models with your data.” [2] For teams hitting production APIs that carry sensitive data — healthcare, fintech, internal infrastructure — that matters.

3. Speed. Postman and Insomnia are Electron apps that have added features for years. They start slowly and sit heavy in memory. Bruno is also Electron, but the codebase is younger and the scope is narrower. Users consistently report noticeably faster startup and lower memory use [3].

4. Cost. The core is free. There is no per-seat model on the open-source version.

Features

What Bruno actually does, grounded in the README and website:

  • Protocols: REST, GraphQL, gRPC, and WebSocket [1][2].
  • File-based collections: Every request is a .bru file. Environments are files. Scripts are files. You can co-locate them with the service they test [1][2].
  • Scripting: Pre-request and post-response scripts, assertions, and a test runner.
  • Environments and variables: Local environment files per collection; secrets stay local [2].
  • Cross-platform: Native builds for Mac (Homebrew), Windows (Chocolatey, Scoop, winget), and Linux (Snap, Flatpak, apt, AUR) [1].
  • CLI runner: A command-line runner (@usebruno/cli) for CI/CD — point it at a folder of .bru files and it runs them. Useful for API contract tests on every pull request.
  • Import: Postman collections, OpenAPI 3.0 specs, Insomnia exports, and curl commands all import into Bruno’s format.

Golden Edition (one-time $19/user) adds: visual Git diff for collections, load testing, OpenAPI designer. These are nice-to-haves, not blockers — the free core is complete for everyday API development [4].

What Bruno does not do: hosted mock servers, API monitoring, a hosted public API directory, or any form of cloud workspace. Those are intentional omissions, not gaps in the roadmap.

Pricing: SaaS vs self-hosted math

Postman’s public plans:

  • Free: 3 collaborators, throttled collection runs.
  • Basic: $14/user/month billed annually.
  • Professional: $29/user/month billed annually.
  • Enterprise: custom pricing.

Bruno:

  • Core: $0. MIT license. [1]
  • Golden Edition: $19 one-time per user — load testing, visual Git diff, OpenAPI designer [4].

Concrete savings for a 10-person engineering team:

PlanPostman BasicPostman ProfessionalBruno coreBruno + Golden Edition
Annual cost$1,680/yr$3,480/yr$0$190 one-time

Over three years: Postman Professional costs $10,440 for 10 users. Bruno with Golden Edition for every developer: $190, ever.

The caveat: if you currently use Postman’s hosted mock servers, monitors, or the public API network, Bruno doesn’t replace those services. It replaces the API client — the request-sender — which is what most people actually use Postman for day-to-day.

Deployment reality check

There is nothing to deploy. Bruno is a desktop app.

Mac:

brew install bruno

Windows:

choco install bruno
# or
winget install Bruno.Bruno

Linux:

snap install bruno
# or
flatpak install com.usebruno.Bruno
# or via apt (see GitHub README for keyring setup)

Total setup time for a developer: under two minutes [1]. For a non-technical stakeholder, it’s a standard “download installer, run installer” process — ten minutes if they’ve done it before, longer if they haven’t.

The “infrastructure” story for teams is: create a folder in your repository named api/ (or wherever makes sense), put your Bruno collections in it, commit. Everyone who clones the repo gets the collections. That’s the entire setup.

For CI/CD, add @usebruno/cli to your pipeline:

npm install -g @usebruno/cli
bru run --env production

The only meaningful friction is onboarding people who don’t use Git. If your QA team uses a GUI Git client and can commit/pull, they’re fine. If they’ve never touched version control, someone needs to set up the repo and show them two commands.

Pros

  • Free MIT core — no accounts, no cloud, no per-seat billing [1].
  • Collections are plain text files — diff, review, and merge with Git like any source code [1][2].
  • Nothing leaves your machine — no cloud sync, no telemetry on your request data, no AI training on your API calls [2].
  • Fast and lightweight — noticeably quicker to start than Postman or Insomnia per user reports [3].
  • 41,905 GitHub stars and active development — not a dead project [1].
  • Supports REST, GraphQL, gRPC, and WebSocket in one app [1][2].
  • CLI for CI/CD.bru files are first-class artifacts you run in pipelines.
  • One-time payment for extras — $19 Golden Edition, no subscription [4].

Cons

  • Desktop-only. No browser version. Sharing with a non-developer means asking them to install software [1].
  • No hosted mock servers or monitoring. If you rely on Postman’s hosted services, Bruno does not replace them.
  • Git literacy required for teams. Collection sharing is a Git repo, not a link. A non-technical QA person needs someone to set up the workflow once.
  • Some useful features sit behind Golden Edition. Load testing and visual Git diff are paid — though $19 one-time is not a serious barrier [4].
  • Bru format is proprietary. Your collections are in Bruno’s format. Exporting to Postman or OpenAPI works, but the migration has friction.
  • Smaller plugin and template ecosystem than Postman. Fewer community-built collections for public APIs.

Who should use this / who shouldn’t

Use Bruno if:

  • Your team already uses Git and code review.
  • You want API collections tracked with the same rigor as source code, visible in pull requests.
  • You handle sensitive data (production secrets, healthcare APIs, financial data) and don’t want it touching a vendor’s cloud.
  • You’re paying $14–29/user/month for Postman and most of that cost goes toward the API client, not hosted services.
  • You value speed and low memory use.

Don’t use Bruno if:

  • You need hosted mock servers, API monitoring, or a public API portal as core workflow.
  • Your collaborators can’t or won’t use Git.
  • You need browser-based access for non-developers to run API tests.
  • You’re deeply invested in Postman’s runtime features — flow builders, workspace analytics, governance dashboards — and the switching cost outweighs the savings.

Alternatives worth considering

  • Insomnia (Kong). Desktop API client, has a Git sync plugin, freemium. Kong acquired it and some workflows now push toward account-based features. Closer feature parity with Postman than Bruno.
  • Hoppscotch. Open-source, web-based, MIT. Self-hostable on your own server. Good if you want browser-first access and don’t need native desktop. 70K+ GitHub stars.
  • HTTPie. CLI and a desktop app. Different mental model — great for quick one-off requests, less collection-oriented for teams.
  • Thunder Client. VS Code extension. Lives inside your editor. Lightweight; has a free tier with limits and paid plans for teams. No separate app to install.
  • Postman. The incumbent. Most feature-complete if you use the hosted services. Most expensive at scale.
  • RapidAPI / Paw. Paw is Mac-only and polished; RapidAPI acquired it. Paid. Good if you live in the Mac ecosystem.

For teams leaving Postman specifically because of cloud lock-in and per-seat pricing, the realistic shortlist is Bruno and Hoppscotch (self-hosted). Pick Bruno if you want native desktop and Git-native file storage. Pick Hoppscotch if you want a browser UI or want to host a shared instance your whole team hits via URL.

Bottom line

Bruno solves one problem well: it makes API collections a first-class part of your codebase instead of a second system in someone’s Postman workspace. If your team uses Git, the entire collaboration model follows for free — review collections in PRs, branch them per feature, co-locate them with the services they test. The privacy story is real: nothing leaves your machine, ever. The cost story is obvious: $0 versus $14–29/user/month indefinitely. The trade-offs are also real: no browser version, no hosted mocks, Git required. For an engineering team that already uses version control and is tired of Postman’s growing platform ambitions and shrinking free tier, Bruno is an afternoon of migration and then a line item permanently off the budget.


Sources

  1. Bruno GitHub repositoryhttps://github.com/usebruno/bruno (41,905 stars, MIT license, README)
  2. Bruno official websitehttps://www.usebruno.com
  3. Bruno website testimonialshttps://www.usebruno.com (Customer Testimonials section)
  4. Bruno pricing pagehttps://www.usebruno.com/pricing