Wireman: A grpc client for the terminal

Hey,

I have developed a grpc client for the terminal.

In my day job I work on web apps and our backend consists of grpc based microservices. I always struggled to find a good tool to test them. Primarily I wanted a tool where I could define which proto files to load from so that I could conveniently select endpoints.

Postman always felt too clunky for me. I like to stay in the terminal. And loading proto files was also not that great in my optionion.

So I wrote wireman. At its heart you can specify your protos in a wireman.toml (which should be in .config/wireman/wireman.toml)

includes = [
    '$HOME/my-project/services',
    '$HOME/my-project/protos'
]

files = [
    'order/api.proto',
    'price/api.proto'
]

which are loaded at startup.

Some specs/features:

  • Vim based motions. Including the Editor.
  • Auto-save requests. Keep up to 5 requests at a time.
  • Edit the config in the app
  • Server reflection (Orhun once shared a linkedin post and a commenter asked about reflection, so here it is. Thanks @orhun for promoting our apps!)
  • Server side streaming
  • Copy request as grpcurl (via ctrl+y)
  • Customise the theme
  • Backend purely in Rust

and more.

I hope some of you find it helpful :slightly_smiling_face:

demo

1 Like

Hey that’s super neat. The demo is a good size, and speed that makes the functionality of the app clear. I’d be happy to stick that on the Ratatui website showcase page if you want to put a PR together for that.

Maybe the only thing I’d add is some way to work with and discover files that are defined in the current folder (like if you have a tonic project that you’re working on). This would be instead of using the config file for this.

Hey @joshka,

thx for the feedback. Thats actually a great idea, I will add this at one point :slight_smile:

And will also open a PR on the ratatui website to add the showcase.