madjinn a3dc1977a8 Move the peer to the local winner after a local fallback
When the active local endpoint fails, rapidTestOnLocalFallback races the
public endpoint against the remaining local candidates. If a local
candidate wins, RapidTestLocalEndpoints records it as the active local
endpoint but leaves the WireGuard peer alone. The caller is meant to move
the peer, but only did so when no local endpoint was active, which is
never the case once the winner has been recorded.

The peer therefore stayed on the public endpoint while the monitor
treated the site as local: checkLocalEndpoints kept seeing the winner
answer and checkHolepunchEndpoints skipped the site, so nothing moved the
peer or requested relay. A client that can't reach the site's public
endpoint (e.g. one on the site's LAN behind a router without NAT
hairpinning) lost the site until it was restarted.

Move the peer when the winner is still the active local endpoint.

Introduced in 3d88b32 ("Rapid test again when we fail local").
2026-10-07 01:53:31 +02:00
2026-08-13 12:18:51 -04:00
2026-09-30 09:05:57 -04:00
2026-10-01 14:28:09 -04:00
2026-10-01 12:27:24 -04:00
2025-12-08 14:05:48 -05:00
2025-11-01 18:34:00 -07:00
2026-09-29 14:52:45 -04:00
2026-01-23 10:22:21 -08:00
2025-10-19 15:12:37 -07:00
2025-08-31 07:22:32 +00:00
2026-09-29 15:43:58 -04:00
2025-02-21 12:31:25 -05:00
2026-10-01 16:07:00 -04:00
2026-10-01 16:07:00 -04:00
2025-01-04 21:22:32 -05:00
2026-03-16 17:52:40 -07:00
2025-11-18 10:34:49 -05:00
2026-02-25 14:57:56 -08:00
2026-09-15 11:14:05 -04:00
2025-10-19 15:12:37 -07:00

Olm

Note

Olm is being phased out in favor of the Pangolin CLI and is only meant for advanced use cases.

Olm is the cross-platform internal networking library built into every Pangolin client. It does the heavy-lifting of connecting the client to Pangolin sites.

Don't use Olm as a standalone machine client. Instead, use the Pangolin CLI.

Installation and Documentation

Olm is used with Pangolin and Newt as part of the larger system. See documentation below:

Key Functions

Registers with Pangolin

Using the Olm ID and a secret, the olm will make HTTP requests to Pangolin to receive a session token. Using that token, it will connect to a websocket and maintain that connection. Control messages will be sent over the websocket.

Receives WireGuard Control Messages

When Olm receives WireGuard control messages, it will use the information encoded (endpoint, public key) to bring up a WireGuard tunnel on your computer to a remote Newt. It will ping over the tunnel to ensure the peer is brought up.

Hole Punching

In the default mode, Olm uses both relaying through Gerbil and NAT hole punching to connect to Newt. Hole punching attempts to orchestrate a NAT traversal between the two sites so that traffic flows directly, which can save data costs and improve speed. If hole punching fails, traffic will fall back to relaying through Gerbil.

Build

Binary

Make sure to have Go 1.25 installed.

make

Licensing

Olm is dual licensed under the AGPLv3 and the Fossorial Commercial license. For inquiries about commercial licensing, please contact us.

Contributions

Please see CONTRIBUTIONS in the repository for guidelines and best practices.

S
Description
A tunneling client to Newt sites
Readme AGPL-3.0
43 MiB
Languages
Go 96.9%
Shell 1.7%
Inno Setup 0.8%
Makefile 0.3%
Python 0.2%
Other 0.1%