Bruno: An API Client That Keeps Your Collections in Plain Text
If you've ever tried to review a Postman collection in a pull request, you know the pain. The JSON blobs are unreadable, the diffs are a nightmare, and somewhere along the way your API requests stopped feeling like files you own and started feeling like data trapped inside someone else's app. Bruno takes a different approach: it stores your collections directly on your filesystem in a plain text markup language called Bru.
What It Does
Bruno is an open-source IDE for exploring and testing APIs. It's a desktop application available for Mac, Windows, and Linux, and it positions itself as an alternative to Postman and similar tools. The core idea is simple: instead of locking your API collections inside a proprietary format or a cloud account, Bruno saves them as plain text files in a folder you choose.
Those files use Bru, a markup language designed specifically for describing API requests. Because everything lives on disk in a readable format, you can use Git—or any version control system you prefer—to collaborate on your API collections with your team. There's no account required, no sync service in the middle, and no proprietary database standing between you and your own work.
Bruno is offline-only by design. The project states plainly that there are no plans to add cloud sync, ever, framing this as a commitment to data privacy. Your requests stay on your device.
Why It's Cool
-
Version control that actually works. This is the headline feature, and it's worth sitting with. When your API requests are plain text files, code review, branching, and merging all behave the way you'd expect them to. You can diff a change to an endpoint and see exactly what changed, line by line. That's a fundamentally different experience from reviewing a sprawling JSON export.
-
No lock-in by architecture, not just by promise. Plenty of tools claim to respect your data. Bruno's design makes the claim structural: your collections are files on your disk. If you stop using Bruno tomorrow, you still have them, and they're still human-readable.
-
A deliberate stance against cloud sync. The README is unusually direct here—no cloud sync, no plans for it, ever. Whether or not you agree with that absolutism, it's refreshing to see a tool draw a clear line and stick to it. Privacy isn't a feature toggle; it's the default state.
-
Cross-platform and package-manager friendly. Bruno ships as a binary download for Mac, Windows, and Linux, and it's available through Homebrew, Chocolatey, Scoop, winget, Snap, Flatpak, and Apt. That's broad coverage, and it means you can install it the same way you install everything else.
-
An open core with a clear boundary. Most of Bruno's features are free and open source. There are paid versions for teams that want more, and the project is upfront about trying to balance open-source principles with sustainability. That's an honest framing rather than a bait-and-switch.
It's also worth noting the sheer number of translated READMEs—Ukrainian, Russian, Turkish, German, French, Portuguese, Korean, Bengali, Spanish, Italian, Romanian, Polish, Chinese in both simplified and traditional scripts, Arabic, Japanese, Georgian, Dutch, Persian, and Hindi. That's a community investing real effort into making the project accessible.
How to Try It
The fastest path is a package manager. Pick your platform:
# On Mac via Homebrew
brew install bruno
# On Windows via Chocolatey
choco install bruno
# On Windows via Scoop
scoop bucket add extras
scoop install bruno
# On Windows via winget
winget install Bruno.Bruno
If you'd rather grab a binary, head to the downloads page at usebruno.com/downloads. There's also a Bruno CLI and a Docker option mentioned in the README if you want to run things outside the desktop app.
Once installed, create a collection, point it at a folder on your filesystem, and start adding requests. Then commit the folder to Git and see what your diffs look like. That's the whole pitch, and it's worth testing firsthand.
You can find the source and the full documentation at github.com/usebruno/bruno.
Final Thoughts
Bruno isn't trying to out-feature Postman. It's making a specific bet: that developers who care about owning their data and reviewing API changes like code will trade some convenience for transparency and control. If your team already lives in Git and you've been frustrated by opaque collection formats, this is aimed squarely at you. If you depend on cloud sync and shared workspaces, the offline-only stance will be a dealbreaker—and the project seems fine with that. The honest takeaway is that Bruno is a focused tool with a clear philosophy, and if that philosophy matches how you work, it's worth the download.