Comparison
14 min read
47 views

Ngrok vs. Hookdeck CLI : Le spécialiste des webhooks purs

IT
InstaTunnel Team
Published by our engineering team
Ngrok vs. Hookdeck CLI : Le spécialiste des webhooks purs

Current comparison

Looking for the main ngrok alternative guide?

We keep the latest ngrok alternative comparison, CLI commands, pricing notes, and webhook examples on one canonical page.

Open the InstaTunnel ngrok alternative guide

Quick answer

ngrok vs Hookdeck CLI : L'outil ultime pour tester les webhooks: quick answer

If free tunnel limits interrupt your workflow, compare session length, stable URLs, concurrent tunnels, and paid-plan pricing before choosing a localhost tunnel tool.

What free tunnel limits should developers check first?

Check session duration, URL stability, concurrent tunnels, custom subdomains, bandwidth or request limits, and whether webhook callbacks survive restarts.

How does InstaTunnel handle longer development sessions?

InstaTunnel Free is designed around 24-hour sessions, with Pro available for higher limits and MCP endpoint tunnel workflows.

La conception moderne des applications s’appuie fortement sur une architecture orientée événements. Des API tierces comme Stripe, Shopify, GitHub et Twilio communiquent des données critiques à des systèmes internes via des requêtes HTTP POST asynchrones — les webhooks. Historiquement, les environnements de développement locaux étaient isolés du réseau public par des pare-feu, des routeurs et du NAT. Pour contourner cela et recevoir de véritables payloads webhook sur http://localhost, les équipes d’ingénierie ont traditionnellement utilisé ngrok. En tant qu’outil de tunneling standard de l’industrie, ngrok crée une URL publique qui redirige le trafic directement vers un port de développement local.

Mais ngrok considère les webhooks comme un simple payload dans un flux HTTP générique. À mesure que les applications évoluent vers des microservices décentralisés, des réseaux d’événements bruyants et des exigences de fiabilité plus strictes, les tunnels à usage général commencent à montrer leurs limites.

Hookdeck CLI adopte une approche différente. Au lieu d’agir comme un simple tuyau réseau transparent, c’est une passerelle d’événements dédiée conçue spécifiquement pour les webhooks, qui gère aussi le tunneling local comme l’une de ses fonctionnalités. Ce guide compare les deux au niveau architectural, opérationnel et workflow — et corrige plusieurs affirmations circulant dans les contenus comparatifs mais qui ne tiennent pas face à la documentation actuelle des outils.

Paradigmes architecturaux : Tunnels ouverts vs. Flux d’abonnement

Fonctionnement de ngrok : Le tunnel d’infrastructure ouvert

Lorsque vous exécutez ngrok http 3000, l’agent ngrok établit une connexion sortante longue durée avec l’infrastructure cloud de ngrok. ngrok attribue une URL publique et transfère chaque paquet envoyé à cette endpoint via la connexion vers votre port local.

[Source Webhook] --- [ngrok Cloud Edge] ===(Tunneling encapsulé)=== [ngrok Agent] --- [Serveur local :3000]

Selon ce modèle :

  • La couche : Il fonctionne comme un reverse proxy de couche 4 (TCP/TLS) ou couche 7 (HTTP), et — à partir de 2026 — comme une “passerelle universelle” plus large avec sa propre couche YAML de Traffic Policy pour le routage, la réécriture et le contrôle d’accès en périphérie.
  • La portée : Le tunnel expose tout ce qui écoute sur ce port local. Si votre framework sert dix routes, les dix sont accessibles via le point d’accès public sauf si vous limitez le tunnel ou écrivez une règle de Traffic Policy pour le restreindre.
  • L’état : Sans politique configurée, il se comporte comme un flux sans état — le trafic est transmis en temps réel à son arrivée.

Fonctionnement de Hookdeck CLI : Le flux d’abonnement aux webhooks

Hookdeck fonctionne comme un broker d’événements asynchrone placé entre le fournisseur tiers et votre machine locale, plutôt qu’un simple contournement réseau.

                                                                                       +--- [Machine de développement A : Port 4000]
[Source Webhook] --- [Passerelle d'événements Hookdeck (File / Broker)] ===(Flux CLI)=== |--- [Machine de développement B : Port 4000]
                                                                                     +--- [Machine de développement C : Port 5000]

Exécuter hookdeck listen 4000 <nom-source> ne se limite pas à rediriger un port — cela crée trois abstractions dans votre projet Hookdeck :

  • Source : Un point de suivi persistant associé à une plateforme en amont (par exemple, stripe-webhooks). La CLI attribue une URL permanente sous hkdk.events qui reste la même après chaque redémarrage.
  • Destination : Une définition pointant vers votre cible locale (par exemple, http://localhost:4000).
  • Connexion : La liaison entre Source et Destination — un flux d’abonnement avec état, isolé, et non un simple tuyau.

Lorsqu’un webhook atteint le bord Hookdeck, il est immédiatement reconnu et mis en file d’attente, puis livré à la session CLI locale abonnée. Si votre serveur local plante ou est mis en pause sur un point d’arrêt, l’événement reste en file plutôt que d’être perdu — la documentation de Hookdeck décrit cela comme une garantie de livraison au moins une fois, soutenue par une file d’attente durable.

Une correction importante : l’utilisation des fonctionnalités de forwarding de la CLI nécessite un compte Hookdeck gratuit (hookdeck login) — ce n’est pas un service sans compte comme le suggèrent certains contenus comparatifs. Ce qui est gratuit, selon la documentation npm et GitHub de Hookdeck, c’est une URL d’événement illimitée et permanente pour le développement local : “URL d’événement gratuite et illimitée” pour le cas d’usage CLI.

Matrice de comparaison technique

Capacité ngrok Hookdeck CLI
Architecture principale Reverse proxy L4/L7 à usage général, s’étendant vers une passerelle API/IA plus large Passerelle d’événements webhook dédiée
État du tunnel Transfert sans état par défaut Avec état (inclus, en file, géré)
Stabilité de l’URL (niveau gratuit) Un domaine de développement auto-attribué qui persiste après redémarrage, mais non personnalisable ; les adresses TCP sont attribuées aléatoirement sauf vérification de carte URL Source permanente par projet ; nécessite un compte gratuit (sans carte)
Filtrage du trafic Au niveau de l’edge via Traffic Policy (langage YAML séparé, facturé par unité) — pas filtrage basé sur le payload webhook Filtres granulaires natifs sur header, corps, chemin, ou requête via flags CLI ou dashboard
Fan-out / routage Principalement 1:1 ; le fan-out multi-cible est possible via une action Traffic Policy forward-internal sur un endpoint wildcard, mais nécessite une configuration manuelle Fan-out natif 1:many — une Source peut alimenter plusieurs Connections/Destinations
Isolation d’équipe 1 membre sur Free et Hobbyist ; membres illimités (3 inclus) seulement sur le niveau Pay-as-you-go Chaque développeur exécute sa propre session CLI sur des Sources partagées avec filtrage au niveau de la session — pas de besoin de siège
Interface de débogage Tableau de bord web local à localhost:4040 avec rejouer la requête Interface terminal complète (TUI) + console web Hookdeck
Rejouer/réessayer Rejeu manuel via le dashboard local Rétroaction instantanée au clavier (r) dans la CLI, avec règles de retry automatique configurables
Intégration d’agent IA Aucune dans la CLI (ngrok propose une tooling MCP séparée pour connecter d’autres serveurs MCP via sa passerelle) Serveur MCP intégré (hookdeck gateway mcp) exposant 11 outils

Différenciateurs clés

1. Filtrage granulaire des événements vs. exposition en flux

Un paiement Stripe peut déclencher payment_intent.created, customer.updated, charge.succeeded, et invoice.created en succession rapide. Si vous ne déboguez que charge.succeeded, un simple tunnel transfère tout — chaque requête atteint votre serveur local, consommant du CPU et encombrant les logs, sauf si vous avez écrit une politique d’edge séparée pour le filtrer.

Le CLI de Hookdeck supporte le filtrage direct via des flags sur listen, en utilisant la syntaxe de référence réelle :

hookdeck listen 4000 stripe-webhooks --filter-body '{"type": "charge.succeeded"}'

Le CLI supporte aussi --filter-headers, --filter-query, et --filter-path pour filtrer sur d’autres parties de la requête. Les événements non correspondants sont filtrés à la passerelle — ils ne parviennent jamais à votre terminal ou serveur local, ce qui maintient votre session de débogage concentrée sur les payloads en test.

(Note : --path est un flag différent — il définit où les événements sont redirigés sur votre serveur local, par ex. --path /webhooks/stripe. Ce n’est pas un filtre, et confondre les deux est une erreur à éviter si vous scriptiez cela.)

2. Fan-out multi-cible pour architectures microservices

Considérez une commande de paiement : un webhook de commande complétée pourrait devoir atteindre un service de fulfillment, une pipeline d’analytique, et un système de notifications tournant sur trois ports locaux différents. Avec un tunnel simple, vous auriez besoin de trois URLs publiques enregistrées chez le fournisseur — ou d’un script reverse-proxy fait maison pour dupliquer et rerouter la payload — sauf si le fournisseur supporte l’enregistrement de plusieurs endpoints nativement.

                                 +--- Destination 1 : http://localhost:5001 (Fulfillment)
[URL unique Stripe] ---|--- Destination 2 : http://localhost:5002 (Analytics)
                               +--- Destination 3 : http://localhost:5003 (Notifications)

Hookdeck considère cela comme un pattern natif : une Source peut mapper à plusieurs Connections, chacune pointant vers une Destination différente, filtrée ou transformée indépendamment.

3. Flux de travail natifs pour équipe

Lorsque plusieurs développeurs partagent un compte Stripe ou Shopify de staging, ils se disputent souvent le contrôle d’une URL webhook enregistrée — si le Développeur A la pointe vers son tunnel personnel, la session du Développeur B se coupe.

La documentation de Hookdeck décrit une solution spécifique : chaque développeur exécute sa propre session hookdeck listen sur la même Source partagée, en utilisant un filtrage au niveau de la session (par exemple, routage par paramètre de requête ou header identifié par le développeur) pour que chacun ne reçoive que les événements pertinents, sans reconfigurer le fournisseur en amont.

Débogage : TUI terminal vs. Dashboard web

ngrok fournit un tableau de bord local à http://127.0.0.1:4040 — une vue à deux panneaux des requêtes entrantes avec headers et corps complets, plus un bouton “Rejouer” manuel qui renvoie une requête capturée à votre endpoint local. C’est une interface solide, mais elle vit dans un onglet de navigateur, séparée de votre terminal.

Hookdeck CLI exécute une interface terminal interactive en plein écran par défaut (--output interactive), avec compact et quiet comme modes démarrage alternatifs pour une journalisation à moindre verbosité — ce sont des flags que vous lancez, pas des toggles en cours de session. Une vraie session ressemble à ceci :

●── HOOKDECK CLI ──● Écoute sur 1 source • 1 connexion • [i] Réduire
Source Shopify │ Requêtes vers → https://hkdk.events/src_...
              └─ Transmet à → http://localhost:3000/webhooks/shopify/orders

Événements • [↑↓] Naviguer
─────────────────────────────────────────────────────────
 2026-07-10 14:42:55 [200] POST /webhooks/shopify/orders (34ms)

✓ Dernier événement réussi | [r] Rejouer • [o] Ouvrir dans le dashboard • [d] Afficher les données

Les raccourcis clavier documentés sont : ↑/↓ (ou vim-style j/k) pour naviguer, r pour rejouer instantanément l’événement sélectionné contre votre serveur local, d pour voir le détail complet de la requête/réponse en ligne, o pour ouvrir l’événement dans la console web Hookdeck pour un traçage approfondi, et i pour réduire ou étendre l’en-tête de connexion. Rejouer avec r renvoie la même payload exacte sans re-déclencher l’événement du fournisseur — utile pour tester le code de gestion sans attendre que Stripe ou Shopify renvoient à nouveau.

Flux de travail pilotés par IA via MCP

Hookdeck CLI v2 (sorti en mars 2026) a ajouté un serveur MCP intégré, lancé avec :

hookdeck gateway mcp

Vous ne l’exécutez pas directement — votre client MCP (Claude Desktop, Cursor, etc.) le lance en sous-processus via stdio :

{
  "mcpServers": {
    "hookdeck": {
      "command": "hookdeck",
      "args": ["gateway", "mcp"]
    }
  }
}

Selon les notes de version de Hookdeck, le serveur expose 11 outils : projects, connections, sources, destinations, transformations, requests, events, attempts, issues, metrics, et un outil help. Ces outils sont principalement destinés à l’inspection et à la lecture — pour répondre à “qu’est-ce qui échoue et pourquoi?” sans ouvrir le Dashboard. L’outil connections est le seul avec accès en écriture : il supporte la mise en pause et la reprise d’une connexion. Si vous ne vous êtes pas encore authentifié, un outil hookdeck_login apparaît automatiquement et se supprime une fois connecté.

Un workflow type selon la documentation de Hookdeck : un agent collecte des métriques globales, repère un taux d’échec élevé, le réduit à une connexion spécifique (par ex. shopify-ordersfulfillment-service), inspecte un événement échoué et ses tentatives de livraison, et remonte à la cause racine vers un service de destination qui ne gère qu’un sous-type d’événement et rejette le reste avec des 422 — à ce moment-là, la correction (règle de filtrage) est une opération CLI que l’agent vous confie plutôt que d’appliquer lui-même.

(Pour contexte : ngrok possède ses propres fonctionnalités séparées liées à l’IA — il se présente comme un moyen d’exposer ou de connecter des serveurs MCP via sa passerelle — mais c’est une capacité différente de celle du serveur MCP intégré de Hookdeck qui permet à un agent d’inspecter la santé de livraison des webhooks.)

Tarification en un coup d’œil

C’est ici que beaucoup de contenus comparatifs en ligne sont obsolètes, voici ce que chaque page de tarification indique à la mi-2026.

ngrok (d’après ngrok.com/pricing) :

Niveau Prix Principales limites
Gratuit 0 $ 3 endpoints en ligne, 1 Go de transfert de données, 20k requêtes HTTP/mois, page d’avertissement sur HTTP, 1 membre d’équipe
Hobbyiste 8 $/mo annuel (10 $/mo mensuel) 3 endpoints en ligne, 5 Go inclus, 100k requêtes incluses, pas de page d’avertissement, domaines ngrok de marque
Pay-as-you-go 20 $/mo de base + usage Endpoints illimités, domaine propre, membres illimités (3 inclus), SSO/RBAC en option

À noter : plusieurs articles de comparaison ngrok affirment que le niveau gratuit impose un timeout de session de 2 heures. La documentation officielle ngrok indique le contraire — les endpoints gratuits n’ont pas de timeout et peuvent fonctionner indéfiniment en tant que service en arrière-plan. Les vraies limites du niveau gratuit sont le plafond de 1 Go/mois de bande passante, la limite de 20k requêtes, et la page d’avertissement forcée (supprimable via un header ou un plan payant).

Hookdeck (d’après hookdeck.com/pricing, pour l’Event Gateway en production — distinct de l’usage local gratuit du CLI) :

Niveau Prix Principales limites
Développeur (Gratuit) 0 $ 10 000 événements/mois, rétention de 3 jours, 1 utilisateur, pas de carte requise
Équipe 39 $/mo de base Pay-as-you-go au-delà (environ 0,33 $/100k événements supplémentaires), utilisateurs illimités, rétention de 7 jours
Croissance 499 $/mo SLA de disponibilité/latence, SSO/SAML/SCIM, export de métriques vers Datadog, rétention de 30 jours

La page d’accueil de Hookdeck indique un objectif de disponibilité de 99,999 % pour l’infrastructure de l’Event Gateway — c’est une affirmation du fournisseur, non une donnée auditée indépendamment, mais elle est clairement indiquée sur leur site.

Prêt pour la production : du développement local à l’entreprise

Une limite courante de tout tunnel local est ce qui se passe en production. ngrok est principalement conçu pour le développement et l’exposition ad hoc ; l’utilisation en production nécessite d’ajouter votre propre logique de retry, de limitation de débit, et de vérification de signature, ou de payer pour les fonctionnalités de passerelle de niveau production de ngrok pour obtenir certains de ces avantages à la périphérie.

Hookdeck affirme que le même modèle Source/Connection/Destination reste inchangé — il suffit de pointer le Destination vers votre URL de production au lieu du CLI. Selon la documentation de retry de Hookdeck, les retries automatiques sont plafonnés à 50 tentatives par événement, et une guidance séparée indique des fenêtres de retry allant jusqu’à environ une semaine comme plafond configurable — nettement plus agressif que ce que Stripe ou Shopify font nativement dans leurs propres schedules de retry webhook. Les événements échoués après épuisement des retries sont regroupés en “Issues” (ajoutés avec la détection d’incidents au niveau de la requête dans la version CLI de mars 2026) plutôt que silencieusement abandonnés, avec alertes Slack/PagerDuty et retries en masse une fois le problème résolu.

Évaluation finale

Optez pour ngrok lorsque vous avez besoin d’exposer rapidement un serveur local pour une démo, que vous testez du trafic HTTP/TCP/TLS général qui n’est pas spécifiquement webhook, ou que vous souhaitez l’outil de tunneling le plus documenté qui apparaît dans presque tous les guides d’intégration des fournisseurs.

Optez pour Hookdeck CLI lorsque vous travaillez avec des flux webhook bruyants ou à haut volume nécessitant un filtrage pour rester débogables, qu’une seule événement doit fan-out vers plusieurs services locaux, que votre équipe partage une source webhook de staging et se gêne mutuellement, ou que vous souhaitez que le workflow de développement local se transpose en production sans ré-architecturer la logique de retry et d’observabilité depuis zéro.


Historique des modifications

Corrections et ajouts apportés à la version initiale, vérifiés contre la documentation actuelle de chaque fournisseur (juillet 2026) :

  • Stabilité des URL gratuite ngrok : La version initiale affirmait que les URL gratuites sont “éphémères, changent à chaque redémarrage de l’agent”. La documentation ngrok indique que le niveau gratuit obtient un domaine de développement auto-attribué qui persiste après redémarrage (mais non personnalisable). La matrice de comparaison a été corrigée en conséquence ; il est noté que les adresses TCP sont spécifiquement attribuées aléatoirement sauf vérification de carte.
  • Timeout de session niveau gratuit ngrok : Suppression de l’affirmation implicite de timeout de 2 heures, qui circule dans certains contenus tiers mais est explicitement contredite par la documentation ngrok (“les endpoints gratuits n’ont PAS de timeout”).
  • Tarifs ngrok : Remplacement des chiffres tiers obsolètes (“Personal 8$/mo, Pro 20$/mo, Enterprise 39$/mo”) par les noms et prix actuels issus de la page officielle (Free, Hobbyist à 8$/an ou 10$/mo, Pay-as-you-go à 20$/mo).
  • Claim “pas besoin de compte” pour Hookdeck : Correction — le CLI requiert un compte gratuit (hookdeck login) même si les URLs d’événements locaux sont illimitées et gratuites.
  • Syntaxe de filtrage CLI Hookdeck : L’exemple original (hookdeck listen 4000 stripe-webhooks --path /webhooks/stripe) utilisait --path, qui sert à définir le chemin de forwarding local, pas un filtre. Remplacé par les flags de filtre actuels (--filter-body, --filter-headers, --filter-query, --filter-path) selon la référence CLI.
  • Raccourcis TUI Hookdeck : Correction du diagramme illustratif pour correspondre aux raccourcis documentés (r pour rejouer, d pour afficher, o pour ouvrir dans le dashboard, i pour réduire/étendre). Clarification que compact et quiet sont des flags de lancement, pas des toggles en session.
  • Filtrage du trafic ngrok : Atténuation de la déclaration initiale “Aucun” — ngrok dispose d’une couche Traffic Policy YAML qui peut filtrer ou réécrire au bord, bien que ce soit un langage de politique séparé plutôt qu’un filtrage basé sur le payload webhook.
  • Fan-out ngrok : Mention que les endpoints wildcard avec une action Traffic Policy forward-internal peuvent techniquement réaliser du routage multi-cible, plutôt que d’affirmer que le fan-out est impossible.
  • Descriptions des outils MCP Hookdeck : Renforcement selon les notes de version — confirmation de 11 outils, ajout que connections est le seul avec accès en écriture (pause/unpause), et que hookdeck_login apparaît automatiquement avant authentification.
  • Ajout : Une section sur la tarification pour les deux outils, car leurs structures ont changé récemment et n’étaient pas dans la version initiale.
  • Suppression : Figures non vérifiables ou marketing (ex. latence, débit) provenant uniquement d’agrégateurs tiers.

Sources

Continue from this article into the most relevant product guides and workflows.

Related Topics

#ngrok vs hookdeck cli, hookdeck cli, ngrok alternative, webhook testing tools, local webhook development, secure tunnel for webhooks, free ngrok alternative, event gateway, local tunneling tool, webhook debugging, stripe webhook testing, shopify webhook testing, microservice webhooks, local server tunnel, split webhook events, filter webhook payloads, fan out webhooks, terminal ui webhook, webhook dashboard, multi developer webhook routing, webhook routing collisions, hookdeck vs ngrok, test webhooks locally, webhook payload management, webhook security verification, webhook team collaboration, asynchronous web development, event driven applications, hookdeck console, replay webhooks locally, webhook inspection tool, permanent webhook url, stable webhook tunnel, microservices development tools, devops webhook tools, local development proxy, route webhooks to microservices, webhook event stream, inspect webhook headers, webhook retry policy, proxy webhooks to localhost, forward webhooks to local server, hookdeck listen command, infinite webhook inspection, alternative to ngrok for stripe, bypass ngrok free tier limits, webhook infrastructure for developers, debug webhooks locally, event gateway resources, webhook subscriber stream, microservice architecture testing, local api gateway testing, zero configuration webhook tunnel

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles