New
Apps 1,497Makers 1,495This week 1,497
Promote your app−30%
0views in
the last 30 days

Light Beam

Self-hosted messenger and hub for your own devices: text and files of any size, phone...

Built with Claude Code

by jamesccupps · Unclaimed · from USUnited States · added Oct 29, 2026
no ratings0 comments

Beam is a private messenger and hub for your own devices, running on your own computer. Send text, links, photos and files of any size from any device to any other, or to all of them at once. See your phone's notifications on your PCs and reply to them, ring a lost phone, wake a sleeping PC, or control a PC's screen from another device. Beam Family adds your family's own chat, in the spirit of Discord, on the same machine.

There are no accounts and no third-party cloud. Your devices reach your Beam privately through Tailscale, at home or away, without opening any ports.

Device How it runs Beam
Anything with a browser (iPhone, Android, Mac, Linux, Chromebook, Windows) The web app, which installs to the home screen like an app
Windows Optional tray app Beam.exe: one self-updating file; its chat window is the same web app (WebView2)
Android Optional native app beam.apk (share sheet, phone notifications on your PCs, ringing, remote control)
Scripts / terminal The beam command-line tool, or plain HTTP (docs/API.md)

The browser is all you need to start: the native apps add system integration, and you build them yourself (see Building the apps).

Status: a personal project, now open source. It is developed and used every day on Windows 11 PCs, an Android phone and a Raspberry Pi (Beam for Linux). The server is plain Node.js and its tests run on Linux (Ubuntu) as well as Windows; macOS should work but hasn't been tested yet, and neither have the systemd unit and the Docker files. Reports and fixes are welcome (see CONTRIBUTING.md).

Quick start (browser only)

You need a computer that stays on, with:

  • Node.js 22.13 or later (Beam itself runs on 20.12+; Beam Family needs 22.13+ for its built-in SQLite);
  • Tailscale, installed and signed in (the free plan is plenty).
git clone https://github.com/jamesccupps/Light-Beam.git
cd Light-Beam
npm install
node server.js

In a second terminal, share it over Tailscale (HTTPS, reachable only by your own devices):

tailscale serve --bg http://127.0.0.1:8765

Then, on any device signed in to the same Tailscale account, open https://<your-computer>.<your-tailnet>.ts.net (tailscale serve status shows the exact address). The first Tailscale account to sign in becomes Beam's owner, and your devices sign in by themselves from then on. Install it as an app: Chrome menu → Install app, or on an iPhone Safari's Share → Add to Home Screen.

Without Tailscale, node server.js pair prints a one-time link and QR code for a device on your home network (plain HTTP: see Security).

To keep it running in the background:

  • Windows: windows\build.cmd, then powershell -ExecutionPolicy Bypass -File scripts\install-windows.ps1 -Server. That runs the server hidden (restarting it if it crashes, and again at every sign-in), shares it over Tailscale, and installs the Windows app, already paired. Run it again any time; -Uninstall removes everything except your items.
  • Linux: a systemd unit is in deploy/beam.service (not tested yet).
  • A NAS or a server: see Docker and NAS.

Adding your other devices

Every device needs the Tailscale app, signed in to the same account. Then:

  • Any browser: open https://<your-computer>.<your-tailnet>.ts.net.
  • Android: once you've built the app, get beam.apk from Add device → Get the app on a signed-in device and install it. Chrome will ask you to allow installing apps from it.
  • Windows: download Beam.exe the same way and run it from anywhere. It finds your Beam over Tailscale by itself, and can start with Windows (its Settings).

Signing in

  1. Automatically. Your own devices sign in by themselves:
    • Any device signed in to your Tailscale account (Tailscale tells Beam who is visiting, when it goes through the Beam address). Beam trusts your account from your first sign-in. Another account (a relative's laptop you signed in on with the password, say) isn't trusted just because Beam saw it: it shows under Settings → Security with an Allow button, and trusted accounts can be removed there.
    • A browser on a device that's already running the Beam app.
  2. With your phone. A new browser or app shows a QR code and a short code. Scan it with a signed-in phone (camera or the Beam app) and tap Approve. Signed-in devices also pop up an Approve / Deny prompt by themselves. You can also type the code under Add device → Approve a sign-in, or beam approve <code>. Always check that the code matches before approving.
  3. Password. Set one in Settings → Security → Sign-in password, then type it on any sign-in screen. On a computer that isn't yours, sign in for this session only: it ends when the browser closes, or after 12 hours unused.
  4. Pairing link. Shown under Add device (or node server.js pair). It works once, within 15 minutes.

Every device gets its own sign-in:

  • Removing a device (or Sign out all other devices in Settings) signs it out for good, and stops it from signing back in automatically through Tailscale.
  • A lost device that is still in your Tailscale account can't get back in by itself, but for full safety also remove it from Tailscale.

Browsers and apps on the same device are linked automatically. The server recognises the machine by its Tailscale address, so the browser becomes part of that device instead of a separate entry.

Using Beam

Everywhere (the browser, and the Windows app, which shows the same chat)

  • Conversations: the list on the left has All devices plus each device, with online dots, previews and unread counts. Reading something on one device clears it on your others too.
  • Sending:
    • Type and send, or paste with Ctrl+V.
    • Drop files and folders anywhere: onto a conversation, or straight onto a device in the list. Folders go as a .zip.
  • Messages:
    • Select and copy any part of any message.
    • Right-click, long-press or use the ⋯ button for Copy, Copy link, Select text, Forward, Pin, Save / Open / Show in folder, a QR code of a link, and Delete (with Undo).
  • Finding things: Ctrl+F or the search button searches everything, even offline. Ctrl+K jumps to a conversation, and Ctrl+/ lists every shortcut.
  • Photos and files:
    • Photos show as thumbnails; click one for a full-screen viewer with zoom and swipe.
    • Text files can be previewed.
    • A gallery for each conversation (Beam 1.12): the picture button in the header shows its photos and videos as a grid, newest first, and its other files as a list. Click one to view, play or save it.
  • Several at once (Beam 1.12):
    • Select in a message's menu (or Ctrl+click, and Shift+click for a range) picks several messages, photos or files, in the chat or in the gallery.
    • Then Copy, Save (Download in a browser), Forward or Delete them together. Ctrl+A picks them all and Esc stops.
    • In the Windows app, Copy puts the files on the clipboard as files, so you can paste them into any program, and dragging one of them out drags them all.
  • Reply, react, edit (Beam 1.14):
    • Reply in a message's menu quotes it above your answer; click the quote to go to the message it answers.
    • A row of quick reactions sits on top of a message's menu (👍 ❤️ 😂 😮 😢 🙏). Reactions show under the message with how many; each device has its own, and a click takes yours back.
    • Edit changes a text's words; it then says "edited". Other devices see replies, reactions and edits at once.
  • Pin keeps an item past the clean-up. Forward sends an item to another device without uploading it again.
  • Delivery:
    • Every item shows Sent, then Delivered.
    • Big files upload in resumable chunks, pausing and carrying on through dropped connections, sleep and restarts.
    • Receivers see incoming files arriving, and can save them while they're still coming in.
  • Offline: your history stays readable. Anything you send waits in an outbox and goes out by itself when you're back online. Each conversation keeps its own draft.
  • Settings:
    • This device.
    • All your devices, where you can sign one out.
    • Security: password, Tailscale sign-in, blocked machines, and "sign out all other devices".
    • The server: address, version, storage, how long items are kept, the server log, and moving Beam.

Your devices

  • At a glance: each conversation's header shows that device's battery, free storage, Beam version and system. Device info in the conversation menu and Settings → Devices show the rest.
  • Ring a device to find it. Your phone rings loudly for up to a minute, even on silent, until you tap Stop. A PC plays an alarm and shows a Stop window. Needs the Beam app on that device.
  • Wake a sleeping PC (Wake-on-LAN). The button appears when a PC is offline. It only works if:
    • the Beam server, or a computer running Beam for Linux 1.3 or later (a Raspberry Pi), is on the same network as that PC: the server asks every connected Beam for Linux to send the wake-up too, so a Pi at the office wakes the office's PCs while Beam runs at home;
    • Wake-on-LAN is switched on for the PC's network adapter (and in its BIOS/UEFI; wired Ethernet is the most reliable).
  • Remote Desktop into another of your Windows PCs that allows it (Windows Pro, with Remote Desktop turned on in Settings → System → Remote Desktop):
    • From the Windows app it opens directly.
    • From a browser it downloads a small .rdp file that opens Remote Desktop.
    • On the phone it needs Microsoft's Remote Desktop app ("Windows App").
    • Sign in with that PC's Windows account: its email address (or user name) and password. A PIN or Windows Hello doesn't work over Remote Desktop (choosing it ends in "A certification authority could not be contacted"): pick More choices → Use a different account.
  • Alerts (Settings → Alerts): a device's battery is low, its storage is nearly full, the Beam server's disk is nearly full, or a Tailscale sign-in is about to run out (two weeks and three days before; the server's own matters most: when it runs out, no device can reach Beam). For the devices you pick (Settings → Alerts, or a device’s Device info), also when one goes offline (with why, when Tailscale can tell: the PC is on but Beam isn't running, or it's off or asleep) and comes back. Also when a PC is back on after losing power, freezing, a blue screen or being forced off.
  • History (in Device info): what happened to a device, newest first, from Windows' own records: each restart and shutdown and who asked (a Windows update, your antivirus, you, a program), power losses and freezes, blue screens (with the stop code), being forced off, when it was back on and when someone signed in after, Beam's own crashes, and the times Beam saw the device offline for 10 minutes or more. A PC sends it when its Beam app connects; the server's own PC reads its own when the server starts (BEAM_OWN_HISTORY=off turns that off).
  • Beam log (in a PC's Device info): the end of that PC's Beam log, sent by its Beam app when you ask, from any of your devices. Nothing is kept on the server, and Beam never writes message text, keys or sign-ins into its log.
  • Shared folders (Beam 1.26, the Windows app 1.18): copy files from another of your PCs without remoting in. At the PC, Settings → Control & sharing → Shared folders… chooses the folders, and for each one the devices that may see it (nothing until you add a folder; only there, never from another device, and not while the PC is being controlled). Then on those devices, that PC's Device info → Shared folders: look in its folders, tick files and Copy to this device. The PC sends them the way it sends anything (they arrive in your conversation with it) and shows a notice. Read-only: nothing on the PC can be changed or deleted from elsewhere, and nothing else is visible: no hidden files, nothing starting with ".", no shortcuts or links to other folders. A whole drive, your user folder itself, AppData, Windows and Program Files can't be shared. It takes a trusted sign-in.
  • Appearance (Beam 1.27, the Windows app 1.19, Beam Family): Settings → Appearance: light, dark or like the device, and an accent colour (nine to pick from, or any colour of your own). For all your devices, or just this one (its own wins). In the Windows app its own windows, title bar and tray icon follow too, also on a PC whose Beam window stays closed. The Android app (1.14) follows it too and has its own Settings → Appearance; a colour of your own shows there as the nearest of the nine. Beam Family: the family's look (admins set it) or your own, on every device you use it on.
  • Setup check (Settings → Server → Setup): Beam looks at its own setup every 6 hours and alerts when something is wrong: the servers start when Windows does, Tailscale runs unattended, devices come in over https, backups are recent, there's room on the disk, every PC runs the latest Beam and starts it with Windows, no Tailscale sign-in runs out soon. Each line says what to do when it's wrong (BEAM_SETUP_CHECK=off turns the automatic look off).
  • Connections (Settings → Connections): how the Beam server reaches each device over Tailscale: direct on the same network, direct over the internet, through a peer relay, or through Tailscale's relay (slower), with Test to check it now and the delay. It also shows when each Tailscale sign-in runs out: turn off key expiry in Tailscale's admin console for PCs that stay put. A device that's offline says why on its line and in Device info. Test speed measures how fast Beam's own way is, both ways, about 3 seconds each (64 MB at most each): this device's in its own page, and a PC's when its Beam app is asked from another device.

Speed and battery

  • Quiet in the background: while Beam isn't on screen, your phone and PCs get what matters at once: messages for them, the start of an incoming file, rings, alerts and sign-in requests. Everything else (who's online, delivery ticks, battery levels) waits for one small check-in every 3 minutes. On a phone that's about 20 wake-ups an hour instead of about 170. Opening Beam catches up instantly.
  • Opens at once: your saved history shows straight away, and after a reconnect only what changed is fetched. The web app and the Windows chat window are cached, so reopening takes one small request.
  • Sending: a message appears the moment you send it, with a small clock until the server has it.
  • Big files:
    • Uploads go in bigger pieces, so connections to another site stay busy, and they survive a power cut on the server.
    • The Windows app saves big incoming files (32 MB or more) while they're still arriving, so they're ready the moment the sender finishes. On the phone tap the "Arriving…" file; in the browser use Save on it.
  • Long conversations open with the newest 60 messages; older ones load as you scroll up.

Phone notifications on your PCs (Android app)

  • What it does: notifications from the phone apps you pick show up on your PCs. You can reply to them (texts, WhatsApp, Signal… anything with a reply box), press their buttons, or dismiss them; dismissing clears them on the phone too.
  • On the phone: Settings → Notifications on your PCs.
    • Switch it on and allow Android's "notification access" once.
    • Pick the apps to share. None are shared until you pick them, and apps that notify you most are listed first.
    • Choose which PCs show them under Show on.
    • The Quick Settings tile PC notifications switches sharing on and off with one tap.
    • Replies need Stay connected on.
  • On each PC: the tray menu's Show phone notifications checkbox, also in Settings → Notifications.
    • A pop-up appears for each new notification, grouped per app ("3 new from WhatsApp").
    • Clicking one opens the Phone panel in the chat window, ready to reply.
    • Show message text in pop-ups (Settings → Notifications) can be turned off: pop-ups then just say "WhatsApp · new notification", and the text stays inside Beam.
  • In a browser: Settings → Notifications (off by default). The Phone entry sits under All devices.
  • Privacy:
    • Beam never saves notification text on the server, the PCs or the phone. It's kept in memory only, and only sent to the PCs you chose.
    • Windows itself keeps the pop-ups you were shown in its Notification Center until you clear them.
    • Android 15 and later hide one-time codes from apps like Beam.
    • Work-profile apps are never shared.
    • Buttons that would open an app on the phone can't be pressed from a PC; Beam says "Open it on the phone".

Remote control (a Windows PC's screen, from another PC, a browser or the phone)

  • See and control a PC's own screen from another PC (Control opens a viewer window), a browser, or the phone. Nobody is signed out, and it works on Windows Home too. The video goes directly between your devices over Tailscale.
  • On a phone or tablet (modelled on Chrome Remote Desktop and Microsoft's Remote Desktop app), choose Trackpad or Touch on the bar; the first time, Beam shows how each works (later: ⋯ → How to control).
    • Both: tap = click; touch and hold until the ring fills, then let go = right-click, or move = drag/select; two-finger tap = right-click; three-finger tap = middle-click; pinch = zoom the picture (only on the phone); swipe up with three fingers = keyboard.
    • Trackpad: one finger moves the pointer like a laptop's touchpad (slow is precise, a flick goes far), two fingers scroll; zoomed in, the picture follows the pointer.
    • Touch: tap right on things (tap twice to double-click), one finger scrolls, two fingers move and zoom the picture.
    • Scrolling carries on after a flick. The zoom stays when the keyboard opens or the phone turns. The key strip (Esc, Tab, Ctrl, Alt, Shift, Win, arrows, Del) shows upright, and sideways while the keyboard is up. Back asks before it disconnects.
  • Off on every PC until you switch it on at that PC: Settings → Security → Allow remote control in its Beam window (Windows app 1.19.1), or the tray menu. You tick which of your devices may control it. Only tick devices you trust: Beam in another Windows account on the same PC counts as a different device. A device added to Beam later needs ticking on that PC (tray → Remote control devices…).
  • While someone is connected the PC shows a red bar, "device (machine · address) is controlling this PC · Stop". After 5 seconds it shrinks to a small "Beam · Stop" pill that grows back when the mouse rests on it. Drag it anywhere on the screen (it starts there next time); double-click it to put it back at the top.
  • Signed in through Remote Desktop? Beam can't control a Remote Desktop session (it isn't on the PC's own screen, so the PC shows as locked). Right-click Beam's tray icon there → Back to this PC's screen: Windows asks for administrator rights, Remote Desktop closes, and Beam's Control works. The PC's own monitor then shows your desktop, unlocked. Ctrl+Alt+Shift+F12 on the PC ends every session at once. You can also end a session, or turn remote control off for a PC, from a

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#messenger · #self-hosted · #files