# gurl documentation

gurl is a free desktop API client (an HTTP client) for macOS, Linux and Windows. It sends requests, keeps them in projects, and fires the same requests as a load test, an outage watch or a CI run. Everything lives on your machine: there is no account and no cloud.

## Where to start

- [Installation](./installation.md): download a package and open it the first time.
- [Sending a request](../requests/sending.md): the request form, the response and its history.
- [Importing from Postman](../requests/import.md): bring a collection, an OpenAPI spec or a HAR file.
- [Benchmarks](../performance/benchmarks.md): load-test the requests you already have.
- [Watching for an outage](../performance/watch.md): measure how long a failover took.
- [Sharing through git](../sharing/git.md) and [Running in CI](../sharing/ci.md): one project document for your team and your pipeline.

## How gurl is organised

| Thing | What it is |
| --- | --- |
| Project | A group of requests, tags and environments. The unit you share. |
| Tag | A label on requests. Filters the tree and picks what a CI run executes. |
| Environment | A set of variables such as `{{baseUrl}}`, one active per project. |
| Request | Method, URL, params, headers, body, auth, checks and captures. |

## One wire format

A single Send, a benchmark and a `gurl-run` in CI all build the outgoing request the same way. What you measure under load is exactly what you debugged by hand, and what your pipeline checks is exactly what your team shares.
