Keyboard-driven TUI for testing HTTP endpoints with Vim-style navigation.
Database Schema Update: The database schema has been updated to include profile_name across all tables (history, analytics, stress test). Existing databases from previous versions may encounter migration warnings. For a clean start, remove old database files from ~/.restcli/data/ before upgrading.
Manage API calls using directory and file structure instead of massive JSON files.
No more merge conflicts. No more outdated collections. Each endpoint is a file. Git-friendly. Team-friendly.
- File-based requests (
.http,.yaml,.json,.jsonc,openapi) - one endpoint per file - Variable substitution with
{{varName}}and shell commands$(cmd) - Multi-value variables with aliases (e.g.,
dev,staging,prod) - Profile system for environment-specific headers and variables
- Request history with split view and live preview
- Streaming support for SSE and real-time responses
- GraphQL & HTTP protocols with automatic detection
- Request cancellation (ESC to abort in-progress requests)
- Confirmation modals for critical endpoints
- Concurrent request blocking prevents accidental request
- OAuth 2.0 with PKCE flow and token auto-extraction
- mTLS support with client certificates
- Variable interpolation in TLS paths for dynamic cert loading
- Inline filter editor with bookmark system - filter responses while viewing JSON structure
- Response filtering with JMESPath or bash commands
- Response pinning and diff for regression testing
- Error detail modals with full stack traces
- Embedded documentation viewer with collapsible trees
- Analytics tracking with per-endpoint stats and aggregated metrics
- Request history with persistent storage and search
- HTTP method color coding in file list for quick identification
- Stress testing with configurable concurrency and load
- Ramp-up control for gradual load increase
- Real-time metrics (latency, RPS, percentiles P50/P95/P99)
- Test result persistence with historical comparison
- One-click re-run for saved test configurations
- CLI mode for scripting (JSON/YAML output)
- cURL converter (convert cURL to request files)
- OpenAPI converter (generate requests from specs)
Download from releases or use the binary in bin/.
git clone https://github.com/studiowebux/restcli
cd restcli/src
go build -o ../bin/restcli ./cmd/restcli
mv ../bin/restcli /usr/local/bin/get-user.http:
### Get User
GET https://jsonplaceholder.typicode.com/users/1
restcliNavigate with j/k, press Enter to execute, ESC to cancel.
restcli run get-user.http
restcli run get-user.http --json # Output as JSON### Get User
GET {{baseUrl}}/users/{{userId}}
Authorization: Bearer {{token}}
Create .profiles.json:
{
"profiles": [
{
"name": "dev",
"variables": {
"baseUrl": "https://api.dev.example.com",
"userId": "1"
}
}
]
}Run with profile:
restcli -p devPress A in the TUI to view request analytics:
- Per-endpoint statistics (count, avg/min/max latency, error rate)
- Aggregated metrics across all requests
- Historical tracking with timestamps
- Grouped by file or normalized path
Press S (Shift+s) to access stress testing:
-
Create a new test - Press
nto configure:- Request file and endpoint to test
- Concurrent connections (workers)
- Total requests to send
- Ramp-up duration (gradual load increase)
- Test duration limit
-
Run the test - Ctrl+S to save config and start
- Real-time progress with live metrics
- Latency percentiles (P50, P95, P99)
- Requests per second (RPS)
- Success/error counts
-
View results - Automatic on completion:
- Historical test runs with comparison
- Detailed statistics and metrics
- Press
ron any run to re-execute - Press
lto load saved configurations
See docs/guides/stress-testing.md for detailed usage.
Full reference: Press ? in-app or see docs/reference/keyboard-shortcuts.md
Complete documentation at docs/
- Installation
- Quick Start
- TUI Mode
- CLI Mode
- File Formats
- Variables
- Profiles
- Authentication
- Filtering & Querying
- Analytics
- Stress Testing
- Examples
See LICENSE