volt is a terminal-native API client inspired by lazygit and lazydocker. Run it inside any project directory and it automatically discovers your routes, lets you edit and fire requests, and renders the response — all without leaving the terminal.
Volt-Working.mp4
Route discovery Volt scans your current working directory and automatically detects routes from:
| Backend | Frontend |
|---|---|
axum |
next.js (App Router + Pages Router) |
actix-web |
react-router |
express / fastify |
vue-router |
fastapi |
sveltekit |
angular |
Request editing
- Edit headers, query params, auth, and request body per route
- Supports
JSON,plain text, andform-urlencodedbody types - Base URL editor with history — navigate previous URLs with
↑/↓ - Per-route drafts are preserved across panes
Response viewing
- Syntax-aware highlighting for JSON, HTML, and XML responses
- JSON is automatically pretty-printed
- Status code, latency, and response size shown on every request
- Five view modes: Auto, JSON, HTML, Text, Raw — switch with
/ - Clipboard copy with
y
Customization
- Themes: Personalize Volt's look with built-in themes:
Vesper(default),Dracula,Gruvbox,Tokyo-Night,Catppuccin, andPoimandres. - Interactive Selector: Run
volt --themesto open an interactive menu and switch themes on the fly. - Dynamic UI: UI accents and the
VOLTheader automatically adapt to your chosen theme's primary color. - Version Check: Run
volt --versionorvolt -Vto check your current version. - Auto-Update: Run
volt updateto automatically check for and install the latest version from GitHub.
Broad Directory Protection
- Volt automatically detects when it's opened in a high-level directory (like a User Home or Root) and pauses recursive scanning to prevent lag, guiding you to open a specific project instead.
Persistence
- Custom routes saved to
.volt_routes.jsonin your project root — routes, base URLs, and hit counts survive restarts - App config stored in
.volt.toml
Workflow
- Works in directories with routes defined — opens the TUI with routes and you can add custom ones immediately (any directory functionality coming soon)
- Resizable panes via click-and-drag
- Mouse support throughout
curl https://raw.githubusercontent.com/frypan05/Volt/main/scripts/install.sh | bashThe script installs to $HOME/.local/bin by default. Change it with the DIR variable:
curl https://raw.githubusercontent.com/frypan05/Volt/main/scripts/install.sh | DIR=/usr/local/bin bashirm https://raw.githubusercontent.com/frypan05/Volt/main/scripts/install.ps1 | iexbrew tap frypan05/volt
brew install frypan05/volt/voltNavigate to any project and run:
cd your-project
voltcargo runVolt scans the current working directory and lists detected routes. By default requests target http://localhost:3000; edit the base URL with u.
Tab: rotate focus across panesShift+Tab: reverse focusj/kor arrows: move selection and switch tabs1-4: jump toHeaders,Body,Params,Authi: edit the active tab bufferu: edit base URLr: execute current requestc: copy response bodyEsc: leave insert modeq: quit
- Headers:
Header-Name: value - Params:
key=value - Auth: raw
Authorizationheader value, for exampleBearer <token> - Body: JSON is validated automatically when the content starts with
{or[.
Volt supports SSH-based remote execution for APIs that are only reachable from internal networks.
- Runs HTTP requests from a remote machine via SSH
- Helps you reach VPC-only APIs, private staging systems, and Kubernetes services
- Keeps the UI and request editing workflow the same
base_url = "http://localhost:3000"
[remote.production]
host = "prod-bastion.example.com"
user = "ubuntu"
port = 22
identity = "~/.ssh/volt_prod"
[remote.staging]
host = "staging-internal.company.com"
user = "deploy"
port = 22
identity = "~/.ssh/staging_key"volt --remote-list
volt --remote production
volt --remote stagingIf you select a remote profile, Volt uses the remote executor and shows it in the UI status bar.
- Add remote profiles to
.volt.toml - Run
volt --remote production - Type an internal URL, such as
http://internal-api.svc.cluster.local/users - Press Enter to execute the request from the remote host
- Review the response in the TUI
- Route discovery uses fast heuristics instead of full AST parsing.
- The insert mode is intentionally lightweight and optimized for request payload editing.
- Large responses are rendered inline; future versions should add paging and streaming.
- Graph QL support
- Graph based route discovery