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.
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
Persistence
- Custom routes saved to
.volt_routes.jsonin your project root — routes and their base URLs 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[.
- 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.