A fast, lightweight HTTP client focused on .http file support.
Built with Tauri, React, and Rust.
Kvile (Norwegian for "rest") is an open-source HTTP debugging application designed for working with .http files. It treats .http files as first-class citizens, making it ideal for developers who prefer plain-text, git-friendly API collections.
- Native
.httpfile support - JetBrains, VS Code REST Client, and Kulala formats with auto-detection - Dual editor mode - Switch between source editing (Monaco) and GUI form editor
- Environment variables - Multiple environments with variable substitution
- Pre/post-request scripts - JavaScript scripting with assertions and variable extraction
- Request history - SQLite-backed history with search
- OAuth/OIDC support - Built-in authentication flows
- cURL import - Convert cURL commands to
.httpformat - Response comparison - Diff view for comparing responses
- File watching - Auto-reload when files change externally
- Keyboard-driven - Command palette and shortcuts for power users
- Lightweight - ~10 MB bundle, ~40 MB memory, sub-second startup
- Offline-first - No account required, no telemetry
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
libssl-dev libayatana-appindicator3-dev librsvg2-devsudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl \
libappindicator-gtk3 librsvgxcode-select --install- Install Visual Studio Build Tools
- Install WebView2
# Clone the repository
git clone https://github.com/tskulbru/kvile.git
cd kvile
# Install dependencies
npm install
# Run in development mode
npm run tauri dev
# Build for production
npm run tauri buildIf you experience display issues on Linux with Wayland:
WEBKIT_DISABLE_COMPOSITING_MODE=1 npm run tauri dev
# or
GDK_BACKEND=x11 npm run tauri devKvile supports multiple .http file specifications with automatic format detection.
### Get all users
GET https://api.example.com/users
Authorization: Bearer {{auth_token}}
### Create user
POST https://api.example.com/users
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com"
}
> {%
client.global.set("user_id", response.body.id);
%}@baseUrl = https://api.example.com
@authToken = your-token-here
###
GET {{baseUrl}}/users
Authorization: Bearer {{authToken}}# @name CreateUser
# @prompt username Enter username
POST https://api.example.com/users
Content-Type: application/json
{"username": "{{username}}"}| Variable | Description |
|---|---|
{{$uuid}} |
Generate UUID v4 |
{{$timestamp}} |
Current Unix timestamp |
{{$randomInt}} |
Random integer |
{{$datetime}} |
Current ISO datetime |
- Architecture Overview - System design and structure
- Development Guide - Setup, testing, and contributing
- Project Vision - Goals and roadmap
Contributions are welcome! Please see our Development Guide for setup instructions.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style
- Write tests for new functionality
- Update documentation as needed
- Keep commits atomic and well-described
MIT License - see LICENSE for details.
- Tauri - Desktop framework
- JetBrains HTTP Client - HTTP file specification
- VS Code REST Client - HTTP file format
- Kulala - Additional HTTP file extensions