return to table of content

Bruno: Fast and Git-friendly open-source API client (Postman alternative)

d0gsg0w00f
75 replies
22h37m

Thank you. As soon as Postman asked for a login I uninstalled it and have been curling from text files ever since. My younger coworkers won't drop Postman though. Maybe this will help them switch.

bisby
27 replies
22h30m

The irony that I switched to Insomnia after Postman started demanding a login... and now I've been actively looking for alternatives (Bruno being on the list) now that Insomnia has done the same thing.

margorczynski
11 replies
22h11m

Well based on historical experience with Postman and Insomnia most probably Bruno will go the same way once they get enough users hooked in.

Especially once a VC gets into the fold.

helloanoop
9 replies
21h15m

Hey there, this is Anoop - creator of Bruno.

Happy to see Bruno at the top of HN

We will never take VC funding. We received around 10 inbound reach outs from VCs till date and have denied funding from all of them.

We will remain independent and I have written about it in detail here https://www.usebruno.com/blog/bootstrapping

Sn0wCoder
3 replies
17h1m

Hi Annop. Thanks for sharing this looks like a good alternative to Postman. I see the company is based out of India (awesome) but wanted to know if the company has gone through the steps needed to sell to teams in the healthcare industry in the US/UK i.e.) HIPPA, SOX2, PCI, GDPR, etc.…

jasonjayr
1 replies
14h12m

If they never take possession of the user's data into their environment, then most, if not all of those don't even come into play?

Like, that's kinda the whole point of offline-first, local-only tools, you can 100% use them in a an environment you control and take responsibility for. Once you take control of customer's data, there's a whole litany of due diligence that must considered, and often at considerable cost.

Sn0wCoder
0 replies
9h36m

While I agree with you and understand that the data is local only, we can only use tools approved by the company. I would like to suggest that my team take Bruno for a 3 – 6 month test drive (since Postman was unable to check the boxes) but cannot without approval….

unmole
0 replies
14h36m

if the company has gone through the steps needed to sell to teams in the healthcare industry in the US/UK i.e.) HIPPA, SOX2, PCI, GDPR, etc.

They haven't.

hyperthesis
0 replies
12h39m

An API client is not venture scale.

Your link makes sense, and I believe you. Have struggled with similar issues. But who knows what the future will bring? Google once said "don't be evil"; Oracle bought Sun. Is there any way you can guarantee your future actions? Contracts, articles of association/company constitution? Maybe setup a trust or charity? I don't think there is.

bloopernova
0 replies
18h36m

Please give the real Bruno a hug from this Internet stranger? He looks like a very good boy.

biglyburrito
0 replies
20h3m

Thank you for posting here, and also for Bruno... I'll be giving it a shot in the coming days, as I only learned about it when I read this post.

ARandomerDude
0 replies
18h2m

Recommend you copy/paste this as its own top-level comment on this article, so it doesn’t get buried.

7fYZ7mJh3RNKNaG
0 replies
18h40m

Thank you for clarifying. Just made me download it.

josephcsible
0 replies
21h48m

I foresee this happening too. For me to not worry about this, three things would have to happen:

1. Open source everything, including the parts of the code that are currently premium

2. Switch to a copyleft license like the GPL

3. Start accepting substantial contributions from the community without a CLA

Then they'd be legally unable to do that kind of rug pull.

dumbo-octopus
10 replies
21h19m

Download Insomnia 2023.5.8 and disable automatic updates.

Though Insomnia doesn't work with streaming responses at all, which is a bit of a non-starter in the age of AI. Anyone know a good streaming HTTP UI?

dumbo-octopus
5 replies
16h48m

Yes, that is that I mean. All the modern "ChatGPT" style API's use this, so if you're building anything that invokes them you can choose between buffering the entire response and modifying/relaying it once complete, or building up a toolchain of streaming-capable utilities.

Of all the http-client applications I tested (Curl, Postman, Insomnia, Bruno), somewhat hilariously Curl has the best support. It will output all 'Transfer-Encoding: chunked' with line-by-line buffering, whereas Postman only supports responses precisely following the `Content-Type: text/event-stream` format (strictly less powerful than curl, as this format requires newlines in between events, and a bunch of overhead on top of that). The others buffer the entire response before displaying anything.

The `Content-Type: text/event-stream` format is fine enough, but I personally prefer to just plainly chunk the responses and let the client choose whether to buffer them into memory and operate on the entire value at once, or interpret them live as the chunks come in. With tools like gjp-4-gpt (Gradual JSON Parser 4 GPT's) you can even interpret partial JSON objects live as they come in and display complex/nested data structures in a generative manner.

1vuio0pswjnm7
4 replies
14h55m

What if instead of JSON, i.e., strings of unknown length, used something more like netstrings.

https://cr.yp.to/proto/netstrings.txt

Personally I use a lame but effective simple 85.9 KiB static binary filter, a small C program, that removes the chunk sizes so the response is ready for use by other programs, e.g., in a pipe. Buffer is set at 8 KiB.

Is there a way to experiment with one of these streaming JSON GPT APIs non-interactively by just sending an HTTP request, without need for a third party program, an account, use of a Javascript engine, etc.

dumbo-octopus
3 replies
14h24m

The unknown length isn't much of a problem for me in practice: GPT's are slow enough that getting a large chunk is almost impossible. I like the idea of the C filter, but in the end you're just piping the data to the program, why add the middle step? Is it to protect against too-large chunks in some way?

I don't know a public API that returns JSON slowly, but you could simulate it by just taking a JSON string, splitting it into 3-5 char chunks, and sending each of those in a `Transfer-Encoding: Chunked` response at ~100ms intervals.

Actually, now that I look at the underlying mechanism behind `Transfer-Encoding: Chunked`, it looks like it's already basically the same as the netstrings. What I'm referring to is the (variable length) contents of the netstring/chunk being sequential slices of a JSON object.

1vuio0pswjnm7
2 replies
13h5m

"I like the idea of the C filter, but in the end you're just piping the data to the program, why add the middle step?"

Only for the flexibility to use more programs. Otherwise every program I use to process HTTP responses needs to be able to accomodate chunked transfer encoding. Plus only a minority of sites send chunked responses. Instead, have one program that does one thing: remove chunked transfer encoding.

IIUC, what you want is uniform chunk sizes where you know the size before you send the request.

GPTs sound annoying if they are so slow that they only output a few characters every ~100ms..

dumbo-octopus
1 replies
10h59m

Ah I see, I'm working a bit further up the stack from you so the JS runtime handles making the transfer encoding of the response more or less irrelevant, for any response with any encoding you can access `response.text()` and get the entire contents when they're ready, or do something like `for await (const chunk of response.body) { ... }` to work with the pieces as they roll in.

IIUC, what you want is uniform chunk sizes where you know the size before you send the request.

I don't think so... I don't really want anything! Just a GUI that displays existing HTTP chunked responses as they come.

GPTs sound annoying if they are so slow that they only output a few characters every ~100ms..

That's perhaps an exaggeration, but in general the speed and "smartness" of the model are inversely correlated.

1vuio0pswjnm7
0 replies
10h25m

I'm not really a GUI person nor do I use JS. I'm happy to see HTTP responses in textmode. I tried playing around with Postman and some other similar programs a while back in an attempt to understand how they could be superior to working with HTTP as text files. But I failed to see any advantage for what I need to do. One problem with GUIs/TUIs IMHO is that generally few people write them or modify them. And so users must look around to try to find one written by someone else that they like. Then they are stuck with it, and whatever "options" its author chooses to provide. Whereas with textmode programs, I can easily control all the aesthetics myself. Even when using other peoples' software, if there is something that annoys me, I can usually edit the source and change it.

Best of luck. Hope you can find the right program for viewing HTTP.

ponector
2 replies
20h54m

Why not to do the same with postman? I still use it without the login.

dotancohen
1 replies
20h36m

From where do you download old Postman versions? More importantly, which was the last version recommended?

dumbo-octopus
0 replies
14h12m

The "Lite API" mode of current Postman is actually decent, it's the only GUI client I know that supports streaming responses, but you have to use `Content-Type: text/event-stream`. You can't save/share queries, but the local history is decent enough for local development. I prefer it to the Insomnia mutable fixed length saved query implementation for "hacking around" with many different APIs.

leosanchez
1 replies
22h22m

Have you tried hurl ?

winphone1974
0 replies
18h40m

Hurl is great, especially for testing but I fear it's not acceptable by a huge segment of developers because of the lack of a UI

dotancohen
0 replies
20h34m

It's not open source, but it's in my workflow anyway. The JetBrains HTTP tool is excellent, and has been getting better and better for quite some time.

adhamsalama
0 replies
22h20m

Try Insomnium.

hn_throwaway_99
10 replies
21h38m

Can't echo this enough. Thank you! Beyond just the login reqs from Postman, the whole Postman UI has become an overcomplicated mess in my opinion. I just want something simple to make remote HTTP calls. I can understand adding some useful extra things like variable interpolation and separate environments, but beyond that, Postman went way off the "enterprisey" deep end.

Alifatisk
6 replies
19h45m

You should try insomnia

vorticalbox
3 replies
19h7m

This also requires a login I believe

vladvasiliu
0 replies
18h58m

You can still use it without an account, although it tries quite hard to get you to use one.

piyh
0 replies
16h51m

They locked users data behind a login screen a week after postman, then had a half assed "sorry you misunderstood our corrupt intentions, we'll back out the change" apology

paulryanrogers
0 replies
18h59m

Not at first but as of late, yes. :(

winphone1974
1 replies
18h43m

Insomnia and postman are pretty similar these days. I like the REST extension for VS Code and hurl

amirathi
1 replies
14h11m

When you raise $$$ - the nice little API client needs to become "Enterprise API Platform"

parkerrex
0 replies
13h22m

^this

myaccountonhn
0 replies
15h27m

I use hurl, works absolutely great and the scripts end up reusable by others.

rozenmd
6 replies
21h25m

I started using Yaak after Insomnia and Postman both decided to become user-hostile, it's decent: https://yaak.app/

You'll never guess who makes it.

gschier
2 replies
19h13m

Yes, it's me! Thanks for the mention

staticshock
1 replies
17h31m

Do you have any plans to open source the thing?

gschier
0 replies
17h22m

Not at the moment. If I decide to pursue it full time then probably

roskoez
1 replies
20h4m

Jeff Minter?

ben_w
0 replies
17h9m

Was thinking about him earlier (due to a bad pun on my part). Glad he's still around making games.

staticshock
0 replies
19h55m

Heyo, looks like it's Gregory Schier, the maker of Insomnia: https://schier.co/

YetAnotherNick
5 replies
21h29m

While I do hate Postman because its overcomplicated in everything.

But attitude like yours has shifted people and money away from developer tools. Instead of all the possible tools we could have from many developers, we are now totally dependent on big tech to sponsor it, like VSCode etc. And over time it would move in direction that will promote another service from the same company like copilot and vscode.

ryandrake
3 replies
17h48m

Developer Tool Developers are hurting themselves. I think it is reasonable to not want to have to log in to every darn thing you use on the internet. Especially developer tools.

Someone needs to invent a hat that developers have to wear: when the developer starts to write signup, login or authentication code, a hand pokes out of the hat and slaps him.

ryandrake
0 replies
17h23m

Yes, telemetry too! And automatic updates. They are all symptoms of companies’ obsession with having some kind of ongoing post-purchase “relationship” with their users. As a user, I don’t want this relationship! I just want to buy the tool and use it, without ever interacting with the manufacturer ever again.

If I buy a circular saw, I don’t want a relationship with Makita. I don’t want to have to log in to use it. I don’t want it telling Makita how many boards I cut and how well the saw is working. No offense, but I’m just not that into you, Manufacturer.

YetAnotherNick
0 replies
13h53m

Judging by vscode's or copilot's or postman's popularity, login is not the issue. The issue is the quality of the tool and number of developers they can hire.

ben_w
0 replies
17h6m

"A GUI for a command line tool" is, these days, at the level where you can get the first 80% of the value by asking ChatGPT to write it for you by copy-pasting in the bits of the man page for the options you want.

(The second and third 80%'s still need human intervention).

Eji1700
5 replies
20h7m

I know people don't love VS Code, but is there a reason Thunder Client isn't more popular? I know it's feature lacking compared to postman, but more so than curling?

majkinetor
2 replies
19h46m

Team options are behind the paywall. Besides, bruno is simply better.

MissTake
1 replies
19h30m

Not necessarily so. We don’t pay but our small team still shares projects with the tool.

majkinetor
0 replies
9h29m

Sure, its possible, not exactly great experience though.

icandoit
0 replies
17h18m

It limits collections to 50 endpoints. I also couldn't immediately see how to plug tokens into variables. Bruno is intuitive and has no pay-to-remove limits.

CharlesW
0 replies
19h47m

This looks nice too, thanks for sharing! I can also recommend RapidAPI for macOS users.

_flux
2 replies
21h28m

I use httpie's CLI tool for testing application/json endpoints. That and some jq really can make some things nice.

(Apparently it has a GUI version as well, but I'm not interested in trying it.)

hackernoteng
1 replies
21h4m

I also have fallen back to just using curl + jq and a set of saved commands since both postman and insomnia have decided to make my life harder not easer. good old plain unix command line tools never fails you.

_flux
0 replies
4h4m

You may consider giving httpie cli a test drive, if you are dealing with json endpoints. You can put in Bearer header and JSON arguments quite easily with

    http localhost:1234/end/point Authorization:$bearertoken arg1=hello arg2:='{"a":42}'
and get colorized JSON out from it. I use my script called Authorization to fish out the bearer token so in my case the call is just

    http .. "`Authorization`" ..
So while one can achieve the same with some jq+curl, it perhaps is a bit more prepackaged in httpie.

parentheses
1 replies
14h51m

I will usually take curl commands i end up calling a lot and use a function or script to make those calls easily. I find this to be way better for me personally. I feel using Postman teaches you only Postman. Whereas making shell tools and learning curl are so much more valuable. Plus, you can combine them with fzf, jq, fx, yq and friends to easily customize.

jicea
0 replies
13h13m

Shameless plug for Hurl [1]: it's a cli tool, based on plain text and curl to run and test HTTP requests. It's just libcurl + the possibility to chain and test response. You may like it! (I'm one of the maintainers)

[1]: https://hurl.dev

ivan888
1 replies
18h29m

vim-rest-console[0] has been my Postman alternative for years. It basically wraps curl and makes it super easy to make different requests from a single text file. Can even write YAML and have it converted to JSON before being sent in the body. Really great tool

0: https://github.com/diepm/vim-rest-console

d0gsg0w00f
0 replies
16h47m

This looks right up my a alley. Thanks for sharing!

asabla
1 replies
22h4m

I did something similar as well. But instead curling from files I've been using http-files.

Depending on which project I'm working on (and customer), I'll be using different tools to run em.

But to show you an easy example to follow, you could check out this jetbrains cli tool https://blog.jetbrains.com/idea/2022/12/http-client-cli-run-...

d0gsg0w00f
0 replies
19h8m

I think it's just the nature of how I use APIs. I do discovery with curl then just write a golang CLI for long term use. I'd probably save a lot of boilerplate using something like http-files though.

Poliorcetes
1 replies
21h37m

here's the thing, developers probably like to eat, so the program has to eventually make money somehow. how does this program plan to make money?

jimbokun
0 replies
14h50m

I tend to collect little Ruby one or two liners for common REST calls, and now Go. Takes care of things like getting a JWT token and including it in the right header, as reusable code.

Takes slightly longer the first time than curl or Postman. But much more powerful in terms of using in scripts for operations tasks.

interbolt_colin
0 replies
22h7m

Great point. I almost wrote, "why use a bru file when more established scripting languages and libs exist for this". But it seems the point here is to bridge the gap between some devs (maybe more junior) on a team that prefer a GUI while also providing a more vc/cli driven experience for the rest of the team.

Not to mention, that bru syntax looks really nice.

gitaarik
0 replies
21h44m

Hehe, always the same. Popular non-FOSS software always dies in these kinds of ways. That, and that it's Chrome-only, is why I never wanted to use Postman. I've been using RESTED [1] in Firefox happily for quite some time. Although I don't use it that much since unit tests and Django Rest Framework's web UI is usually sufficient for testing and debugging.

[1]: https://github.com/RESTEDClient/RESTED

duxup
0 replies
13h58m

I just liked when I could start postman and it would just start fast.

As it is the things I test start up faster than postman who is … I don’t know what it was doing when I quit on it.

4death4
0 replies
17h8m

Do you just store the entire curl command in a text file or do anything more complicated?

pjmlp
14 replies
10h34m

I find interesting on how on a startup related forum, anything related with not paying is always celebrated.

ianberdin
4 replies
10h1m

Once CEO asked me: "why are you spending months of your valuable time to create a tool to solve a thing, instead paying $10/month?"

"I know developers never pay, but why?"

otabdeveloper4
1 replies
9h18m

It's not the money, it's the control you relinquish in the process. The potential costs of the risks involved are much, much greater than $10/month.

jampekka
0 replies
7h42m

This. Proprietary software tends to be very inflexible, often low quality, and difficult to integrate. Fighting with these often causes more work than just doing from scratch or adapting open source code.

sdeframond
0 replies
6h36m

People who spend months of their time building open source represent a fraction of developers who "never pay".

Why pay when there is a free, open and, if need arises, hackable alternatives ?

Developers do pay when there is value is. See how profitable cloud hosting is!

GraemeMeyer
0 replies
7h19m

In my case it’s because companies would rather waste 6 months of person-hours than get out the credit card

throwaway220033
0 replies
10h9m

Great to see most people are smart enough to not apply same model on all problems in their life.

Productivity tools better to be lean, simple, free & open source in some cases. This is one of those.

Of course, you can keep throwing money at bulky software continuously making things slower and more complicated, just because you never have to worry about money thanks to the VC money. I’m old enough to not buy that this is how startups operate in general though.

onion2k
0 replies
9h14m

Startups are often all about disrupting an industry by lowering the cost of a product. If you can lower it to zero that demonstrates the incumbent businesses are obviously not providing a valuable service that's worth paying for.

mr_mitm
0 replies
6h51m

I can only speak for me, but I come here for the hacker news part, not the ycombinator part.

mplewis
0 replies
1h51m

We have all been fucked over by VC management, especially from YC-funded product bloat and rot. Free means it will not get worse by the developers adding micro transactions and subscriptions.

jpalomaki
0 replies
5h33m

I think one issue is that in organizations it takes effort to get new paid software approved and start paying for those. Even if the money is very small. Like engineer that costs $80-150k/y needs couple of tools that cost €50-100/y piece.

Usually in organization it is much easier to just increase the spend on already approved vendors. Increase the AWS spend by $50/year? Nobody is going to ask you about it. Or start using some tool that does not involve payments - nobody even knows you are using it.

It would be great if we could change that. A world where independent software developers could make a decent living by selling small quality tools would be a better place.

aniforprez
0 replies
6h2m

There is no universe where I see myself paying for postman. It was a bloated, hobbling mess that is now a chundering monster that has to somehow make money to satisfy VCs who invested in a glorified cURL interface and have to stuff it with features to try and entice enterprises. It is everything wrong with software and I welcome any lightweight alternatives

Merik
0 replies
10h11m

Generating revenue through the creation of value via innovation is great; using dark ux patterns to extract revenue from a captive user base, not so much.

I think in cases like postman, people don’t like when features they previously had used for free suddenly comes with a price tag; rather than innovate and create new value that is worth paying for, some companies are opting to take away features user previously had. Yes, they own/control the software and want to make money , which fine, but they created a dissatisfying user experience as they tried to coercively move users into their cloud offering, wether they wanted to or not, and regardless if it provided user value. After they did that, they shouldn’t be surprise a portion of their user base decide to ditch the product and complain about the experience. This is compounded by the fact that they leveraged the contributions of an open source community, and at the same time there are other options freely available that aren’t locked into a proprietary cloud login.

Kinrany
0 replies
1h34m

"Civilization advances by extending the number of operations we can perform without thinking about them."

Being non-free is a defect that can always be improved, best technology is always free and something you don't need to think to use.

masa331
13 replies
22h28m

Can someone explain what Postman or Bruno is for? I know it's something for interacting with apis but why would i use it. I interact with apis a lot with curl or wrapper in my languages but never really needed something else?

jmopp
1 replies
22h19m

As someone who uses curl and postman regularly, both tools have their places: I've found curl most useful for quick ad-hoc requests, or if I need to figure out why my service is no longer working. Postman I've found most useful to create a library of requests that are available on-hand: If I need to call services but I don't want to have to remember what the exact URL is or what the exact payload is.

leosanchez
0 replies
22h16m

Have you tried hurl ? It's kind of a mix between curl and Postman

abledon
1 replies
22h22m

Alot of people in tech/tech-adjacent cant use CLI, need an easier alternative. Also, instead of having a huge .txt/.md recursive directory of curl commands, programs like these bundle up request workflows into 'collections' etc..

epolanski
0 replies
22h20m

Also it helps with documenting/testing.

serial_dev
0 replies
22h6m

One more thing I don't see mentioned is that you can share requests with your team easily, so if you worked on an API integration, you can document it, share it with your team, and when the next time someone else needs to fix something, they can find something that worked at some point and has all the required fields.

Of course you could also just check in to version control these requests as curl commands, so if your team has the technical knowhow, that's about almost the same.

Or even better, you write some tests in your language to make these requests, then you have an integration test, too.

midasz
0 replies
10h16m

For me a big usecase is the ability to save specific requests and categorize / name them. It's a good way to document test data. If someone creates a feature which I want to test or debug I'd have to dig into the database to find which parameters I'd need to use, or I just find the right request in the tool.

konaraddi
0 replies
22h17m

It’s a rich GUI for calling APIs, including rudimentary load testing.

fuzzy2
0 replies
9h51m

To put it simply: Postman is for everything but what curl is for. Sure it also performs the actual request somewhere under the hood but that’s mostly irrelevant. Having a single integrated user interface (it could also be a text UI) to craft a request, sometimes sending JSON, sometimes a file, then sending it to inspect the result, then modifying the request then doing it again is very powerful. Not to mention OAuth/OIDC support and the like.

Sometimes, you have to find out how an API works, exactly. Sometimes you want to test your own APIs in ways the regular clients do not allow.

ericyd
0 replies
22h20m

For me it's more convenient than curl for three reasons mainly:

1. Easier to organize collections of requests in a visual hierarchy

2. Environments mean you can use the same collection to easily execute against local, dev, staging, production, etc.

3. Pre- and post-execution scripts mean you can programmatically extract values and chain into other requests (think grabbing an access token from an oauth request then using that token for an authenticated request)

It's basically just convenience features, nothing you can't get with other tools.

dt3ft
0 replies
22h22m

Can be used to for api testing. Collections, token handling etc. Mostly for api testing, and collections can be shared among team members and source controlled.

d4rkp4ttern
0 replies
5h48m

I had the same question. My current workflow in deploying a REST API is to write my own thin wrapper in Python and publish that so people can use it. I don’t know if postman/bruno saves me from having to write a wrapper. I also don’t understand the deal with “collections”. Maybe postman/bruno are good for creating a test suite ?

afiori
0 replies
1h12m

My use case (covered by postman but not Bruno) is to test a code base where unit testing is not available.

We have multiple environments with multiple parallel versions (think like dev/staging/prod and current/legacy), these deployments mostly have the same API with slightly different urls and credentials

We use multiple environments to easily switch between the various versions both for one-off operations (like a clear cache call that only needs to be called few times a year in response to external actions) and to manually test features.

I can see why not everybody would have this use case

Iirc Bruno does not have enough environment/variables/pre-post-request scripting support

DotaFan
0 replies
22h15m

I really like to use Insomnia (Bruno alike) to import all project API's and debug API's over Insomnia. Does the job much faster for me.

throwitaway222
12 replies
22h37m

Postman story:

Layoff happened, and we didn't yet have our postman software in our list of services to remove employees from. This is not Postman's fault.

One person had "deleted" all his collections and workspaces after the layoff to clear his laptop of all things related to our company. After we got an email from Postman saying our workspaces were deleted, I removed the laid off users. Since I removed the laid off user, the "trash bin" associated with them was also deleted. Postman support restored all the collections but the "environment" was gone. Which was all of our QA test keys, etc...

Our Postman collections are still in shambles after that, and we don't have any employees to manage it anymore. While I totally don't hold Postman accountable - there is definitely a reason why "no-cloud" is a good way to go with these kinds of tools.

sureglymop
11 replies
22h27m

It makes no sense in the first place for such a tool to even need a login functionality and cloud saves... What's really needed to store information about a few http requests? Maybe a few kilobytes. I never understood it and I particularly don't understand how any company could fall for that. If they instead invested in teaching their engineers how to use curl even that would have paid off more.

gardenhedge
10 replies
22h25m

The benefit of using postman is that you can open the app, see your (shared) collections, easily change the params and hit send. Can curl be used like that?

soraminazuki
8 replies
22h11m

Of course you can. You can use any tool that lets you write down commands, run it, and edit it. Shells, editors, interactive notebooks like Org Mode, etc. The beauty is that it's just text that you can copy and paste between your tool of choice. You're not locked in to a single tool.

throwitaway222
5 replies
21h4m

It's not very fun to run the auth call, then copy and paste the access token to the next call, and have to update all of your curl cmds all the time... Even if you use env variables, that's a horrible way to use env variables.

soraminazuki
4 replies
20h19m

You’re making the case for automation, which happens to be something the shell excels at. Use unexported shell variables or command substitution (e.g., “$(pbpaste)”). Directly use the result of the auth call without going through the clipboard if possible. Create a shell script if shell history isn’t enough. Use interactive notebooks if you need something more advanced. The possibilities are infinite.

throwitaway222
1 replies
11h43m

At this point, just write a script

Or perhaps write a script that has some kind of GUI.

Or maybe make the gui run the URL

You're right the possibilities are endless. And this Bruno and postman or permutations of that endlessness.

soraminazuki
0 replies
5h29m

If I understood correctly, you claimed that saving requests, modifying it, or parametrizing it was somehow more cumbersome to do with curl than with a GUI. I was just pointing out that the shell is literally designed for all those use cases. And human users don't interactively use curl without a shell.

Also, using curl and the shell allows you to progressively iterate. So "write a script at that point" was kind of the point. Though you don't need to go that far to just feed authentication info.

GUI solutions don't have endless possibilities. You start and end with the exact same tool. The clicks and form fillings can't easily be copied around and iterated on unlike commands in a REPL. You can only perform tasks defined by the author of the application.

gardenhedge
1 replies
6h49m

This feels along the lines of the infamous Dropbox comment

soraminazuki
0 replies
5h1m

I was responding to a claim that essentially boiled down to shells can't parametrize input. How is it even remotely comparable to "the infamous Dropbox comment" to point out that shells can do that better than GUI tools?

Also expecting end users to develop their own file syncing solution on top of FTP is unreasonable. Expecting software engineers to be able to use curl instead of a GUI form is not.

eviks
1 replies
14h29m

You're describing the same tool with a much worse UI of recreating the tool yourself (by everyone). There is much value in avoiding that, hence people use integrated tools even with the risks of lock in

soraminazuki
0 replies
4h49m

What UI do you need to recreate and how is it "much worse?" You essentially type in the same information with curl, but without all the mouse clicks and cursor movements.

leosanchez
0 replies
22h20m

You can use hurl which uses libcurl. You can save it to git and commit your hurl testa in the same repo.

Piisamirotta
11 replies
12h33m

Lately Postman suddenly required creating an account to their cloud, to use my five different rest requests from scratchpad. I got annoyed so bad that deleted that piece of cr*p immediately. Never looking back.

Then I found Bruno and fell in love. Thanks for the great work!

fifilura
6 replies
10h10m

We used Postman but it got forbidden in our org for that reason, so no more.

Can't say I really miss it. I personally prefer just using a jupyter notebook for these kinds of tasks. With a custom tool like this it becomes a dead end with the data. Maybe you want to decode it if it is on a binary format. Or you want to plot some basic stats?

throwaway56391
2 replies
10h6m

I've always preferred Insomnia over Postman. The interface fits me better. But now they also started requiring cloud login, so maybe I'll give Bruno a try if it degrades further

360MustangScope
0 replies
5h7m

But then you have to deal with this annoying “feature” of it deleting your data when it feels like it. Can’t tell you how much work I’ve lost to this bug.

I’ve just switched to using hurl. Can’t be bothered with any of this nonsense with all these GUI programs

hn_throwaway_99
1 replies
40m

With a custom tool like this it becomes a dead end with the data.

Not sure if you're referring to Postman or Bruno. The biggest purported benefit of Bruno over Postman is that it saves API request collection files in simple, human-readable text files that are designed to be committed to a source control repo and easily shared, in a way that's not particularly tied to the Bruno app.

The demo video explains in detail: https://youtu.be/b_ctmKlEOXg

fifilura
0 replies
22m

I think i was pretty obvious i was referring to postman. I don't have time to look at a 15 minute video. Is it available in text form?

Does Bruno decode e.g. AVRO or protobuf? Connect to a schema server?

What is considered "human readable"? a JSON file like postman?

Could you elaborate what is the benefit of using this tool compared to a REPL/notebook?

JeremyNT
0 replies
3h31m

This has always been my approach really. Use curl for basic stuff, use a full featured repl for deeper exploration. I use Ruby but same idea.

I never quite saw enough value in tools like postman. Usually either what you are doing is trivial enough for vanilla curl or complex enough to warrant reaching for a general purpose programming language.

yard2010
2 replies
9h11m

Imagine this cloud enshitification reaches everything else. You need a cloud account to curl or wget, use ffmpeg or simply sed lol

cedws
0 replies
2h30m

Crunch of capitalism. Anything that provides value can be turned into something that generates money. Not many people will walk away from money out of the goodness of their heart.

ParetoOptimal
0 replies
4h36m

Emacs, org-mode, and restclient-mode will be there :)

tdudhhu
0 replies
9h15m

Insomnia did the same. There was an option to migrate to an offline account but the migration did not work.

So I turned to Bruno. I have been happy with it but there are some strange issues. Sometimes it does not save settings when I press Ctrl s. I still don't know when this happens but I lost some work a couple of times because of this.

helloanoop
10 replies
14h2m

Hey everyone, this is Anoop - creator of Bruno. Happy to see Bruno at the top of HN!

I will try to address some common questions in this comment.

Well based on historical experience with Postman and Insomnia most probably Bruno will go the same way once they get enough users hooked in. Especially once a VC gets into the fold.

We will never take VC funding. We received around 10 inbound reach outs from VCs till date and have denied funding from all of them. We will remain independent and I have written about it in detail here https://www.usebruno.com/blog/bootstrapping

I didn't stick with Bruno. I think it was due to not having an equivalent to Postman's pre-request scripts.

Bruno has come a long way, we support pre-request scripts and a lot more

But can it handle oauth2? I had to write a httpie script recently just to test an oauth2 api.

We have released oauth2 support, some rough edges are being polished

Good thing it's open source. Money being involved, I don't have long term hopes for it's openness.

I understand this is a hard problem. We are fully bootstrapped and independent. We earn money via selling the Golden Edition. We will build more developer products in the long term, and the goal is to make even the golden edition features also open source in the future. I am committed to this cause.

History goes in circles. New API client appears, adds features, userbase grows. Forced login is added, users are angry and look for alternative. New API client appears.

I have felt this pain. That's one of the reasons why I denied VC funding and chose to remain independent. Having seen 10 years of this cycle, its enough. We don't want to repeat the same saga.

Some good links where I have discussed about opensource, freedom and monetization

- https://www.usebruno.com/blog/bootstrapping

- https://github.com/usebruno/bruno/discussions/269

- https://www.youtube.com/watch?v=7bSMFpbcPiY

We are also working on standardizing and improving the Bru Lang to bring more features in Bruno. See: https://www.brulang.org/

If you'd like to pre-order the golden edition: https://www.usebruno.com/pricing

Thank you for all the love and kind words, HN!

BlueFalconHD
3 replies
12h12m

Did you design the logo? I saw it and immediately wanted to buy a license! Great product!

BlueFalconHD
0 replies
2h20m

agreed

nitinreddy88
0 replies
13h49m

Thanks for the awesome work. Pre-ordered one to support

mr_mitm
0 replies
6h52m

I love your approach and your attitude. VC funding seems to poison everything it touches eventually.

freedomben
0 replies
11h19m

Thank you for the information and the commitment to open source. I know the Gold edition isn't open source under an OSI license, but is it source available for people who purchase it?

I'm strongly considering buying it because it's not a subscription, and is open source. As a general rule, I don't buy proprietary software anymore after having been burned in the past. I have no issues with open source software that has proprietary features as a way to make the project sustainable, if they are source available for paying customers, and personal modifications are allowed. Obviously redistributing any of that code, even my own modifications, would not be acceptable and would violate the license.

You mentioned that the goal is to make the Gold edition features open source eventually, so would you consider going source available?

elephantum
0 replies
6h49m

Anoop, first of all: thanks for your efforts, we switched to Bruno from Postman and are quite happy!

And a question: can you share your plans about Vscode extension? It seems to be broken for a while, do you have plans/capacity to revive it?

ec109685
0 replies
2h43m

Great write up. Curious why you didn’t use xml for brulang since I think it would meet the requirements you set forth:

  - The need for multimaps to represent duplicate keys
  - The need for annotations to ascribe additional information about a key-value pair

boarnoah
0 replies
1h1m

Is there anywhere you have a written explanation of some of the features, especially in the paid version (love a good perpetual fallback license!)

Its really not clear what features like:

- "Performance/Load Testing"

- "Load Data from File for Collection Run"

etc..., are since there is no mention of those in either an upcoming features page or documentation.

gamache
3 replies
19h45m

If you use computers, Curl is awesome. https://curl.se/

mordae
0 replies
10h15m

For JSON based REST APIs httpie is somewhat easier to use.

bdcravens
0 replies
19h30m

In the same sense that no one needs a graphics editor when imagemagick is available via the command line.

BlueFalconHD
0 replies
12h6m

If you use a router, manually connecting wires to send data is awesome

eddyg
0 replies
6h10m

Came here to recommend this.

It does just about everything you can think of, and since it’s just “a text file”, easy to store in git.

The ability to easily use the output from previous responses in subsequent requests makes for great story demos and/or test cases.

And it’s all done in VS Code, using tools/keystrokes/colors you already know and love. :)

meonmyphone2
0 replies
15h52m

This is what I use, my main complaint is that it doesn't format json well when using restclient mode.

joe8756438
0 replies
6h9m

Yes. yes it is. It’s basically compatible with the vs code variant too so team compatibility hasn’t been a problem.

skydhash
7 replies
22h41m

I myself use Paw [0] because it's native to MacOS, but I'm a little bit worried for it's longevity as it being supported by a SaaS business. But so far it's been great to document API for my personal projects.

[0]: https://paw.cloud/

ho_schi
2 replies
11h0m

I’m envy? I’m hoping for a native GUI application for Linux.

Electron looks ugly, it doesn’t integrate, fails to handle HiDPI usually, in best case it eats a ridiculous amount of memory (factor 5x compared to native) and in worst case it has security issues due to Blink and lot of JS.

Electron is Flash for the Desktop.

reddalo
0 replies
10h4m

I agree. Whenever I can choose between a webapp/Electron or a native app, I'll always go with the native app.

ozim
0 replies
8h6m

Electron is the only cross platform UI that is open and using web standards that are not tied to a single company.

It is exactly the opposite of flash.

thijsvandien
0 replies
12h27m

Never "upgraded" from 3.4.0 and never going to. For now it works fine, but at some point I'm going to need to switch...

mberning
0 replies
20h15m

Quickly turning into abandonware. I tried moving my paw library from one computer to another and it crashes opening the file. Had to start from scratch.

jurassicfoxy
0 replies
22h33m

Second vote for Paw. I also was not happy about the buyout. It has some quirks, but pretty awesome overall.

aPoCoMiLogin
0 replies
21h22m

the extensions and ability to write your own extensions, or chain request/response values is crazy. when i've switched to linux box from macos last year, paw.cloud (rapidapi) was one of few stoppers for me, that good of a software it is. also not to mention the integration with keychain for credentials encryption was nice.

postman is really bad, nobody should use it. same goes for similar solutions, even this one.

divbzero
7 replies
19h33m

I really like the idea of serializing requests to a Git-friendly text format.

But if we want a Git-friendly text format, why not mimic HTTP/1.1 request syntax as much as possible? Maybe with Jekyll-like YAML front matter for metadata that doesn’t fit?

So for Get Users.bru instead of the current example of:

  meta {
    name: Get Users
    type: http
    seq: 1
  }
  
  get {
    url: https://reqres.in/api/users
    body: none
  }
  
  headers {
    Content-Type: application/json
  }
We could adopt a format like:

  ---
  name: Get Users
  type: http
  scheme: https
  seq: 1
  ---
  
  GET /api/users HTTP/1.1
  Host: reqres.in
  Content-Type: application/json

Cthulhu_
1 replies
19h21m

I've used a plugin in both VS Code and IntelliJ that is just that, I just saw someone else post it too: https://marketplace.visualstudio.com/items?itemName=humao.re...

Example:

    GET https://example.com/comments/1 HTTP/1.1

    ###

    POST https://example.com/comments HTTP/1.1
    content-type: application/json

    {
        "name": "sample",
        "time": "Wed, 21 Oct 2015 18:27:50 GMT"
    }

Karupan
0 replies
18h59m

Second this. One of the first VSCode extensions I install and recommend for non-devs in the team as well (BAs, QAs, etc). Kind of insane how human friendly HTTP 1.1 is.

schoenobates
0 replies
18h7m

Intellij (and all the other variations) has something very similar to this called [0]HttpClient. Being able to commit and basically just read the file is very useful. You can also do validation and scripting with it too.

[0]https://www.jetbrains.com/help/idea/http-client-in-product-c...

lb4r
0 replies
17h1m

Just out of curiosity, why is the below example more git-friendly than the above? Smaller deltas? (and if so: why?)

Aeolun
0 replies
17h37m

I think hurl does this?

7fYZ7mJh3RNKNaG
0 replies
18h40m

Would love this

thih9
6 replies
21h53m

One thing I like doing when working with APIa is to have an echo server at hand.

I.e. something that I can query via curl or via a network library that I’m using, and see in response what kind of request it actually received. It helps me verify that I’m making correct requests (and not misusing curl or a network library).

Currently I google for that and use the first online result that comes up. Is there an open source local equivalent, or does Bruno offer some solution for that?

notRobot
0 replies
21h5m

    <?php
    print_r($_POST);
    print_r($_GET);
If all you need is an echo, should be as simple as this in a .php file, no? Can be deployed with PHP's built-in webserver.

lelanthran
0 replies
13h1m

One thing I like doing when working with APIa is to have an echo server at hand.

I.e. something that I can query via curl or via a network library that I’m using, and see in response what kind of request it actually received. It helps me verify that I’m making correct requests (and not misusing curl or a network library).

Did you consider using a proxy during development. A man-in-the-middle server that does nothing but relay and record all communications between client and server?

I made one specifically for this use-case. See it in action (3m video): https://www.youtube.com/watch?v=kpsFSY-G5F0

cyunker
0 replies
21h20m

I've been using https://httpbin.org/ to so some client testing and so far it has been great. They provide a docker image which makes it easy to run locally.

michaelbuckbee
6 replies
22h32m

I have nothing against this app or the other graphical HTTP tools like Postman, Insomnia, etc., as people clearly get value out of them, but personally, I've moved everything over to Hurl --> hurl.dev

- Open source

- Text files all the way down

- Easily understood DSL

- Easily distributed

- Easily versioned

- Fast

Download the executable, copy the two lines below into "first-test.hurl" and you're up and running.

    GET http://localhost:3000
    HTTP 200
I realize I'm fanboying a bit here, but Hurl really has been so helpful for our particular use case at wafris.org where we're trying to support a large number of different HTTP clients. We can just give an integration partner access to our hurl suite and they're good.

twodave
2 replies
21h50m

I took a lot of inspiration from Hurl while building Nap[0]. My next goals for it are a UI and/or a VS Code extension.

[0] https://naprun.dev

emmanueloga_
1 replies
16h55m

curious why you decided to create that instead of using hurl?

twodave
0 replies
16h53m

For fun, of course ;)

statenjason
0 replies
20h45m

I tried Hurl after Insomnia went the way of Postman. The highlights you list were the strong drivers for testing it out. Where Hurl fell short was composing requests. Example: X.hurl response has authToken. Y.hurl uses authToken. Z.hurl uses authToken. There's no import ability[1], so you've got to use other tooling to copy X.hurl into Y.hurl and Z.hurl.

Ultimately settled on Bruno. It's backed by readable text files[2] as well. The CLI works for scripting. And the GUI is familiar enough that I've managed to convert Postman holdouts at my dayjob.

[1]: https://github.com/Orange-OpenSource/hurl/issues/1723

[2]: https://docs.usebruno.com/bru-language-samples.html

leosanchez
0 replies
22h18m

+1 for hurl. Been using it from many months now.

IMO only thing missing for me is a predicate that checks every item in the array for some condition.

jicea
0 replies
12h58m

Hi maintainer of Hurl [1] here! Your comment makes my day, thanks!!

[1]: https://hurl.dev

sureglymop
5 replies
22h55m

Very tempting! But, will there be a lifetime version/license? Would rather pay upfront instead of ending up potentially not really using it much for 2 years.

throwitaway222
4 replies
22h32m

It looks like the pricing page has lifetime licenses only.

sureglymop
3 replies
22h24m

It says "one time payment" but then it says "2 years of updates". I interpreted that as having to pay a second time two years into the future if I will want another two years of updates then. A bit misleading.

imafish
1 replies
22h15m

Not misleading - you understood it.

Lifetime license does not necessarily equal lifetime updates. 2 years of updates is generous enough for $19.

throwitaway222
0 replies
21h7m

It's similar to a lot of pricing plans out there. For example I purchased Home Designer Pro 2022 a couple years ago for $450 and I can use the HDP 2022 forever. They have, of course, HDP 2024 but I can't use that one. I can upgrade for an upgrade price. However I don't need to upgrade and am happy to just use 2022 for the rest of time.

spiderfarmer
0 replies
22h16m

It doesn’t require you to upgrade so I don’t see the “misleading” part.

jonS90
5 replies
14h9m

This makes me think of an alternative that no one seems to be mentioning: http/rest files. They're git-friendly and there are community plugins to operate them from every major IDE.

I believed the standard was created by jetbrains.

https://www.jetbrains.com/help/idea/http-client-in-product-c...

helloanoop
3 replies
13h40m

What sets Bruno apart?

Nice GUI Clients: Postman, Insomnia, Paw (ease of use)

Nice CLI Clients that use plain text files: Jetbrains Http Client, Hurl, Httpie (privacy)

Bruno: The only GUI client with a Nice UI that works on top of plain text files

It's the best of both worlds.

devsda
2 replies
13h15m

Nice CLI Clients that use plain text files: Jetbrains Http Client, Hurl, Httpie

In what way is Jetbrain's http client a CLI tool ? There's also vscode rest client.

There's no need to shortsell other clients. I think Bruno has sufficient differentiators to standout on its own.

helloanoop
1 replies
13h4m

Sorry if it came across as trying to shortsell. I was just trying to point out the key thing that makes Bruno unique in the ecosystem

jicea
0 replies
12h47m

I'm the maintainer of Hurl and was really graceful to be cited by you!

wenbert
0 replies
13h34m

Oh yes. This one is Jetbrains only but there is also a VScode alternative for this. There is a plugin called httpyac and I believe it also supports the same kind of configuration (???) and variable syntax. It's great not switching to other apps for making an http request.

superfrank
3 replies
19h35m

Funny. I just found Bruno two weeks ago after getting fed up with Insomnia and am loving it. It feels like what Postman and Insomnia were when they started. Simple and to the point.

There are a few minor features I miss (being able to bulk edit headers is the main one), but overall I highly recommend it.

manquer
1 replies
16h57m

You can do that by editing the collection file directly , Bruno watches for file system changes on the collection folder

superfrank
0 replies
12h8m

Ah, that's good to know. I'm definitely going to use that trick. I'd still love to have a first class way to do that though.

fuzzy2
0 replies
9h49m

Just curious, what’s your gripe with Insomnia? I find its UX a little clunky at times but haven’t found anything limiting my use cases.

mikaelsouza
3 replies
22h40m

Damn, I wasn't sure if I cared about another postman/insomnia like tool, but I saw the cute dog logo, and it sold the tool to me. Maybe I am just silly, but that got me. Congrats to the team for developing it!

bloopernova
0 replies
18h38m

Aww Bruno looks like a Very Good Boy.

4goodapp
0 replies
5h39m

Actually you're not alone in that boat, software logos play a lot in my adoption apparently...

elric
3 replies
10h34m

Good to see some more open source competition in this space. SoapUI had most of those features some 15 years ago. I never understood why Postman became so popular, my current team even throws money at them.

pjmlp
2 replies
10h33m

Basically because of "blah but it is Java!" kind of argument.

SoapUI is great.

throwaway56391
1 replies
10h12m

And the "SOAP" part of the name is not helping either.

antxxxx
0 replies
9h48m

I found it uncomfortable to watch it making a request once someone pointed out to me that it highlighted letters in the order SOPA when waiting for a response

JanisErdmanis
3 replies
21h11m

I just finished watching the introductory video and found the whole concept of PostMan and Bruno disappointing. It's baffling that one has to dive into the code to unearth the appropriate routes—a completely unnecessary and time-consuming endeavour. This process should be automated, ensuring that documentation and code are always perfectly aligned, eliminating any out of sync issues. The endpoints themselves should be directly accessible from automatically generated documentation using tools like Swagger. This isn't just a convenience; it's a necessity for efficient and effective development.

So, what is the utility of tools like PostMan, Bruno and others when one has automatically generated docs with Swagger with which one can interact? As an example, you can check my current project where I have set docs like that (still need to add an endpoint field): https://peacefounder.org/PeaceFounder.jl/dev/schema

ponector
1 replies
20h41m

Imagine you have a scenario where you need to get a token first, then with GET retrieve an id of the item, then with POST create a new entity related to that id. And then you need to call another microservice with created id from post request.

How you going to do it in swagger?

And more serious question is how you going to force developers keep swagger up to date so I can execute such scenario?

JanisErdmanis
0 replies
20h4m

Imagine you have a scenario where you need to get a token first, then with GET retrieve an id of the item, then with POST create a new entity related to that id. And then you need to call another microservice with created id from post request.

This is a good explanation. I would however be inclined to do that within a script.

And more serious question is how you going to force developers keep swagger up to date so I can execute such scenario?

The swagger is created automatically from the routes themselves so it is always up to date. To maintain endpoint an integration test can be written which executes the scenario.

knallfrosch
0 replies
20h34m

We use Swagger for internal APIs and Postman for 3rd party APIs.

It's not like these sites serve swagger.

pulkitsh1234
2 replies
10h50m

Can someone help me understand the difference between the .bru file and an OpenAPI spec (Swagger), aren't they representing the same thing with different syntax?

karpovv-boris
0 replies
8h29m

| aren't they representing the same thing with different syntax? - yes, they are

isbvhodnvemrwvn
0 replies
5h6m

Not quite, openapi doesn't interact with variables and can't contain scripts or assertions.

okr
2 replies
12h40m

While we are at it, is there a nice tool to document (foreign) APIs in a collaborative way? Maybe using Markup Language? Shared via Git? There are so many undocumented APIs there, that i use daily and it is good to put my annotations anywhere.

israrkhan
1 replies
12h29m

I think you may want to look at OpenAPI specs. It is yaml description of API and can be consumed by many tools.

okr
0 replies
12h17m

No, these APIs have mostly generated docs from code, they are just bad, and i want something, that is documented around it. Like a wiki.

majkinetor
2 replies
19h41m

I am using bruno on all my REST projects and the entire team is more than happy. We have bruno file for most endpoints demonstrating basic usage and as soon as something is problematic, someone creates bruno file in the repo and link to it so others can interactively discover what the problem is about. Since its cross platform and doesn't require any kind of on-boarding its joy to use and nobody complained. Previously, people used postman, thunder, curl and whatnot, but now everybody is on the same page. People created all sorts of scripts, such as automatic token refresh, so you jump straight to action. The fact that I can edit it in vscode is also amazing. Thank you.

jonotime
1 replies
18h23m

Care to share any scripts? Automatic token refresh is a feature I am waiting for in Bruno.

hota_mazi
2 replies
20h5m

I really like IDEA's .http files [1]

Very similar idea as Bruno: everything is configured in text, which I always find myself more productive in that full blown GUI where I need to tab from edit text to edit text to get anything don.

[1] https://www.jetbrains.com/help/idea/http-client-in-product-c...

lostindetails
0 replies
2h31m

Ah, I didn't know that Jetbrains also supports them, as I've been using them with vscode with the extension https://marketplace.visualstudio.com/items?itemName=humao.re... and I am happy so far.

They are plaintext and can be easily diffed and they don't invent a totally new language.

The extension also supports somewhat esoteric features like client certificates, which I already needed.

So I'd be more interested in a comparison between bruno and .http than insomnia.

[edit: grammar & typo]

Atotalnoob
0 replies
19h27m

Several ides support .http files

harel
2 replies
15h54m

This looks great, and less bloated than Postman but after a few seconds of testing the Linux (Snap) version, I noticed the system file browser opens with what is probably an invalid font (all characters appear as squares).

As well, it would be nice to be able to import my rather large postman collections (an vice versa - provide a collection from Bruno to a Postman user).

Looking forward to when I can switch to this full time.

cyclotron3k
1 replies
15h27m

How does the Bruno snap compare to the Postman snap, in terms of startup times?

I know snaps are slow, but the Postman snap takes forever (~16 seconds)

harel
0 replies
8h21m

Postman snap works, and works well. It takes about 5-7 seconds to startup. Honestly startup time doesn't matter too much for me. I was there when tapes transitioned to floppies. We learned patience then. But, it also took about 5-7 to see that the file browser is unusable in Bruno so I backed out. I am looking forward to return though when it's fixed and I can create a collection.

emrehan
2 replies
22h52m

I created a cli postman test runner 8 years ago due to the pains involved in API testing: https://github.com/hantuzun/jetman

It seems like the API QA developer tooling has still room for disruption.

ponector
1 replies
20h38m

There is an official cli tool called Newman for running the postman collections.

emrehan
0 replies
16h5m

Jetman was enabling writing and managing tests and it was using newman to run the tests.

cube2222
2 replies
23h6m

That looks nice! I stopped using Insomnia after they introduced the forced login to save your collection and wiped all my stored requests…

adhamsalama
1 replies
22h21m

Have you tried Insomnium?

cube2222
0 replies
17h15m

Huh, I didn’t even know Insomnia was originally open-source. Thanks for this!

adobrawy
2 replies
14h33m

It looks great. Postman always loses me because I usually only need simple requests and I have to go through a big structure. As a result, it only ever edits one request over and over again, which I have configured correctly.

The key thing about Postman is that I was able to configure my own script to refresh the API token. For the internal API, we have a short-lived "access_token" token (~1 minute) and then a long-lived "refresh_token" (~1 day) based on the user's email address and password. When renewing the token, you receive information about its lifespan. You cannot create a new scratch token every time because you will be rate limited. I put all that logic in Postman hook script.

Making these HTTP requests in Curl – due to token refreshing – is painful.

Will Bruno support this use case?

adolph
0 replies
8h52m

curl + shell

  $ eval $(stat -s refresh_token); #set some stat vars, will use change time st_ctime
  $ if [ $(expr $(date '+%s') - $st_ctime) > 86400 ]; then rm refresh_token; fi
  $ if [ ! -f refresh_token ]; then ./get_refresh_token.sh; fi

helloanoop
0 replies
13h31m

Hey there!

Thank you for the patience. We have been occupied with adding File Uploads and OAuth2 support in Feb and prepping for the Golden Edition release. This issue is priority. Hoping to get the PR merged soon.

vsnf
1 replies
18h36m

It's nice, but variable import from OpenAPIv3 needs a bit of work, compared to Postman and Insomina.

Our OpenAPI spec has something like this:

    servers:  
      - url: https://{host}/api/v2  
        variables:  
          host:  
            default: someserver.example
Insomnia and Postman import the collection with the host as a variable, centrally editable, while Bruno imported it resolved with no variable, so I have to edit every one of my endpoints whenever I change the host, which happens often in our setup.

jrks11o
0 replies
17h20m

So there are no env variables?

tuananh
0 replies
16h16m

this looks very good. i'm not sure why it's not more popular

lovasoa
1 replies
22h11m

I am currently looking for a solution to run automated tests on a sql website generator I am working on ( https://sql.ophir.dev )

I wanted to use hurl (https://hurl.dev/), but Bruno's UI seems to be useful while developing the tests... Has someone tried both ? Which is better for automated testing, including when the response type is html and not json?

hk1337
1 replies
15h56m

I am quite partial RapidAPI (previously Paw) but this looks really nice!

udkl
0 replies
15h50m

Paw is the best tool UI wise.

Postman/Bruno/insomnia all suffer from the 'curse' of web design making it's way into professional tools leading to lower information density and higher 'white space'.

I feel so strongly on the matter is why I started a project that is unfortunately in comatose for the past year : https://nokori.surge.sh/

The design isn't there yet, but I'm aiming for a professional looking information dense UI.

adhamsalama
1 replies
22h19m

Doesn't seem to support advanced stuff like GraphQL, gRPC, WebSockets...

lazypenguin
0 replies
22h16m

Seems it does under the premium version

FlyingSnake
1 replies
22h34m

Looks great!

Postman dug its own grave after selling out itself for VC money. The “File over app” philosophy is a direction that we should be supporting after the Post-ZIRP VC money world.

1: https://stephango.com/file-over-app

sakjur
0 replies
8h20m

Thank you for introducing me to that wording. I quite like it, easy to remember and explain without needing to use industry lingo.

It should also be easier to comply with GDPR’s Right to Data Portability (article 20) for applications that follow the “File over app” philosophy.

1: https://www.edpb.europa.eu/sme-data-protection-guide/respect...

8bitme
1 replies
10h36m

It may already be the case but it's not clear. If Bruno supported importing Postman collections it would be an easy decision moving across

helloanoop
0 replies
10h5m

Yes! Bruno supports importing postman collection’s

1vuio0pswjnm7
1 replies
20h15m

What, if anything, differentiates an "API client" from an "HTTP client" (HTTP client includes TCP client)

What is required to be considered an "API client"

Perhaps "API client" is "HTTP client" + "JSON parser"

Could "JSON parser" be a separate program

thunderbong
0 replies
19h39m

API clients mostly expect JSON responses. So, test assertions have to be able to parse the responses and validate them.

yashasolutions
0 replies
20h20m

Bruno is awesome. The import from postman thing is really what make the difference - it makes adoption instant (because yes everyone is still running on postman).

Regarding long term strategy, they seems to have a valid (non subscription based) where you can get some very nice premium feature for a one-off licence price (which is the kind of business model we need to support - instead of the madness we have going today with everything is subscription)

wzulfikar
0 replies
21h57m

I've replaced Postman with Bruno (dekstop app), works great so far! It's nice to put the collection folder in git so I can collaborate with others and commit the changes to the repo.

wadewatts
0 replies
17h31m

I tried Bruno not long ago. Have they added request “examples” like Postman has? If those make it into the codebase, I’m switching!

vsgherzi
0 replies
20h56m

This is exactly what I was looking for, never understood why postman decided to monetize that way

vendetta_neo
0 replies
6h19m

can you tell me where its shortcut is ?

tomhallett
0 replies
18h10m

Do you plan on supporting SQL queries? My top 2 would be postgres and snowflake.

tobase
0 replies
10h53m

Switched from Insomnia around one year ago! Really like Bruno :)

throwitaway222
0 replies
22h34m

Golden Edition in the pricing page is listed twice, it looks like the middle column should read "Individual plan"

synthc
0 replies
20h35m

I prefer curl and bash for testing API's, it's less polished, but very flexible and it will never break or require an account.

But for sharing requests in a team an app is nice. I had a good experience with Bruno. Bonus point for easy to store configs.

swashbuck1r
0 replies
4h23m

Bruno has been taking root in our organization (displacing postman).

It was nice to find out about the for-pay golden edition in this thread to support Bruno’s efforts. The feature split for free vs Individuals vs Organizations seems well done.

As feedback to the Bruno team:

for Individuals - I most value the gRPC/websocket, then load-testing

for Organizations - My org would most value central license mgmt

spdustin
0 replies
22h10m

MQTT is in the pipeline? That’s gonna be a huge deal for those of us working on IoT projects that also use REST for service data. I’ll be watching this for sure.

snthpy
0 replies
13h14m

There is also HTTPie which I've mostly been using for its excellent `http` CLI as a modern replacement for curl.

However I recently learned that it also has web and desktop client apps which are pretty great too!

https://httpie.io/

shinzui
0 replies
18h38m

Hurl is better than any of those GUIs. You can version your Hurl files and use them for CI/CD.

sergioisidoro
0 replies
22h17m

I found Bruno after Insomnia adopted the Postman strategy of being cloud first, with a disastrous migration - I momentarily lost all my local projects after an update.

I've been using it for a while and I really like the offline first + git collaboration aspect of it. Only missing Websockets functionality at the moment.

rvz
0 replies
21h25m

The source code for Golden Edition features is proprietary.

Here we go again. There are two versions of this tool. One which is "open source" and another that has additional features which are closed source.

Not very "open-source" after all.

rgblambda
0 replies
16h39m

I looked into using Bruno ever since Postman enshittened the free client. I ended up just installing the version of Postman pre collections being removed and ignoring the prompt to update.

I'm struggling to remember the reason I didn't stick with Bruno. I think it was due to not having an equivalent to Postman's pre-request scripts. If that could be added, I'd certainly give Bruno another try.

Edit: Another comment has mentioned that Bruno now has (or maybe always had and I just didn't see) pre request scripts.

retrofuturism
0 replies
22h40m

Take note makers of HN. If you launch a product with this attitude and respect, I will pay for it in a heartbeat.

pkulak
0 replies
22h56m

I’m the principal maintainer at work of a couple hundred bash scripts that use httpie and jq. I don’t have a huge appetite to redo that work… but this certainly seems nicer!

nurgasemetey
0 replies
6h45m

gRPC support is still paid

nothrowaways
0 replies
22h36m

Looks great

nokeya
0 replies
18h33m

History goes in circles. New API client appears, adds features, userbase grows. Forced login is added, users are angry and look for alternative. New API client appears...

naizarak
0 replies
18h4m

I just block Postman servers in my hosts file and run an old version that still allows offline/anonymous mode. Works perfectly for my needs.

n00bskoolbus
0 replies
20h32m

Been using Bruno for a while now and it's done what I need, I'm not doing any thing crazy just testing endpoints with maybe a small bit of scripting afterwards. Very pleasant to use.

midnitewarrior
0 replies
22h7m

Can this read OpenAPI (Swagger) specs and generate calls based on the service description?

midasz
0 replies
11h5m

I've been using it for a month or so at work and I love how simple and fast it is. I need to dig into the advanced features but it's already useful.

michaelcampbell
0 replies
16h4m

The ability to SCM your "scripts" is so nice.

madduci
0 replies
8h54m

Does anyone know if it supports mTLS and maybe multiple certificates per domain?

That would be great

kalyantm
0 replies
6h3m

I would love to show this to my colleagues, but sadly we don't talk about bruno (/s)

jonotime
0 replies
18h26m

Bruno is great. I'm in the process of moving my team to it. Cli, gui, human readable files. They are hitting all the right points. And it's open source so I don't care if they close up later down the line. It can always be forked like insomnium. I do admit it is rough around the edges (bugs and a bunch of missing features) but there is a lot of momentum right now and devs are working hard. Not long before postman parity.

jhoechtl
0 replies
22h15m

Insomnia was great. Than they more or less put of 90% of their users by forcing them in their cloud. Did that get any better?

jameshart
0 replies
18h58m

The complaints about postman collection files being hostile to Git collaboration is valid, but I will just say: we managed to cobble together a reasonable workflow, persisting our postman collections in source control, by writing a utility that strips out all the guids that postman needlessly changes every time you do a collection export. We use Newman to run the collections in our CI pipelines, and as the main way to run tests locally.

It’s painful having to do an import/export of the collection from a file every time you want to modify the collection or debug a test, though, and the JSON files are still not entirely diffable/code reviewable even with the guids stripped. But it works - you can collaborate as a team with postman without using their cloud.

But the idea of switching to a tool that actually wants you to work that way is definitely tempting.

hackernoteng
0 replies
21h5m

Good. Postman and Insomnia have shot themselves in the foot with overly complex UI and a mess of managing your collection of API calls in some horrible format and messing up the whole sync process and the simple ability to run everything offline without login, etc. I would also add that streaming (SSE) support would be great.

everettwilson
0 replies
20h52m

Well this is fun to see. After Postman deleted my local data after I declined a cloud account, I started working on my own tool: https://github.com/EvWilson/sqump

Some similar ideas - actually treats the file system as authoritative, runs locally, can share collections via source control with teammates. Difference in this case is that I used Lua as a lightweight scripting layer that I gave all my necessary tools to. So now I have a HTTP toolkit, and some for Kafka as well (which I use a good bit). I’ve been able to use it to replace all my API testing and development, as well as perform some more involved migrations and some dashboard-like actions (e.g. can list out resources and then check failures for each of their IDs).

It’s also just a single binary with the web UI and CLI bundled in, which works more for me. Still early days for the little tool, but hoping it could be helpful for someone else.

dphuang2
0 replies
10h59m

This is awesome, the postman collection format is not version-control friendly. I love what Bruno is doing!

dmart
0 replies
23h1m

I like this a lot. Happy to support any project willing to reject the usual “success story” of selling out to VCs and turning your product into subscription-based SaaS junk.

dgan
0 replies
22h2m

Funny, i literally wrote an API tester a week ago for my job. It doesn't have a pretty syntax (in fact, it is the opposite of pretty, tests must be written in XML), but it does understand our authentication flow, and is able to not only assert the status codes and the returned json, but also the contents of Excel files, since we do lots of reporting.

I haven't seen anything being able to compare excels. Also, usually test frameworks are aimed at developers (unsurprisingly), not at testers who might not be comfortable in writing scripts (looking at you, Katalon)

darylteo
0 replies
14h47m

This would complete the e2e DX if you could generate SDKs from .bru. Even if it's through a openapi export, I'm sure it will happen eventually.

I'm sure Bruno is still in the 1st phase of enshittification, but at least with local .bru files we can ensure longterm maintainability.

On the other hand, devs are most likely the stingiest individuals on the planet that expect all of their tools to be free. So I respect the team for even releasing it open source in the first place.

daniel-grigg
0 replies
21h37m

The IntelliJ http client is pretty great too (after using both postman and insomnia) if you use IntelliJ already.

cynicalsecurity
0 replies
19h59m

Insomnium.

cunningfatalist
0 replies
3h40m

We recently adopted Bruno at our company and I'm very happy with it. Versioning your requests with GIT is great, and the client is really nice as well.

corytheboyd
0 replies
11h4m

I’ve been happy with Postman, but it has gotten ridiculous lately, and I would ditch it in a heartbeat. It’s so painfully obvious that postman has turned into a money generating corpse. A good API testing tool isn’t rocket science, go forth and eat their lunch :) $9 for a perpetual license is a pretty damn good deal, and a total slap in the face to postman and insomnia, you have my pre-order!

coldtea
0 replies
17h52m

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.

AMEN! I've been annoyed by Insomnia and Postman for a good while for these reasons exactly. My latest client of use, Thunder client VS Code extension also started pulling the same shit, and I'm cutting it off too.

cliffwarden
0 replies
16h38m

If you use and enjoy Bruno, please consider purchasing the "golden" edition that should be released in a few days. https://www.usebruno.com/pricing

burnett2k
0 replies
21h14m

This looks amazing. Postman is a great tool overall, but definitely seems to have gotten clunky and overly engineered. I don't need so many damn features. 99% of use cases are just hit an api. Will be trying this out immediately!

blah-yeah
0 replies
19h24m

If you want to:

store REST API requests as files, such that you can git version-control them

may I recommend:

https://marketplace.visualstudio.com/items?itemName=humao.re...

super simple. just requires VS Code.

Im checking out Bruno as well though, looks like a great tool

benrutter
0 replies
22h28m

Looks awesome! Having version controlled api collections is a good enough idea that it makes all other ideas seem a little crazy.

Any idea if the CLI app is available as a standalone? Looks like its a "desktop app + cli” or nothing deal from what I can find.

anonymous344
0 replies
22h31m

bruno seems really easy and good, but then.. it doesn't support cookies..

alecsm
0 replies
22h35m

I'm tired of Postman freezing when sending JSONs over a MB in size. I had to purge it from the system a couple times because the tab wouldn't even load on start up making the whole thing unresponsive.

I hope Bruno works better in that regard.

agrippanux
0 replies
16h13m

I needed something like this today - was going to download Insomnia but I happened to check HN.

I tried it out; it's exactly what I wanted. Postman, as echoed in previous comments, has gotten out of control with the upsell and the confusing UI.

I bought the pre-order, seems like a good deal at $9, that's nearly the cost of a latte around here and if this works out I'll get a lot more use out of it than a latte.

adra
0 replies
19h56m

I just started to use the intellij built-in http client for my quick and dirty curl debugs and I gotta say it's pretty good for my limited needs so far.

adonese
0 replies
3h28m

how does compare to the rather resources-hog postman? My go-to setup for quick apis was curl with fish, as postman was growing it became so bloated i'd rather stick to my curl.

_kidlike
0 replies
10h38m

Why not the .http files that IntelliJ and VSCode have implemented for years now?

This should've become the standard by now.

_RedPanda
0 replies
8h5m

looks very good! gonna import my postman collection and give it a try. my collections in postman keep disappearing and reappearing since the required account update happened. glad there is an alternative now!

Zelphyr
0 replies
20h45m

Just one minor note about your website: it breaks the back button.

YouAreADork
0 replies
15h47m

Is this native or an electron app?

Terretta
0 replies
18h2m

I've purchased the golden copy of Bruno, not just because this is the right way to do software, but also because of the Bru DSL and git-based sharing "everything as code" model.

Meanwhile, I often dev on iPad Pro with keyboard and trackpad, and instead of Postman, Insomnia, etc., I've enjoyed HTTPBot:

- HTTPBot for iOS: https://apps.apple.com/us/app/httpbot/id1232603544

- HTTPBot for MacOS: https://www.httpbot.io/

HTTPBot even supports postman collections and environments including sync with postman, along with GraphQL, Websockets, and response metrics.

MBCook
0 replies
18h27m

Does anyone know of any good guides to getting the most out of these kind of tools? I’m mostly interested in Postman since that’s what we have to use a work.

I make requests with it, have things organized in collections, and use a variable for JWT handling but that’s as fancy as I’ve gotten and I know these tools have a lot more depth than I’m using.

James_K
0 replies
22h12m

I would love to see more UI done in this style. That is to say treating your business logic as an API and then exposing it publicly to clients on different platforms.

INTPenis
0 replies
21h54m

But can it handle oauth2? I had to write a httpie script recently just to test an oauth2 api.

HNArg024
0 replies
20h33m

Looks nice! Will give it a try, so I can ditch Insomnia

FpUser
0 replies
3h20m

Just discovered.

Perpetual license - nice. I do not buy software subscriptions for my development tools. Only perpetual. In cases like Postman - sure I'll take free version but I was holding off from doing anything serious with it.

All data local only - even nicer.

Ported couple of requests from Postman. All works.

Congrats. Unless I hit some stones during testing I will be buying license when available

Most likely Postman will go to trash bin very soon

DustinBrett
0 replies
17h23m

Good thing it's open source. Money being involved, I don't have long term hopes for it's openness.

Crowberry
0 replies
20h21m

We recently moved over to bruno (from postman) for integration tests, and have had a great experience so far!

Pros:

- DevEx is great, the experience moving between writing tests through text vs the client is seamless (allows different expertise to collaborate more easily)

- Fast and has all the basic features you’d expect

- Offline first

- Continuous improvements being made

Cons:

- Somehow, if the test fails connecting with the server its a passed test. So watch out for that one! I really hope it gets fixed soon!!

- Would be great to be able to dump the variables after a run through CLI

- Failed outputs from assertions and expects could be a bit more verbose, but it’s mostly likely the result of a dependency I assume

BlueFalconHD
0 replies
12h15m

Love the cute puppy logo!

AHTERIX5000
0 replies
20h23m

I've been looking for an alternative to Postman since its enshittification. Postman does not even work anymore if it can't reach internet. This looks actually useful and seems to have support for OAuth2 (which is the main reason I use something separate app instead of python/curl + sh etc)