Postman became a pain in the ass. You can't do anything without signing in, and they're constantly pushing cloud features nobody asked for. Insomnia has weird UI quirks that make you want to throw your laptop out the window.
Bruno stores everything as plain text files on your filesystem. No cloud bullshit, no login screens, no "upgrade your plan" popups.
Git Integration That Actually Works
Here's the deal: your API collections are just files in folders. You can commit them, branch them, merge them. No more "how do I share this Postman collection?" conversations.
Been using Bruno since early 2024 and the Git integration actually works. Create a branch for a new feature, add your API tests, merge back. Just like any other code - no special export/import bullshit.
The .bru File Format
Each API request is a .bru
file that looks like this:
meta {
name: Get User Profile
type: http
}
get {
url: {{baseUrl}}/api/users/{{userId}}
}
headers {
Authorization: Bearer {{authToken}}
}
tests {
expect(res.getStatus()).to.equal(200);
}
It's readable, version-controllable, and doesn't break when you look at it wrong.
Current State
Bruno's actively developed - they push updates pretty regularly. I'm running v1.29.1 or something close to that. Popular enough that there's an active community posting actual fixes on GitHub instead of just whining.
Recent versions added gRPC support, better OAuth handling, and cookie management. Development's active - they're pushing updates every few weeks, which beats the shit out of some projects that die after six months.
I stopped tracking specific versions because the auto-updater works fine and I'm lazy.
Privacy: No Cloud Means No Problems
Bruno doesn't have accounts. No login, no cloud sync, no data collection. Your API requests stay on your machine where they belong.
This matters if you work with production APIs containing sensitive data. I've seen too many developers accidentally share API keys through Postman's cloud sync.
What They Don't Tell You
Bruno's not perfect. The variable system is weird if you're coming from Postman - no global variables concept. Large collections start to feel slow around 500+ requests. And the gRPC support is new enough that I wouldn't trust it in production yet.
File watching breaks randomly and you have to restart the damn thing. The Homebrew formula gets stuck on macOS sometimes. Windows antivirus occasionally throws false positives on the .exe - typical shit for electron apps.
But honestly? For HTTP APIs, it's solid. Migrated our team's Postman collection in March 2024 - took about a week of pain to get everything working. Postman's pre-request scripts are completely fucked, their {{$guid}}
variables don't exist, and I had to redo every OAuth flow from scratch.
Spent three days just figuring out why our auth wasn't working - turns out Bruno handles environment variables differently and I was being a complete idiot. Still worth the migration though, just to never see another "Sign in to save your progress" popup.