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.