beam: your localhost, on the internet. CATCH WEBHOOKS curl -i -X POST https://beam.stoff.dev Creates a URL that records every request sent to it and replies ok. The response has the URL, an X-Beam-Key header for reading what arrived and an X-Beam-Watch link that shows requests live in a browser. Anyone can make one, and it lasts 7 days after its last request. curl https://.stoffberg.dev/stripe -d '{"paid":true}' Any method, path, header and body is recorded. Bodies are kept up to 1 MB each, and the latest 100 requests are kept. curl -H 'Authorization: Bearer ' https://beam.stoff.dev/ Returns JSON with the URL, whether it is forwarding, when it expires and the latest requests. Add /requests/ for one request with its headers and body. SHARE A LOCAL PORT brew install stoffbergie/tap/beam The beam CLI for macOS and Linux. Catching works for anyone; forwarding needs the owner token, set once with beam config --token. beam 3000 Gives localhost:3000 a public https URL on stoffberg.dev. WebSockets pass through, so hot reload works. Every request is recorded too, and beam reconnects on its own if the network drops. beam 3000 -- npm run dev Starts the command, waits for the port to open, then shares it. Stopping beam stops the app. MORE beam Creates a catching URL and prints each request as it arrives. beam 3000 --name app Uses a fixed URL like app.stoffberg.dev and keeps it every time you start beam with that name. beam replay --to 3000 Sends the latest recorded request again, or the request ids you list, to a local port or URL. Useful for webhooks that arrived while your server was down. beam watch Prints requests to a beam created earlier as they arrive. curl -X DELETE -H 'Authorization: Bearer ' https://beam.stoff.dev/ Removes the URL and everything it recorded straight away. Beams last 7 days after their last request or connection. Each keeps its latest 100 requests with bodies up to 1 MB. Errors are plain text: 401 missing key, 403 owner only, 404 unknown beam, 429 too many requests. A forwarded request waits up to 100 seconds for your server.