Skip to content

azharmateen/forge-tui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

forge-tui

Built with Claude Code

Terminal API client with vim keybindings. Postman in your terminal that never phones home.

PyPI License: MIT Python 3.9+

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

Why forge-tui?

  • 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.

Quickstart

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\"}"'

Features

  • 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

Architecture

+------------------------------------------+
|  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    |
+------------------------------------------+

Keybindings

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

Environment Variables

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-789

Use variables in requests: {{BASE_URL}}/users/{{USER_ID}}

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Install dev dependencies: pip install -e ".[dev]"
  4. Make changes and test with forge
  5. Submit a pull request

License

MIT - see LICENSE for details.

About

Record, replay, and diff WebSocket sessions for debugging.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages