A tunneling client to Newt sites https://docs.fossorial.io
  • Go 98.6%
  • Dockerfile 0.8%
  • Makefile 0.5%
  • Shell 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-26 17:30:34 -04:00
.github Merge pull request #161 from fosrl/dependabot/github_actions/docker/login-action-4.6.0 2026-10-26 17:25:11 -04:00
api Tie DisableRoutesAndAliases to exit nodes being in or not 2026-09-28 15:08:23 -04:00
device Improve nat performance 2026-08-13 12:18:51 -04:00
dns Handle upstream dns ipv6 properly 2026-09-30 09:05:57 -04:00
olm Separate the agent from the olm version 2026-10-22 15:09:05 -04:00
peers Move the peer to the local winner after a local fallback 2026-10-07 01:53:31 +02:00
subnetrouter Basic subnet router and dns server config added 2026-09-15 11:14:04 -04:00
websocket Exclude the websocket routes 2026-10-01 12:27:24 -04:00
.dockerignore Fix docker ignore 2025-12-08 14:05:48 -05:00
.gitignore Package? 2025-11-01 18:34:00 -07:00
.go-version Update to go 1.26 2026-09-29 14:52:45 -04:00
API.md Merge branch 'main' into dev 2026-01-23 10:22:21 -08:00
config.go Tie DisableRoutesAndAliases to exit nodes being in or not 2026-09-28 15:08:23 -04:00
CONTRIBUTING.md Update domains 2025-10-19 15:12:37 -07:00
create_test_creds.py Create test creds python script 2025-11-25 21:05:41 -05:00
dns_commands.go Add dns watchdog and override fixer 2026-06-09 21:17:13 -07:00
docker-compose.yml added docker version of olm 2025-08-31 07:22:32 +00:00
Dockerfile Update go to 1.26 2026-09-29 15:43:58 -04:00
entrypoint.sh Rename to olm 2025-02-21 12:31:25 -05:00
get-olm.sh Update get olm script to work with sudo 2025-09-28 11:41:07 -07:00
go.mod Bump the patch-updates group across 1 directory with 2 updates 2026-10-26 21:26:35 +00:00
go.sum Bump the patch-updates group across 1 directory with 2 updates 2026-10-26 21:26:35 +00:00
LICENSE Add license 2025-01-04 21:22:32 -05:00
main.go Separate the agent from the olm version 2026-10-22 15:09:05 -04:00
Makefile Update cicd 2026-03-16 17:52:40 -07:00
namespace.sh Add namespace test script 2025-11-18 10:34:49 -05:00
olm.iss Update iss 2026-02-25 14:57:56 -08:00
README.md Move phase out to note 2026-09-15 11:14:05 -04:00
SECURITY.md Update domains 2025-10-19 15:12:37 -07:00
service_unix.go Add update checks, log rotation, and message timeouts (#42) 2025-10-08 17:48:50 -07:00
service_windows.go Adapt args to work on windows 2025-12-07 17:44:10 -05: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.