Ghostman: Een snelle, toetsenbordgestuurde TUI API-client en webhook-inspector

Waarom Ghostman?

Moderne API-clients zoals Postman en Insomnia begonnen als lichtgewicht utilities voor ontwikkelaars, maar zijn geëvolueerd tot zware enterprise-platforms:

  • Cloud-dwang: Ze dwingen cloud-logins, team-workspaces en telemetrie af.
  • Hoge resource-consumptie: Ze verbruiken 800MB tot 1,5GB RAM, zelfs wanneer ze op de achtergrond draaien.
  • Trage opstarttijden: De applicaties starten traag op.
  • Afhankelijkheid van externe tools: Er zijn externe tunnels (zoals ngrok of webhook.site) nodig om een lokale webhook-callback te kunnen inspecteren.

Ghostman is vanaf de grond af opgebouwd voor ontwikkelaars die rauwe snelheid, terminal-workflows en volledige lokale privacy willen:

  • Directe opstart: Start in minder dan 200ms direct in je terminal.
  • 100% Local-First: Alle collecties en verzoeken worden opgeslagen als platte YAML-bestanden in .ghostman/collections.yaml. Je kunt deze samen met je codebase in Git commiten.
  • Ingebouwde Webhook-ontvanger: Gebruik Ctrl + W om een tijdelijke server op http://127.0.0.1:9090 op te starten om webhooks live op je scherm op te vangen, te inspecteren en opnieuw af te spelen.
  • Vim- & toetsenbordgericht: Volledige toetsenbordnavigatie — wissel tussen collecties, stel JSON-bodies samen en verstuur verzoeken zonder de muis aan te raken.

Kernfuncties

  • Volledige HTTP-methode suite: Stel probleemloos GET-, POST-, PUT-, DELETE- en PATCH-verzoeken samen met aangepaste headers en ruwe JSON-payloads.
  • Performance-telemetrie: Meet DNS- en TTFB-latentie in realtime om knelpunten in API-endpoints te monitoren.
  • Ingebouwde Webhook-server: Geen noodzaak voor het configureren van externe reverse proxies tijdens ontwikkeling; vang inkomende webhooks lokaal op.
  • Mooie JSON-opmaak: JSON-payloads worden automatisch ingesprongen, geformatteerd en gekleurd met Pygments en Rich.
  • Collection Explorer: Organiseer API-endpoints in collecties die over verschillende sessies bewaard blijven.
  • Cyberpunk Dark TUI: Geoptimaliseerd contrast voor ontwikkelaars met ondersteuning voor high-DPI terminals.

Snelstart

Vereisten

  • Python 3.10 of nieuwer

Installatie

# 1. Clone de repository
git clone https://github.com/4yk5/ghostman.git
cd ghostman

# 2. Installeer afhankelijkheden
pip install -r requirements.txt

# 3. Start Ghostman
python main.py

Tip voor Windows: Je kunt ook simpelweg dubbelklikken op run.bat in de projectroot.

Toetsencombinaties & Bediening

SneltoetsBeschrijving
Ctrl + SVerzend HTTP-verzoek (voert aanroep uit en schakelt naar Response-weergave)
Ctrl + WSchakel Webhook-server (start/stopt ontvanger op poort 9090)
Tab / Shift+TabWissel focus tussen invoervelden, methode-selector en tabbladen
EnterSelecteer item uit de collectie in de zijbalk
Ctrl + QSluit Ghostman

Webhooks lokaal testen

Druk op Ctrl + W in Ghostman om de ontvanger op poort 9090 te starten. Richt je webhook-provider (of verstuur een test-curl vanuit een andere terminal) naar:

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 vangt het inkomende verzoek onmiddellijk op, toont de headers en parseert de payload live in het tabblad "Live Webhooks".

Git-vriendelijke Collecties

Ghostman slaat al je verzoeken op in .ghostman/collections.yaml in schoon, mensleesbaar 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 de map .ghostman/ direct naar je repository, zodat je hele team dezelfde API-collecties kan delen zonder dat er cloud-sync-accounts nodig zijn.

Roadmap

  • Async HTTP-engine (httpx) met latentie-telemetrie
  • Ephemeral Webhook-ontvanger (poort 9090)
  • Lokale YAML-collectie persistentie
  • Dark cyber TUI-thema met automatische JSON-styling
  • 1-klik "Herhaal opgevangen webhook als uitgaand verzoek"
  • Dynamische omgevingsvariabelen ({{BASEURL}}, {{AUTHTOKEN}})
  • Export van verzoeken naar cURL-formaat (Ctrl + C)
  • Standalone binary release (waarbij geen Python-installatie vereist is)

Licentie

Dit project is gelicentieerd onder de MIT-licentie - zie het LICENSE-bestand voor details. Copyright © 2026 4yk5. Alle rechten voorbehouden.