Open source · Local-first · API client
Your API, live from its spec.
Point Tinspec at a running service's OpenAPI URL — endpoints materialize, documented and runnable. Send requests, chain them into pipelines, keep everything in git-friendly files.
macOS · Linux — free, no account
orders-api
▾ orders.yaml
GET List orders
GET Order by id
POST Create order
▸ checkout-flow · pipeline
▸ api-docs · spec live
### Order by id GET {{baseUrl}}/api/orders/4271 Authorization: Bearer {{token}} Accept: application/json ▶ send · ⌘⏎
200 OK · 38 ms · 412 B
{
"id": 4271,
"status": "shipped",
"total": 184.50,
"currency": "EUR"
}In the app today
Built around the spec, not the request list.
Spec-first, just-in-time
Point Tinspec at a live OpenAPI URL — a springdoc /v3/api-docs, a file, anything. Endpoints materialize instantly and stay bound to the spec: refresh re-resolves, so you test the API as it is now — not a stale snapshot you authored by hand.
https://api.internal/v3/api-docs live · re-resolved 4s ago
GET /api/orders — List orders
GET /api/orders/{id} — Order by id
POST /api/orders — Create order
DEL /api/orders/{id} + just appeared in the spec
pipeline · checkout-flow
1 POST /auth/login → token = $.access_token
│
2 POST /api/orders · Bearer{{token}} → orderId = $.id
│
3 GET /api/orders/{{orderId}} ✓ 200
Pipelines
Chain requests into runnable sequences. Extract values from a response — JSON path, header, or status — into variables the next step uses. Auth call → token → real request, in one run.
An editor, not a wall of forms
A Zed-style shell: file-tree navigator, coarse tabs, command palette. Endpoints render as runnable .http buffers in Monaco with spec-aware completions — params, headers, and body fields, typed and documented.
Reference docs built in
Every endpoint gets a Stripe-style reference view: typed parameters, request-body fields with nested attributes, response codes — plus a cURL sample and inline "Try it".
Local-first and git-friendly
Collections live in plain YAML files you commit next to the API they test. SQLite is only a rebuildable cache. Fully usable offline, zero account.
Open source
The desktop app, the Rust request engine, and the collection format are developed in the open. The engine is headless by design — the same core will back a CLI runner for CI.
On the roadmap
Where this is going not shipped yet
Auth automation
The headline bet: never copy-paste a JWT again. Script providers and first-class IdP integrations (Keycloak, Clerk, …) fetch and inject tokens automatically.
Native gRPC
The engine is protocol-pluggable; gRPC is next behind the same abstraction.
CLI pipeline runner
Run saved pipelines headlessly in CI — same engine, no app.
Cloud sync & teams
Optional paid tier: workspaces, sharing, hosted auth integrations.
Point it at your spec.
Free and open source. Runs entirely on your machine — no account, no cloud.
Download Tinspec