
Research
Node.js Fixes AsyncLocalStorage Crash Bug That Could Take Down Production Servers
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.
github-webhook
Advanced tools
A stand-alone GitHub Webhook end-point server.
github-webhook \
--port=9999 \
--path=/webhook \
--secret=mygithubsecret \
--log=/var/log/webhook.log \
--rule='push:ref == refs/heads/master && repository.name == myrepo:echo "yay!"'
You can also specify a --config <file> where file is a JSON file containing the same properties as are available as commandline options. The commandline will always override properties in the config file though.
{
"port": 9999,
"path": "/webhook",
"secret": "mygithubsecret",
"log": "/var/log/webhook.log",
"rules": [{
"event": "push",
"match": "ref == \"refs/heads/master\" && repository.name == \"myrepo\"",
"exec": "echo yay!"
}]
}
PORT env var), should match what you tell GitHublisten() to a specific hostDEBUG env var to see debug output (see debug). Note that the special strings 'stdout' and 'stderr' will redirect log output to standard out and standard error respectively rather than files with those names.--rule commandline arguments where the 3 properties are separated by : (details below)When reacting to valid GitHub Webhook payloads, you can specify any number of rules that will be matched and execute commands in a forked shell. Rules have three components:
"event": the event type to match, see the GitHub Webhooks documentation for more details on the events you can receive"match": a basic object matching rule that will be applied against the payload received from GitHub. Should be flexible enough to match very specific parts of the PayLoad. See matchme for how this works."exec": a system command to execute if this rule is matched, should obviously be something related to the event, perhaps a deploy on "push" events? Note: if you provide a string it will be run with sh -c "<string>" (unlikely to be Windows-friendly), however if you provide an array of strings then the first element will be executed with the remaining elements as its arguments.You can either specify these rules in an array on the "rules" property in the config file, or as separate --rule commandline arguments where the components are separated by :, e.g.: --rule event:match:exec (you will generally want to quote the rule to prevent shell trickery).
You can var server = require('github-webhook')(options) and you'll receive a http.Server object that has been prepared but not started.
github-webhook is powered by github-webhook-handler, see that for more details.
github-webhook is Copyright (c) 2015 Rod Vagg and licensed under the MIT License. All rights not explicitly granted in the MIT License are reserved. See the included LICENSE.md file for more details.
FAQs
A flexible web server for reacting GitHub Webhooks
The npm package github-webhook receives a total of 5 weekly downloads. As such, github-webhook popularity was classified as not popular.
We found that github-webhook demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.