Terminal HTTP Request Tool
Vim-Style Keyboard Navigation

A keyboard-driven terminal UI for testing HTTP endpoints with Vim-style navigation. File-based organization with .http, .yaml, .json, and .jsonc formats. Individual request files in directories instead of large JSON collections—better for Git and reduces merge conflicts.

Features

File-Based Requests

Support for .http, .yaml, .json, and .jsonc formats with OpenAPI support. Run requests by name without extension using the CLI. Better Git integration with individual files instead of large collections.

Variable Substitution

Dynamic content with {{varName}} syntax, shell command execution via $(cmd), and environment-specific profiles. Use --env-file to load .env files.

Profiles & History

Quick account switching with profiles stored in .profiles.json. Request history with previews and automatic session cleanup on profile switch.

OAuth 2.0 & mTLS

Built-in OAuth 2.0 with PKCE flow authentication. Mutual TLS support with client certificates and dynamic certificate path interpolation.

Request Chaining

Chain requests with dependency resolution. Stream SSE responses, execute GraphQL queries, and cancel operations with ESC key.

Response Analysis

JMESPath and bash filtering for response data. Pin responses for regression testing. Error modals with stack traces and embedded documentation.

Stress Testing

Concurrent stress testing with configurable workers and ramp-up duration control. Real-time metrics including latency percentiles and requests-per-second tracking.

Developer Tools

Built-in mock server for local testing. HTTP debug proxy for traffic inspection. HAR file conversion and cURL-to-request file conversion.

Keyboard-Driven TUI

Vim-like keybindings with j/k navigation. Fast scrolling with Ctrl+D/U. Searchable help, inline config editing, and file management with confirmations.

...and 25+ more features! Check the documentation for the complete list or download the app to try it yourself.

Quick Start

# Start the interactive TUI
restcli

# Run by filename (no extension needed)
restcli run get-user

# Override variables inline
restcli run get-user -e id=123 -e env=prod

# Load environment from .env file
restcli --env-file .env.local request.http

# Convert cURL to YAML format
pbpaste | restcli curl2http --format yaml -o request.yaml

# Import OpenAPI as JSON
restcli openapi2http swagger.json --format json -o requests/

# Convert HAR file to request files
restcli har2http recording.har -o requests/

Get Started

Download the latest release for macOS and start testing your APIs from the terminal.