Supercharged curl/grpcurl with config chaining and response templating.
Stop memorizing complex flags — save them as reusable JSON configs and hit run.
Typing long curl/grpcurl incantations sucks. Gurl turns them into tiny, reusable configs you can chain:
- HTTP → HTTP, gRPC → gRPC, or mix them.
- Responses from earlier steps can feed later steps via simple placeholders.
- No curl/grpcurl required — native Go implementation using:
net/httpfor HTTP requestsgoogle.golang.org/grpcfor gRPC callsgithub.com/jhump/protoreflectfor protobuf introspection
- 🔁 Response Placeholders Everywhere - Use
{RESPONSE}in URLs, headers, and bodies - 🔄 Repeated Configs - Duplicate and modify existing configs with
replacefields - ♻️ Loop Processing - All placeholders in a request are now properly processed
- 🆔 Automatic ID Management - IDs are now enforced to prevent conflicts
# 1) Generate a starter config
gurl-cli --config-create --config=my_config
# 2) Edit it with your endpoints
vim my_config.json
# 3) Run it
go run main.go --config=my_config.json[
{
"id": "1",
"type": "http",
"url": "http://localhost:8080/api/auth",
"method": "POST",
"body": {"user": "test", "pass": "test"},
"response": "-"
},
{
"id": "2",
"type": "http",
"url": "http://localhost:8080/api/data/{RESPONSE id=1 json:user_id}",
"method": "GET",
"headers": {
"Authorization": "Bearer {RESPONSE id=1 json:token}"
},
"response": "-"
}
]{
"type": "repeated",
"repeated_id": "1",
"replace": {
"user": "different_user"
}
}