New Version v0.7.0 is Out!

Kest CLI

Powerful, lightweight, and developer-first API testing tool. Bring "Documentation as Code" to your terminal.

curl -fsSL https://kest.dev/install.sh | sh
kest run auth.flow.md
🚀 Running Flow: Authentication Test
--- Step 1: POST /api/v1/login ---
✅ status == 200
✅ body.data.access_token existsNEW
✅ duration < 500msNEW
✓ Recorded as #1242
✨ All steps passed! Summary: 3/3 passed
📄 Full session logs: .kest/logs/session_20240204.log

What's New in v0.7.0?

AI-powered debugging, mock server, snapshot testing, exec steps, and more.

AI-Powered Commands

Diagnose failures with kest why, get suggestions with kest suggest, generate flows with kest gen — all powered by your local request history.

kest why · kest suggest · kest gen

Mock Server & Snapshots

Spin up a zero-config mock server from history. Save and verify API snapshots like Jest for APIs.

kest mock --port 8080 · kest snap

Exec Steps & Flow Graph

Run shell commands as flow steps with @type exec. New step/flow/edge blocks for complete flow graphs with Mermaid preview.

@type exec · ```step · ```edge

Watch Mode

Auto-rerun flow files on save. TDD for APIs — edit your .flow.md and see results instantly.

kest watch login.flow.md

Snapshot Testing

Save API response snapshots and verify them on subsequent runs. Detect field changes instantly.

kest snap /api/users --verify

Variable Chain Visualization

Visualize how variables flow between steps in your flow files with kest chain.

kest chain login.flow.md

Documentation is the Test

Markdown Flow

Use human-readable Markdown to define complex test sequences. No more clicking through UI.

Automatic Persistence

Every request is saved to a local SQLite database. Debug failures with full history.

Multi-Environment

Seamlessly switch between local, staging, and production with safe config management.

example.flow.md
# 🔐 Auth Flow

## 1. Login
```kest
POST /api/v1/login
{
  "username": "admin",
  "password": "password123"
}

[Captures]
token: data.access_token

[Asserts]
status == 200
body.data.access_token exists
body.data.password !exists
duration < 300ms
```

## 2. Get Profile
```kest
GET /api/v1/users/profile
Authorization: Bearer {{token}}

[Asserts]
status == 200
body.data.username != ""
```

Master the Command Line

Essential commands for your daily workflow.

kest init

Setup your .kest project in seconds.

kest run *.flow.md

Execute test flows and see results.

kest why

AI diagnoses why your last request failed.

kest mock --port 8080

Zero-config mock server from history.

kest snap --verify

Snapshot testing for API responses.

kest watch flow.md

Auto-rerun on file change (TDD).

kest history

Trace back every previous execution.

kest env use dev

Switch your API base URL safely.

kest replay --diff

Re-run and diff to catch regressions.

kest gen "desc"

AI generates a .flow.md from text.

Ready to bring Kest to your workflow?