Summary
Syncthing already discovers devices on the local network via multicast UDP (port 21027) and exposes them at /rest/system/discovery. meshd never reads this endpoint, so users have to manually exchange device IDs even when both machines are on the same WiFi.
What Syncthing already knows
/rest/system/discovery returns every device Syncthing has seen locally, with their LAN addresses:
{
"O2GLNK3-...": {
"addresses": [
"tcp://192.168.1.153:22000",
"quic://192.168.1.153:22000",
...
]
}
}
This includes unpaired devices — Syncthing hears their multicast announcements but meshd never surfaces them.
Proposed UX
In the Connect screen, add a Nearby section above Pending:
Connect //////////////////////////////////////////////////////////////
This device
leaf-mac A7OSXBE-...
Nearby — on your local network
EN3JEAY 192.168.1.153 [a] pair
Approved
mini-host ● Online
Pending
(none)
- Poll
/rest/system/discovery and cross-reference against already-paired device IDs
- Devices with a LAN address (
192.168.x.x, 10.x.x.x, 172.16-31.x.x, fe80::) that aren't already paired show up as Nearby
- Press
a to pair — calls AcceptDevice same as accepting a pending device
- No ID exchange needed when both machines are on the same network
Why this matters
This is the same zero-config discovery LocalSend uses (mDNS/multicast, TTL-limited to the local subnet). Syncthing is already doing the hard part — meshd just needs to expose it. Pairing two machines on the same LAN should be: open meshd on both, press a, done.
Summary
Syncthing already discovers devices on the local network via multicast UDP (port 21027) and exposes them at
/rest/system/discovery. meshd never reads this endpoint, so users have to manually exchange device IDs even when both machines are on the same WiFi.What Syncthing already knows
/rest/system/discoveryreturns every device Syncthing has seen locally, with their LAN addresses:{ "O2GLNK3-...": { "addresses": [ "tcp://192.168.1.153:22000", "quic://192.168.1.153:22000", ... ] } }This includes unpaired devices — Syncthing hears their multicast announcements but meshd never surfaces them.
Proposed UX
In the Connect screen, add a Nearby section above Pending:
/rest/system/discoveryand cross-reference against already-paired device IDs192.168.x.x,10.x.x.x,172.16-31.x.x,fe80::) that aren't already paired show up as Nearbyato pair — callsAcceptDevicesame as accepting a pending deviceWhy this matters
This is the same zero-config discovery LocalSend uses (mDNS/multicast, TTL-limited to the local subnet). Syncthing is already doing the hard part — meshd just needs to expose it. Pairing two machines on the same LAN should be: open meshd on both, press
a, done.