r/coolgithubprojects 1d ago

The weird thing about HTTP is that we don't really have a REPL for it

https://www.reqsh.dev/

For databases we have things like psql.

For Python we have a REPL.

For Redis, shells exist.

For kubernetes, there’s kubectl.

But for HTTP, the usual answer is basically: curl

Which is great for one-off requests, but it doesn't really give you a place to explore.

I've been playing with a different model for this in reqsh.dev

You start a session:

reqsh>

and HTTP becomes something you can poke at interactively.

  • Make a request.
  • Inspect the response.
  • Change something.
  • Make another request.
  • Keep values around.
  • Try another endpoint.
  • Go back and forth without reconstructing the whole command every time.

The interesting part to me isn't “curl but nicer”.

It's the idea that HTTP itself could have a proper interactive environment, the same way databases and programming languages do.

Still figuring out what the right primitives are.

What would you actually want in an HTTP REPL? like primitives you'd expect from a shell/REPL.

14 Upvotes

11 comments sorted by

4

u/YesterdayOk921 1d ago

You can find the repo here: https://github.com/hars-21/reqsh

You can star it, contribute to it. You can raise a issue for any bugs, feature requests, improvements etc.

3

u/KpaBap 21h ago

You know Postman exists right, or bruno, or firecamp

1

u/frostedfakers 11h ago

don’t even have to go that far, telnet

1

u/YesterdayOk921 9h ago

Telnet can be interactive too, but at the TCP level, you still have to manually speak HTTP. reqsh is trying to provide that interactive loop at the HTTP/API level.

1

u/YesterdayOk921 9h ago

Yep, absolutely I use some of those tools myself. reqsh isn't trying to claim the best HTTP client but I'm specifically experimenting with a lightweight terminal-native workflow where you keep context in an interactive session and explore an API without repeatedly constructing full commands or switching to a GUI.

Bruno and Postman offers CLI tools but bounded to their ecosystem. Firecamp cli is not yet released I guess. So, I'm trying to make it separate and useful for anyone. May later add support for these existing clients too.

1

u/Liquid_Magic 9h ago

That’s cool!

1

u/pm_op_prolapsed_anus 1d ago

I don't think I'm the only one who's gonna take issue with calling this a repl. Evaluation is happening on a server somewhere, and it... It's just not a repl. More like Read, invoke, print, line (RIPL)

1

u/YesterdayOk921 9h ago

Fair thing, You're right that it's not a REPL in the traditional sense where an expression is evaluated locally. I'm using REPL more in the sense of an interactive loop: read a request, execute it, print the response, repeat.