A little less UI. A lot more focus.

API work, with less
UI in the way.

A focused HTTP and GraphQL client that adapts the workspace around what you're doing — from request to response and trace.

Local-first · HTTP · GraphQL · Jaeger Tracing · Encrypted Storage

Compose. Inspect. Adjust. Stay in flow.
YOUR API. YOUR WORKSPACE.Send requests, inspect responses, follow traces,
and keep your workflow focused.
Explore Purr

01 / JAEGER TRACING

Follow the request
past the response.

Open the trace behind a request and see exactly where the time went.

Purr integrates with Jaeger so you can move from the response to the trace without leaving your workflow.

View trace
  1. Request
  2. Response
  3. Trace
  4. Jaeger spans
  5. Slow service / span
From a response to the spans behind it.
Request → response → traceOne workflow. All the context.

02 / FOCUS MODE

The workspace follows
your attention.

  1. 01

    Compose

    The request gets the canvas.

  2. 02

    Inspect

    The response takes over.

  3. 03

    Adjust

    Expand without losing context.

The request editor takes the canvas while composing a request
Compose → Give the request your full attention.

03 / FIRST-CLASS GRAPHQL

GraphQL deserves more
than a JSON textbox.

Work with multiple operations, schema-aware editing, autocomplete, schema exploration, and structured variable forms without constantly switching between your query and raw JSON.

Explore GraphQL
Two GraphQL operations, Cases and CaseDetails, each with its own send button
Multiple operations. Operation-level send.

04 / HTTP WORKFLOW

HTTP without the ceremony.

Build the request, send it, and inspect what came back. Headers, auth, body, timing and response data stay close without competing for your screen.

Explore requests
GETPOSTHeadersAuthBodyResponseTiming

05 / DYNAMIC VARIABLES

Let one response
feed the next request.

Extract values from a response and reuse them anywhere else in the workspace.

No scripts just to pass an access token, ID, or generated value from one request into another.

Learn about variables
  1. 01 / RESPONSEassignee.id

    A value in the response

  2. 02 / EXTRACT VALUE$.case.assignee.id

    Select it with JSONPath

  3. 03 / DYNAMIC VARIABLEassignee_id

    Keep a dynamic reference

  4. 04 / NEXT REQUEST${{assignee_id}}

    Use it in another request

Purr Variables UI with a dynamic assignee_id variable, JSONPath extraction strategy, cache settings, and resolved value
Extract. Resolve. Reuse.

06 / JQ + JSONPATH

Query the response,
not the scrollbar.

Filter JSON responses in place with jq or JSONPath.

Keep the original response intact and inspect only the data you care about.

See filtering
Filter the response with JSONPath. Keep the original intact.

07 / OPENAPI 3 + CURL

Bring your API
with you.

Paste cURL or import an OpenAPI 3 specification and start working without rebuilding requests by hand.

See import options
.yaml

Import OpenAPI 3

WORKFLOW
openapi.yaml
Workspace├─ Folders└─ Requests

Paste cURL

WORKFLOW
curl command
Parsed requestURL · HeadersMethod · Body

08 / REQUEST TIMELINE

Detailed
request insights.

See connection time, TTFB, download time, headers, redirects, TLS details, and more without leaving the response.

Open timeline
PrepareConnectionTTFBDownloadEvery phase, in context.
Request Timeline with prepare, connection, TTFB, and download timing, followed by request, HTTP headers, and TLS details
The lifecycle of this request, from preparation to the last byte.

09 / ENCRYPTED LOCAL STORAGE

Keep sensitive
data safe.

Responses can be encrypted before they are written to local storage, so your saved API history does not have to sit on disk as readable plaintext.

Encrypt before saving.
Response data passes through encryption before it is written to your local API history.
Stored on your machine.
Keep the responses you need in your local workspace, with encrypted storage instead of readable plaintext.
Why local-first
ON YOUR MACHINE
01Response stream{ … }
02Encrypt
03Local storage
Response → Encrypt → Local storage.
Encrypted before it reaches disk.

10 / YOUR WORKSPACE, YOUR WAY

Focused when you want it.
Split when you need it.

Use Focus Mode for a single task, or switch to horizontal and vertical splits whenever you want request and response visible together.

Scroll to compare all three layouts

01

Focus

Focus Mode with the Preview action weekend plan response taking the canvas
One task. Room to focus.
02

Vertical Split

Vertical Split showing the same request and response side by side
Request and response, side by side.
03

Horizontal Split

Horizontal Split showing the same request above its response
Request above. Response below.

THE TOOLKIT

More features.
Less friction.

Purr app icon

GET INTO YOUR FLOW

Try Purr.

Download it, point it at an API, and see if the workflow fits.

macOS · Local-first