
Share a BLE device
over the network.
No physical proximity required. One device holds the real Bluetooth connection to a peripheral; another reads, writes and subscribes to it remotely, through a relay server you control.
The host device holds the real Bluetooth Low Energy connection to a peripheral. The client device connects to it remotely through relayd, and can read, write and subscribe to that peripheral exactly as if it were connected locally. relayd itself never parses BLE data — it just moves frames between the two ends.
Useful for testing a BLE peripheral from another room, letting a teammate interact with your device remotely, or bridging a BLE-only device onto a network for more than one client. On Android and Linux, a client can go one step further and re-advertise the connection as its own local BLE peripheral — ordinary BLE devices nearby can then connect to it directly, no app needed on that end.
What you get
Host or client
Either role from the same app — hold the real BLE connection, or reach one remotely.
QR-code pairing
Scan a code to join a session instantly, or type the username/password manually.
Optional TLS
Run the relay over wss:// for an encrypted connection end to end.
Stays connected
A foreground notification keeps the relay alive while hosting, even with the screen off.
Self-hosted relay
Point the app at your own relayd instance — you control where your data goes.
Open wire protocol
The relay protocol is documented well enough to reimplement a client in any language.
Bridges back out
On Android and Linux, a client can re-expose the relay as a real local BLE peripheral — any nearby BLE device can find and connect to it directly, no app required.
Two parts, one system
The app and the relay server live in separate repositories and can be built and deployed independently.
BLE Relay
The client-facing app. Runs as a host — holding the real Bluetooth Low Energy connection to a peripheral — or as a client, reading, writing and subscribing to that peripheral over the network as if it were connected locally.
relayd
→The WebSocket relay server that backs the app. It pairs one host with N clients and routes GATT frames between them — it has no idea what a peripheral is, that stays entirely in the apps on both ends.
Use our test relay
- Host
- blerelay.overkill.cc
- Port
- 443
- TLS
- on
Testing only. This is a shared instance for trying the app out — it can be restarted, rate-limited, or wiped without notice, and comes with no uptime guarantee. Don't depend on it for anything real; self-host relayd instead →
Self-host the relay
./relayd -addr :8443 \ -tls-cert /path/cert.pem \ -tls-key /path/key.pem
Prebuilt binaries for Linux, macOS and Windows ship with every release, plus a systemd deploy script. This is what we run ourselves.