Terminal API client with vim keybindings. Postman in your terminal that never phones home.
A full-featured API testing client that runs entirely in your terminal. Your requests, collections, and environments are saved as plain YAML files in .forge/ -- version them, share them, grep them.
forge- Never phones home - Zero telemetry, zero cloud sync. Your API keys and requests stay on your machine, in plain text files you control.
- Vim keybindings - Navigate, edit, and send requests without touching the mouse. Ctrl+R sends, j/k scrolls, y copies. Muscle memory transfers.
- Plain YAML storage - Collections and environments are YAML files in
.forge/. Commit them to git, diff them in PRs, grep them from the command line.
pip install forge-tui
# Launch the TUI
forge
# Import a cURL command
forge --curl 'curl -X POST https://api.example.com/data -H "Content-Type: application/json" -d "{\"key\": \"value\"}"'- Full HTTP support: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Environment profiles: Switch between dev/staging/prod with Ctrl+E
- Variable substitution: Use
{{BASE_URL}}in URLs, headers, and body - Collection management: Save and organize requests, browse in sidebar
- cURL import: Paste any cURL command and it parses into a request
- Response formatting: Auto-formatted JSON with syntax highlighting
- Auth support: Bearer token, Basic auth
- Status bar: Response status, timing, size at a glance
- Async requests: Non-blocking HTTP via aiohttp
+------------------------------------------+
| Header |
+----------+-------------------------------+
| Sidebar | Method | URL Bar | [Send] |
| (saved | ----------------------------+|
| requests| Headers editor |
| by | Body editor |
| collect)|-------------------------------+|
| | Response (formatted JSON) |
| | |
+----------+-------------------------------+
| Status: ENV | 200 OK | 42ms | 1.2 KB |
+------------------------------------------+
| Key | Action |
|---|---|
Ctrl+R |
Send request |
Ctrl+S |
Save to collection |
Ctrl+N |
New request |
Ctrl+E |
Cycle environment |
Ctrl+P |
Import from cURL |
Ctrl+L |
Clear response |
Ctrl+Q |
Quit |
F1 |
Help |
Edit .forge/environments.yaml:
dev:
BASE_URL: http://localhost:3000
API_KEY: dev-key-123
staging:
BASE_URL: https://staging.api.com
API_KEY: stg-key-456
prod:
BASE_URL: https://api.production.com
API_KEY: prod-key-789Use variables in requests: {{BASE_URL}}/users/{{USER_ID}}
- Fork the repository
- Create a feature branch
- Install dev dependencies:
pip install -e ".[dev]" - Make changes and test with
forge - Submit a pull request
MIT - see LICENSE for details.