Readme
Postdad π
"He's not mad at your slow API, just disappointed."
Postdad is a high-speed, local-first Terminal UI (TUI) for testing APIs. Itβs built in Rust π¦ because Electron apps shouldn't eat 1GB of RAM just to send a GET request.
____ _ _ _
| _ \ ___ ___| |_ __| | __ _ __| |
| |_) / _ \/ __| __/ _` |/ _` |/ _` |
| __/ (_) \__ \ || (_| | (_| | (_| |
|_| \___/|___/\__\__,_|\__,_|\__,_|
Why Postdad?
Modern dev tools are bloated. Postman takes 5-10 seconds to launch. Postdad takes <100ms .
Feature
Postman/Insomnia
CURL/HTTPie
Postdad
Speed
π’ Slow (Electron)
β‘ Fast
π Blazing Fast (Rust)
RAM Usage
500MB+
~5MB
~15MB
Interface
Mouse Clicky
CLI Args
Vim-Style TUI
Storage
Cloud Sync (Forced)
History File
Local .hcl Files
Features
Vim-Motion Navigation : Use j , k , and / to fly through your request history.
Three-Pane Layout : Collections on the left, Request on top, Response at bottom.
JSON Explorer : Interactive tree view for massive JSON responses. Expansion/Collapse nodes with arrow keys.
Dad's Garage : Local-first collection storage. No login required.
Async & Non-Blocking : The UI never freezes, even if the API times out.
Latency Heartbeat : Real-time graph monitoring your API's pulse.
Zen Mode : Press Ctrl+ z to focus purely on the response data.
Installation
cargo install Postdad
Update
cargo install -- force Postdad
Usage
Postdad
Ctrl+z : Toggle Zen Mode (Focus)
Ctrl+w : Toggle WebSocket Mode
f : Toggle Fullscreen Response
Enter : Send Request (or Sync Param Edit)
e : Edit URL (Press Tab to cycle method)
Tab : Switch Request Tabs (Params, Headers, Body, Auth)
c : Copy as cURL command
G (Shift+g): Copy as Python (requests) code
J (Shift+j): Copy as JavaScript (fetch) code
Ctrl+t : Cycle Themes (Default, Matrix, Cyberpunk, Dracula)
q : Quit (Dad needs a nap)
Tab Context Actions
Params Tab :
a : Add Param | d : Delete Param | e : Edit Key/Value
Auth Tab :
t : Switch Type (None/Bearer/Basic/OAuth2) | u : Edit User | p : Edit Password
OAuth 2.0 : Enter to Start Flow | i /1 /2 to Edit Config
Chain Tab :
a : Add Rule | d : Delete Rule | e : Edit Key/Path
Body Tab :
m : Switch Type (Raw/Multipart/GraphQL)
Multipart : a Add | Space Toggle File | d Delete
GraphQL : Q (Shift+q) Edit Query | V (Shift+v) Edit Variables
Roadmap to Recognition
WebSocket Mode (Ctrl+ W to enter)
e : Edit WebSocket URL
Enter : Connect / Disconnect
i : Start typing a message
Enter (while typing): Send message
j/k : Scroll through message history
x : Clear message history
? : WebSocket Help
Collection Runner (Ctrl+ R to enter)
Run all requests in a collection sequentially and see pass/fail results.
j/k : Navigate collections (before run) or scroll results (after run)
Enter : Run selected collection
x : Clear results
Esc : Exit runner mode
? : Help
Status Code Assertions:
By default, expects HTTP 200. Add expected_status = XXX in your . hcl file to specify a different expected status:
request " Create User" {
method = " POST"
url = " https://api.example.com/users"
expected_status = 201
}
Pre-Request Scripts (P to edit)
Press P to open your $ EDITOR and write Rhai scripts that run before each request.
Available Functions:
Function
Description
set_header ( name, value)
Add or modify a request header
get_header ( name)
Get current header value
set_var ( name, value)
Set an environment variable
get_var ( name)
Get an environment variable
set_body ( body)
Override the request body
set_url ( url)
Override the request URL
timestamp ( )
Get Unix timestamp (seconds)
timestamp_ms ( )
Get Unix timestamp (milliseconds)
uuid ( )
Generate a random UUID v4
base64_encode ( text)
Encode text as Base64
base64_decode ( text)
Decode Base64 text
print ( msg)
Debug log (shows in output)
Constants: METHOD , URL , BODY
Example Script:
// Add timestamp header to every request
let ts = timestamp ( ) ;
set_header ( " X-Request-Time" , ts. to_string ( ) ) ;
// Add request ID
let id = uuid ( ) ;
set_header ( " X-Request-ID" , id) ;
Leveling Up to Postman (Future Ideas)
To truly rival Postman, we still need:
Import/Export π¦ : Import Postman Collections (. json) and OpenAPI/Swagger specs
Test Scripts π§ͺ : Post-request assertions (like Postman's pm. test ( ) )
More Code Generators π» : Add support for Go, Rust, Ruby, PHP, and C#
Proxy Support π : HTTP/SOCKS proxy configuration for corporate environments
Request Tabs π : Work on multiple requests simultaneously
Response History π : View previous responses for a request
Binary Response Handling π : Download files, preview images
SSL Certificate Config π : Custom CA certs, client certificates
Request Timeout Settings β±οΈ : Per-request timeout configuration
Syntax Highlighting π¨ : In-app JSON/code highlighting
Mock Servers π : Create mock endpoints for testing
gRPC Support οΏ½ : Protocol buffers and gRPC streaming
GraphQL Introspection π : Auto-complete from schema
Request Diff π : Compare two responses side by side
API Documentation Gen π : Generate docs from collections
License
MIT