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.
Features
- 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
Installation
Prerequisites
Linux (Debian/Ubuntu)
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \ libssl-dev libayatana-appindicator3-dev librsvg2-dev
Linux (Arch)
sudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl \ libappindicator-gtk3 librsvg
macOS
Windows
- Install Visual Studio Build Tools
- Install WebView2
Build from Source
# 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 build
Wayland Users
If you experience display issues on Linux with Wayland:
WEBKIT_DISABLE_COMPOSITING_MODE=1 npm run tauri dev
# or
GDK_BACKEND=x11 npm run tauri devHTTP File Formats
Kvile supports multiple .http file specifications with automatic format detection.
JetBrains HTTP Client
### 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); %}
VS Code REST Client
@baseUrl = https://api.example.com @authToken = your-token-here ### GET {{baseUrl}}/users Authorization: Bearer {{authToken}}
Kulala Extensions
# @name CreateUser # @prompt username Enter username POST https://api.example.com/users Content-Type: application/json {"username": "{{username}}"}
Dynamic Variables
| Variable | Description |
|---|---|
{{$uuid}} |
Generate UUID v4 |
{{$timestamp}} |
Current Unix timestamp |
{{$randomInt}} |
Random integer |
{{$datetime}} |
Current ISO datetime |
Documentation
- Architecture Overview - System design and structure
- Development Guide - Setup, testing, and contributing
- Project Vision - Goals and roadmap
Contributing
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
Guidelines
- Follow existing code style
- Write tests for new functionality
- Update documentation as needed
- Keep commits atomic and well-described
License
MIT License - see LICENSE for details.
Acknowledgments
- Tauri - Desktop framework
- JetBrains HTTP Client - HTTP file specification
- VS Code REST Client - HTTP file format
- Kulala - Additional HTTP file extensions