id = "hookdeck"
name = "Hookdeck CLI"
homepage = "https://hookdeck.com/"
description = "CLI for Hookdeck: forward webhooks to localhost, manage and query Event Gateway resources."
executables = ["hookdeck"]
[dotfiles]
paths = ["[configHome]/hookdeck/config.toml"]
exclude = []
secret = []
side_effect = false
[[dotfiles.secret_paths]]
file = "[configHome]/hookdeck/config.toml"
match = { key_path = ["api_key", "*.api_key"] }
[commands]
format = 1
label = "Hookdeck"
description = "Forward webhooks to a local server with hookdeck listen. Login and Event Gateway resource management are outside this form."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.subcommand]]
path = ["listen"]
label = "Forward webhooks to localhost"
description = "Start a session that forwards events to a local port or URL."
[[commands.subcommand.source]]
id = "readme"
kind = "help"
url = "https://github.com/hookdeck/hookdeck-cli/blob/main/README.md"
evidence = """
hookdeck listen <port-or-URL> <source-alias?> <connection-query?> [flags]
--path string Sets the path to which events are forwarded (e.g., /webhooks or /api/stripe)
--output string Output mode: interactive (full UI), compact (simple logs), quiet (only fatal errors) (default "interactive")
--max-connections int Maximum concurrent connections to local endpoint (default: 50, increase for high-volume testing)
--filter-body string Filter events by request body using Hookdeck filter syntax (JSON)
--filter-headers string Filter events by request headers using Hookdeck filter syntax (JSON)
--filter-query string Filter events by query parameters using Hookdeck filter syntax (JSON)
--filter-path string Filter events by request path using Hookdeck filter syntax (JSON)
"""
[[commands.subcommand.field]]
id = "target"
label = "Port or URL"
type = "string"
position = 0
sources = ["readme"]
[[commands.subcommand.field]]
id = "source"
label = "Source alias"
type = "string"
position = 1
sources = ["readme"]
[[commands.subcommand.field]]
id = "connection"
label = "Connection query"
type = "string"
position = 2
sources = ["readme"]
[[commands.subcommand.field]]
id = "path"
label = "Forward path"
type = "string"
option = ["--path"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "output"
label = "Output mode"
type = "enum"
option = ["--output"]
choices = [{ value = "interactive", label = "Interactive" }, { value = "compact", label = "Compact" }, { value = "quiet", label = "Quiet" }]
sources = ["readme"]
[[commands.subcommand.field]]
id = "max_connections"
label = "Max connections"
type = "integer"
option = ["--max-connections"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "filter_body"
label = "Body filter (JSON)"
type = "string"
option = ["--filter-body"]
sources = ["readme"]
[[commands.subcommand.field]]
id = "filter_headers"
label = "Headers filter (JSON)"
type = "string"
option = ["--filter-headers"]
sources = ["readme"]
[[commands.subcommand.task]]
id = "listen"
label = "Forward a source to localhost"
fields = ["target", "source", "path"]
required = ["target"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["target", "source", "connection", "path", "output"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["max_connections", "filter_body", "filter_headers"]