v1.1.4 New theme, performance panel, cloud sync & more

The API client
that respects your time

A blazing-fast native app built with Rust. HTTP, WebSocket, SSE, GraphQL, gRPC — with scriptable requests, cloud sync, and zero lock-in.

Kairo
GETcats
No Environment
K
https://api.kairoapp.dev/v1/cats
200 OK169 ms11.13 KB
{
"statusCode": 200,
"data": {
"page": 1,
"limit": 10,
"items": Array(10)
},
"message": "OK",
"success": true
}
ReadyBuilt v1.1.4·Made with care

Everything you need, nothing you don't

Built from the ground up for speed, privacy, and developer experience.

Lightning Fast

Native desktop app, not Electron. Under 2-second startup and less than 80MB of RAM.

Scriptable

Pre/post request JavaScript scripts with the kr API. Chain requests, assert responses, generate tokens.

Team Sync via Git

Share collections as .kairo.json files through your existing Git workflow. No cloud accounts required.

Environments & Secrets

Manage variables per environment. Switch between dev, staging, and production instantly.

Smart Autocomplete

Header suggestions, variable hints, and a Cmd+K command palette that keeps you in flow.

Full Response Inspector

JSON tree viewer, request timing waterfall, cookies, headers, and an integrated script console.

Multi-Protocol

WebSocket, SSE, GraphQL, and gRPC with dedicated panels and live streaming.

Cloud Sync & Workspaces

Push/pull collections to cloud, collaborate in team workspaces, and share public collection links.

Built-in Mock Server

Define routes, use template variables, and test against a local mock server — no external tools needed.

Request Builder

Build requests with confidence

A full-featured request builder with syntax-highlighted editors, variable interpolation, and tabbed organization for every part of your request.

  • Method selector with all HTTP verbs
  • Variable-highlighted URL bar with inline hints
  • Tabs for Params, Headers, Body, Auth, and Scripts
  • Monaco-powered editor with syntax highlighting
GET
{{base_url}}/api/v1/users?page=1&limit=20
// JSON body
{
"name": "John Doe",
"email": "john@example.com",
"role": "admin"
}
Scripting

Automate with pre & post scripts

Write JavaScript that runs before or after your request. Generate tokens, chain requests, validate responses — all with the built-in kr API.

  • Full kr API for env variables, crypto, and assertions
  • Integrated console with color-coded output
  • Chain values between requests automatically
  • Access response data in post-request scripts
Pre-request Script
// Generate auth token before each request
const timestamp = Date.now();
const secret = kr.env.get("API_SECRET");
 
const token = await kr.hmac("sha256", secret, timestamp);
 
kr.env.set("auth_token", token);
kr.console.log("Token generated", token);
Console
[pre]Token generated a3f8b2c1...
[env]auth_token updated
Collection Runner

Run entire collections in one click

Select a collection or folder and execute all its requests sequentially. Watch live progress, see pass/fail results, and let pre/post scripts chain data between requests — like a mini test suite for your APIs.

  • Sequential execution with live progress bar
  • Pre/post request scripts run between each request
  • Cancel mid-run — remaining requests marked as skipped
  • Run a whole collection or just a specific folder
Collection RunnerNew
Users API
Progress: 3/62 passed1 failed
GETList Users200120ms
POSTCreate User20185ms
GETGet User40445ms
PUTUpdate User...
DELETEDelete User
GETList Settings
Summary: 3/6 complete · 2 passed · 1 failed
Collaboration

Cloud sync, workspaces & public collections

Push and pull collections to the cloud, collaborate in team workspaces, or share publicly with a link. Git sync via .kairo.json still works too — use whatever fits your workflow.

  • Cloud push/pull to keep collections in sync across devices
  • Team workspaces with role-based access control
  • Public shareable URLs — anyone can import your collection
  • Git .kairo.json sync still fully supported
  • Secret variables masked in UI and excluded from exports
WorkspaceSynced
A
Acme Corp
8 members · Owner
P
Personal
1 members · Owner
Public CollectionShareable
kairoapp.dev/c/acme-users-api

Anyone with the link can import this collection into their Kairo.

OpenAPI Import

Import any OpenAPI spec

Point Kairo at an OpenAPI file or URL and import every endpoint in seconds. Preview before importing, auto-organize by tags, and support for OpenAPI 2.0 through 3.1.

  • OpenAPI 2.0 (Swagger) and 3.x support
  • Import from file or URL
  • Preview endpoints, tags, and metadata before importing
  • Auto-organize requests by tags into folders
Import OpenAPI Spec
https://api.example.com/openapi.json
PreviewOpenAPI 3.1
Acme Users API
v2.1.0 · 24 endpoints · 4 tags
GET/usersUsers
POST/usersUsers
GET/users/{id}Users
POST/auth/loginAuth
POST/auth/refreshAuth
+ 19 more endpoints...
Multi-Protocol

Every protocol, one app

WebSocket, SSE, GraphQL, and gRPC — all built in with dedicated panels, live streaming, and full request/response tooling. No plugins needed.

WebSocket

Real-time, two-way messaging

Connect to any WebSocket endpoint and send/receive messages in real time. Full message log with timestamps, direction indicators, and connection metrics.

  • Persistent connections with auto-reconnect
  • Send JSON, text, or binary frames
  • Live message log with sent/received indicators
  • Connection metrics: latency, message count, uptime
  • Custom headers and subprotocol support
WS
wss://stream.kairoapp.dev/v1/ws
Connected
Messages
142
Latency
3ms
Uptime
14m 32s
Message Log
2 sent4 received
{"action":"subscribe","channel":"trades"}12:04:01.123
{"status":"subscribed","channel":"trades"}12:04:01.187
{"type":"trade","price":42851.20,"qty":0.15}12:04:02.401
{"type":"trade","price":42853.00,"qty":0.73}12:04:03.019
{"action":"ping"}12:04:05.000
{"action":"pong"}12:04:05.003
Server-Sent Events

Stream events as they happen

Subscribe to SSE endpoints and watch events stream in with type badges, auto-reconnect, and filterable event types.

  • Live event stream with type-based color coding
  • Filter events by type: message, alert, heartbeat, custom
  • Auto-reconnect with last-event-id tracking
  • Event ID and timestamp for every message
SSE
https://api.kairoapp.dev/events/stream
Streaming
Filter:
Event Stream4 events
messageevt_0013s ago
{"user":"alice","action":"deploy","env":"prod"}
heartbeatevt_0022s ago
{"ts":1710600000}
alertevt_0031s ago
{"level":"warn","msg":"CPU usage 87%","host":"web-03"}
messageevt_004just now
{"user":"bob","action":"rollback","env":"prod"}
GraphQL

Query with confidence

A full GraphQL client with syntax-highlighted query editor, schema explorer, and variable support — all in one panel.

  • Syntax-highlighted query editor with autocomplete
  • Interactive schema explorer with type navigation
  • Variables panel with JSON validation
  • Query, mutation, and subscription support
  • Introspection-based schema fetching
GQLQuery Editor
query GetUser($id: ID!) {
user(id: $id) {
name
email
role
}
}
Schema Explorer3 types
Query3 fields
User5 fields
id: ID!
name: String!
email: String!
gRPC

Proto-first API testing

Load .proto files, browse services and methods, and send requests with JSON payloads. Full request/response inspection with timing.

  • Load .proto files or connect via server reflection
  • Browse services, methods, and message types
  • JSON request editor with proto field hints
  • Unary, server-streaming, and bidirectional calls
  • Response timing and metadata inspection
gRPCService Definition
user_service.protoLoaded
Service
UserService
Method
GetUser
Request
{
"user_id": "usr_29a1k"
}
ResponseOK · 12ms
{
"name": "Alice",
"role": "ADMIN"
}
All protocols. One app. Zero plugins.
Built-in API Testing

Stress test your APIs
without leaving the app

Load tests, stress tests, spike tests, soak tests, response assertions, and chain tests — all built in. No external tools, no YAML configs, no CLI. Just click and go.

Stress Testing

Find the breaking point

Gradually ramp from 1 to 500 virtual users and watch your API's response times, throughput, and error rates in real time. Kairo automatically detects where your service starts to degrade.

  • Ramp from 1 to 500 VUs with linear, stepped, or exponential curves
  • Live metric cards: avg/p50/p90/p95/p99 response times
  • Automatic breaking point detection when error rate exceeds threshold
  • Response time distribution with color-coded buckets
  • Timeline table with per-interval VU count, RPS, and percentiles
Stress TestCompleted
60.0s elapsed
Avg Response
289ms
p95: 820ms
Throughput
724
req/s peak
Error Rate
5.4%
342 errors
Total Reqs
38.2k
100 VUs peak
⚠ Breaking point detected at ~80 VUs — error rate exceeded 5%
Response Time Distribution
<50ms
22%
50-100ms
31%
100-200ms
18%
200-500ms
15%
500ms-1s
10%
>1s
4%
Timeline
TimeVUsRPSAvgp95Errors
0s11245ms89ms0%
10s2023452ms112ms0%
20s4045668ms145ms0.2%
30s6061295ms210ms0.8%
40s80701142ms385ms2.1%
50s100724289ms820ms5.4%
60s100680341ms950ms8.2%
6 Test Types

One click to start testing

Pick a preset and run. Smart defaults auto-fill your current request's URL, method, headers, and auth — so you're 3 clicks from a running test. Customize anything, or just hit Go.

  • 6 preset cards: Load, Stress, Spike, Soak, Assertions, Chain
  • "Use Active Request" auto-fills URL, method, headers, and body
  • Spike tests show pre-spike / spike / recovery phases with recovery time
  • Soak tests support durations from 1 minute to 1 hour
Quick StartChoose a test type
Load Test
Stress Test
Spike Test
Soak Test
Assertions
Chain Test
Spike Test ResultsDone
Pre-Spike
42ms avg
5 VUs · 10s
Spike
312ms avg
50 VUs · 5s
Recovery
58ms avg
5 VUs · 15s
Recovery: 3.2sResponse times normalized within 3.2s after spike
Chain Tests

Test complete API flows

Chain requests into sequences that pass data between steps. Extract a token from login, use it to fetch a user, then update their profile — all validated automatically.

  • Extract variables from JSON paths, headers, or status codes
  • Variables auto-injected into subsequent requests
  • Per-step assertions with actual vs. expected comparison
  • Visual flow diagram with pass/fail indicators
  • Stop on first failure or run all steps
Chain TestUsers API Flow
4 passed·1 failed
POST /auth/login200
85ms
token → auth_token
GET /users/me200
42ms
id → user_id
PUT /users/{{user_id}}200
67ms
GET /users/{{user_id}}/orders200
53ms
orders[0].id → order_id
DELETE /orders/{{order_id}}403
12ms
Step 5 failed: DELETE /orders/{{order_id}} returned 403 Forbidden — insufficient permissions
Response Assertions

Validate every detail

Define assertions on status codes, response times, headers, body content, and JSON paths. Get instant pass/fail results with actual vs. expected values side by side.

  • 11 operators: equals, contains, regex, less than, greater than, and more
  • JSON path assertions with dot-notation traversal
  • Header and body content matching
  • Response time thresholds with color-coded results
Response Assertions4 passed·1 failed
GET/api/v1/users?page=1&limit=20200142ms
Status codeequals200
Response timeless than500ms
Body JSON $.data.lengthgreater than0
Header content-typecontainsapplication/json
Body JSON $.meta.totalequals100
got 87
6 test types · Up to 500 VUs · Real-time metrics · Built into your API client

And so much more

Every detail crafted for a seamless API development workflow.

cURL Paste DetectionNew

Paste a cURL command directly into the URL bar and it auto-fills method, URL, headers, body, and auth.

Response PersistenceNew

Save responses alongside requests. Reopen a saved request and your last response is right there.

Mock ServerNew

Define routes, template variables, and test against a local mock server without any external tools.

Public CollectionsNew

Share collections via a public link — anyone can import them into their Kairo with one click.

Light & Dark ThemesNew

Warm beige light mode and dark mode, both with opaque and vibrancy variants. Easy on the eyes.

Per-Tab StateNew

Switch between tabs without losing responses. Each tab preserves its full request and response data.

cURL Import/Export

Paste a cURL command or export any request as cURL.

Command Palette

Cmd+K to find requests, switch envs, or run actions.

Request History

Full history with search, filter, and re-send capabilities.

Keyboard Shortcuts

Full keyboard navigation. Send, save, switch tabs — no mouse needed.

Draggable Layouts

Resize panels and arrange your workspace your way.

Collection Tree

Organize requests in nested folders with drag-and-drop.

Cookie Manager

View, edit, and manage cookies across domains and sessions.

Status Badges

Color-coded HTTP status indicators at a glance.

“Man is made by his belief. As he believes, so he is.”
Character Illustration
Draggable architectural helmet mask

Yooooo Move the mask

Ready to get started?

Download Kairo for free and start building better APIs today.

Built with Rust. Runs on macOS, Windows, and Linux.

Loading version…