¡Mándalo! · send it.
The fast, offline,
git‑native API client
HTTP, GraphQL and gRPC in one desktop workbench. Your collections are plain TOML files in your git repo — diff them, review them, ship them. No account. No telemetry. No cloud.
{
"id": "ch_9f2ma41",
"status": "succeeded",
"amount": 2400,
"currency": "eur",
"captured": true,
"customer": {
"id": "cus_mx88a",
"livemode": false
}
}
Everything you need. Nothing phoning home.
Offline & no account
Mándalo works entirely on your machine. There is no sign-up, no sync server, and no telemetry — the app makes exactly the requests you tell it to, and nothing else.
Git-native collections
Collections are plain TOML files in your repo. They diff cleanly, merge sanely, and go through the same pull-request review as the code they test.
HTTP, GraphQL & gRPC
One workbench for all three. REST endpoints, GraphQL queries with variables, and gRPC calls from your proto files — side by side in the same collection.
Environments with {{variables}}
Define staging, prod, or anything else, and interpolate {{baseUrl}}, {{token}} and friends anywhere — URLs, headers, bodies.
Import & export
Bring your Postman collections over in one step. Export any collection as a single self-contained file to hand to anyone.
Fast, honestly
A Rust core inside a Tauri 2 shell: instant startup, a tiny footprint, and a UI that never makes you wait for a spinner to send a request.
Collaboration is just git
No workspaces, no seats, no sync conflicts resolved by a server you don't control. Your team already has the perfect collaboration tool — Mándalo simply stores collections where git can see them.
-
1
Edit locally
Change a request in the app. Mándalo writes the change straight to the TOML file in your working tree.
-
2
Commit or PR
The diff is small and human-readable. Review API changes the same way you review code.
-
3
Teammates pull
git pull, and everyone has the updated collection. That's the whole sync protocol.
git diff — collections/payments-api.toml [requests.create-charge]
method = "POST"
- url = "{{baseUrl}}/v1/charges"
+ url = "{{baseUrl}}/v2/charges"
[requests.create-charge.headers]
+ x-api-version = "2026-08-01"
content-type = "application/json"
¡Mándalo!
Grab the latest release and send your first request in under a minute.