Home » Software review » Web » Forget Postman – use Bruno!

Forget Postman – use Bruno!

Recently (well, in October) Postman has forced everyone to register an account or have no actual collections on a local machine (they call this “Scratch Pad”, apparently). The collections are, apparently, stored in a “cloud” (e.g. in Postman servers) – which is just not ok for me, because they may (actually they for sure will) contain customer’s data.

Solution? Use Bruno!

As project page says:

Bruno stores your collections directly in a folder on your filesystem. We use a plain text markup language, Bru, to save information about API requests. 

You can use git or any version control of your choice to collaborate over your API collections. 

Bruno is offline-only. There are no plans to add cloud-sync to Bruno, ever. We value your data privacy and believe it should stay on your device. Read our long-term vision here.

And best of all, Bruno is actually more useful than Postman. It has better scripting support, including support for inclusion of custom external JS libraries.

“But I can’t switch – I have all my stuff in Postman!”, I hear you say. Don’t worry – it’s possible to migrate Postman collections to Bruno. The process is not ideal, and not everything might be perfectly migrated – but bulk of the stuff will be there.

So, migration steps are:

  1. Install Bruno
  2. Get your latest Postman backups – in macOS they’re in ~/Library/Application Support/backup-*.json
  3. Get individual collections out of that JSON using jq cli util. I had 21 collections, so I did this: for INDEX in $(seq 0 20 ); do; cat backup-2023-10-05T08-45-00.851Z.json | jq -r ".collections[$INDEX]" > collection_$INDEX.json; done
  4. Convert these collections from version 1 to version 2.1: install postman-collection-transformer via npm install -g postman-collection-transformer, then do something like for INDEX in $(seq 0 20 ); do; postman-collection-transformer convert --input collection_$INDEX.json --input-version 1.0.0 --output collection_v2_$INDEX.json --output-version 2.1.0; done
  5. Import resulting files into Bruno

I actually did this all back in October, and wrote a post about it in Ukrainian on my other social media – but forgot to post it here. So here I am now, fixing this omission.

Hope this was helpful.

Leave a comment