Skip to content
HN On Hacker News ↗

GitHub - 4yk5/Ghostman: A fast, keyboard-driven TUI API client & webhook inspector. No cloud, no Electron, 100% local-first.

▲ 68 points • 44 comments • by 4yk5 • 6d ago • HN discussion ↗

Pangram verdict · v3.3

We believe this text is mainly AI, with some human-written content.

93 %

AI likelihood · overall

AI
7% human-written 93% AI-generated
SEGMENTS · HUMAN 1 of 4
SEGMENTS · AI 3 of 4
WORD COUNT 658
PEAK AI % 100% · §3
Analyzed
Oct 31
backend: pangram/v3.3
Segments scanned
4 windows
avg 165 words each
Distribution
7 / 93%
human / AI fraction
Verdict
AI
Pangram v3.3

Article text · 658 words · 4 segments analyzed

Human AI-generated
§1 Human · 0%

____ _ _ / ___| |__ ___ ___| |_ _ __ ___ __ _ _ __ | | _| '_ \ / _ \/ __| __| '_ ` _ \ / _` | '_ \ | |_| | | | | (_) \__ \ |_| | | | | | (_| | | | | \____|_| |_|\___/|___/\__|_| |_| |_|\__,_|_| |_| A fast, keyboard-driven API client and webhook inspector right in your terminal.

§2 AI · 100%

No cloud accounts.

§3 AI · 100%

No 1GB Electron bloat. 100% Local-first. 💡 Why Ghostman? Modern API clients like Postman and Insomnia started as lightweight developer utilities, but evolved into heavy enterprise platforms: ❌ Force cloud logins, team workspaces, and telemetry ❌ Consume 800MB - 1.5GB of RAM just idling in the background ❌ Sluggish startup times ❌ Require external tunnels (ngrok, webhook.site) just to inspect a local webhook callback Ghostman is built from scratch for developers who want raw speed, terminal workflows, and complete local privacy: ⚡ Instant Startup: Launches in under 200ms directly in your terminal. 🔒 100% Local-First: All collections and requests live as plain YAML in .ghostman/collections.yaml. Check them into Git alongside your codebase. 🛰 Built-in Webhook Receiver: Hit Ctrl + W to spin up an ephemeral server on http://127.0.0.1:9090 to catch, inspect, and replay webhooks live on screen. ⌨ Vim & Keyboard-First: Full keyboard navigation — switch collections, compose JSON bodies, and fire requests without touching the mouse. 📸 Interface Tour 1. High-Speed Response & Telemetry Instant latency tracking in milliseconds, HTTP status badges, payload size metrics, and auto-formatted JSON syntax highlighting: 2. Live Webhook Stream Catch incoming HTTP callbacks from Stripe, GitHub, Shopify, or local microservices in real-time: ⚡ Core Features Full HTTP Method Suite: Seamlessly compose GET, POST, PUT, DELETE, and PATCH requests with custom headers and raw JSON payloads. Performance Telemetry: Measure DNS + TTFB latency in real-time to monitor API endpoint bottlenecks. Embedded Webhook Server: No need to configure third-party reverse proxies during development; catch incoming webhooks locally. Pretty JSON Formatting: Automatically indents, formats, and colorizes JSON payloads with Pygments and Rich. Collection Explorer: Organize API endpoints into collections, persistent across sessions. Cyberpunk Dark TUI: Optimized contrast for developer eyes with high-DPI terminal support. 🚀 Quick Start Prerequisites Python 3.10 or newer Installation # 1. Clone the repository git clone https://github.com/4yk5/ghostman.git cd ghostman # 2. Install dependencies pip install -r requirements.txt # 3. Launch Ghostman python main.py Windows tip: You can also simply double-click run.bat in the project root! ⌨ Keybindings & Controls Shortcut Description Ctrl + S Send HTTP Request (Executes call and switches to Response view) Ctrl + W Toggle Webhook Server (Starts / Stops receiver on port 9090) Tab / Shift+Tab Cycle focus between inputs, method selector, and tabs Enter Select collection item from sidebar Ctrl + Q Quit Ghostman 🛠 Testing Webhooks Locally Press Ctrl + W inside Ghostman to start the receiver on port 9090. Point your webhook provider (or fire a test curl from another terminal) to: curl -X POST http://127.0.0.1:9090/api/webhooks/stripe \ -H "Content-Type: application/json" \ -d '{"event": "payment_intent.succeeded", "amount": 4900}' Ghostman immediately captures the incoming request, displays the headers, and parses the payload live in the Live Webhooks tab. 📁 Git-Friendly Collections Ghostman stores all your requests inside .ghostman/collections.yaml in clean, human-readable YAML: - name: "Authentication API" requests: - name: "Login User" method: "POST" url: "https://api.example.com/v1/auth/login" headers: Content-Type: "application/json" body: '{\n "email": "user@example.com",\n "password": "secretpassword"\n}' Commit .ghostman/ directly to your repository so your entire team can share the same API collections without needing cloud sync accounts. 🗺 Roadmap Async HTTP Engine (httpx) with latency telemetry Ephemeral Webhook Receiver (port 9090) Local YAML collection persistence Dark cyber TUI theme with auto JSON styling 1-Click "Replay captured webhook as outbound request" Dynamic environment variables ({{BASE_URL}}, {{AUTH_TOKEN}}) Export requests to cURL format (Ctrl + C) Standalone binary release (zero Python install required) 📄 License This project is licensed under the MIT License - see the LICENSE file for details. Copyright © 2026 4yk5.

§4 AI · 100%

All rights reserved.