Beam ⚡️
Global default
Ephemeral, terminal-first file sharing. Send assets directly from your command line to any browser without dashboard bloat.
$ brew tap lopezlean/beam && brew install beam_ Global default
Share from your shell with one command. Beam stays out of the way and fits naturally into development workflows.
$ beam send ./dist.zip --ttl 5m The receiver only needs a browser. No Beam install, no dashboard, and no account creation on the other end.
Every session expires automatically. Keep links alive for minutes or hours, then let them disappear without cleanup.
Use --once to destroy the session immediately after the first successful download.
Send whole folders as ZIP streams on the fly without writing temporary archives back to disk.
Regular files support HTTP Range so interrupted transfers can resume cleanly.
Global mode defaults to provider auto, trying cloudflared first, then Pinggy over SSH, and finally the native relay when it is configured or already reachable.
Local mode shares a single session over HTTP and HTTPS, keeping HTTP as the primary friction-free LAN path.
Beam is written in Rust for speed and safety. Install it with Homebrew or build it directly from source.
macOS / Linux (Homebrew)
brew tap lopezlean/beam
brew install beam The Homebrew formula also installs cloudflared, while provider auto can still fall back to Pinggy over your system ssh with no account setup.
Rust source build
cargo build --release
./target/release/beam version Use this path when hacking on Beam itself or when you want full control over the runtime.
beam send video.mp4 Share a file through the default public HTTPS path.
beam send design.fig -t 15m Keep the session alive for exactly fifteen minutes.
beam send secrets.env --once --pin One download, then the session is gone.
beam send ./project-assets Stream a directory as a ZIP archive without temp clutter.
The primary command. Share local files or folders over a short-lived public link or over your LAN.
FLAGS
beam send report.pdf --ttl 30m --once Sends report.pdf, expires in 30 minutes, and destroys the session after the first successful download.
Use local mode when you want LAN-only sharing. Beam keeps HTTP primary for the smoothest browser flow and also exposes HTTPS as a secondary link.
FLAGS
beam send photo.jpg --local --port 8080 Serves HTTP on 8080 and searches for the nearest available HTTPS port starting at 8081.
Override the global provider when you want to force Pinggy, Serveo, or a self-hosted native relay.
FLAGS
beam send build.zip --provider pinggy Useful when Cloudflare is unavailable and you want the SSH-based fallback explicitly.
Global mode is the default and is the best path for phones and remote devices. Local mode keeps sharing on your LAN and serves the same session over HTTP and HTTPS.
Beam keeps the session in the sender process and does not create permanent hosted uploads as part of the Beam app. The reference native relay forwards traffic and does not persist payloads to disk.
Yes for regular files through HTTP Range. Folder ZIP streams are chunked and do not currently support resume.
No. Beam embeds the native relay client, but a hosted public relay is not bundled in this release. This repo ships beam-relay for local relay development and self-hosting.
Beam can fall back to Pinggy over SSH without an account. On the free path, Pinggy gives you random public HTTPS domains and may cap the tunnel lifetime at 60 minutes.
Yes. Beam also supports Serveo through --provider serveo. It is an explicit provider, not part of auto, and anonymous browser visits may see an interstitial warning page before download.
Beam is open source and release-driven. Start with Homebrew, inspect the changelog, and ship short-lived links without cloud clutter.