FAQ
What beam is not (yet), and why.
beam is deliberately tiny. Most "missing" features are deliberate scope cuts,
not oversights. Here's what it doesn't do in v1, and the reasoning.
Does beam relay my local server's response?
No — v1 is fire-and-forget. The sender always gets a 202 Accepted
immediately, and the response from your local app isn't sent back. Most
providers only care that they got a 2xx, and not blocking the edge on
localhost keeps things fast and simple. Round-tripping the real response is
the obvious next step.
Does it store a history I can re-fire?
No. --tail shows live traffic but doesn't persist a log. To
re-fire a payload, save it yourself and replay it with
beam webhook send:
beam webhook listen myhook --tail --body-only > last.json
beam webhook send myhook -d @last.jsonHow big can a payload be?
The WebSocket frame cap is ~1 MiB, so that bounds a single delivery. Bodies are base64-enveloped, which adds ~33% overhead. Webhooks are almost always small JSON, so this is rarely a limit in practice — but beam doesn't stream large bodies.
What if two CLIs listen on the same name?
They both receive a copy — it's fan-out by design, not an error. There's no arbitration or leader election. If you want exclusive delivery, use distinct names.
Do I need a Cloudflare account?
Only to deploy your own edge. To use an already-deployed beam, you just need the CLI, a server URL, and a token. The free Cloudflare plan covers Workers + Durable Objects if you do deploy.
Is the delivery side authenticated?
By default, no — external providers can't present your token, so the
unguessable name is the capability. You can lock it with a
per-webhook --key, or verify the provider's
signature in your local app (all headers are forwarded). See the
Security model.
Is there any telemetry or third-party service?
No. It's your Cloudflare account, your domain, your token. No tunnel vendor sits in the middle and nothing phones home.
How is this different from ngrok / Smee.io?
Same job — a public URL pointed at localhost — but beam runs on infrastructure
you own and control, in ~250 lines. No vendor subdomain, no account but your
Cloudflare one, no rate limits but the platform's. The trade-off is you deploy
the edge once yourself.