A cross-platform Winlink client written in Go
Go JavaScript HTML Shell CSS
Clone or download
Failed to load latest commit information.
cfg Winlink CMS hostname changed to cms.winlink.org Nov 9, 2017
debian Bump version (v0.6.1) Apr 21, 2018
internal Switch to api.winlink.org (https) Dec 8, 2017
man Include man pages in deb package Nov 14, 2017
osx Bump version (v0.6.1) Apr 21, 2018
res Implement async prompt support in Web GUI Oct 22, 2017
share Add systemd unit file for ARDOPc Jan 30, 2018
vendor Pull latest wl2k-go changes Mar 15, 2018
.appveyor.yml appveyor: Build with Go 1.10.1 Apr 21, 2018
.gitignore Don't build with system installed static libax25 Aug 11, 2017
.gitmodules Add Distance and Azimuth in rmslist Dec 14, 2017
.travis.yml CI: Build with Go 1.10 Feb 17, 2018
LICENSE Happy new year Feb 6, 2017
README.md Add Distance and Azimuth in rmslist Dec 14, 2017
VERSION.go Bump version (v0.6.1) Apr 21, 2018
bindata_assetfs.go go generate Oct 22, 2017
config.go Winlink CMS hostname changed to cms.winlink.org Nov 9, 2017
connect.go Set correct URL parameter for serial-tnc.Baudrate Apr 8, 2018
convert_image.go Resolve go vet issues Oct 12, 2016
event_log.go Add LICENSE and update copyright headers Feb 22, 2016
exchange.go Print new password scheme notice on login failure Jan 5, 2018
flags.go Switch to spf13's pflag fork Feb 17, 2016
freq.go rmslist: Fix dial frequency of ardop fm nodes Dec 13, 2017
http.go Fix broken build on Go 1.6 Mar 15, 2018
http_multipart.go Fix broken build on Go 1.6 Mar 15, 2018
http_multipart_pre110.go Fix broken build on Go 1.6 Mar 15, 2018
interactive.go Add debug interactive command Sep 30, 2017
listen.go Use logger (not stdout) for unlisten error Nov 18, 2017
listener_hub.go Rewrite listeners logic to allow automatic re-init Sep 30, 2017
main.go Add usage text for rmslist --sort-distance, -s Dec 14, 2017
make.bash Fix gitrev build argument for Go 1.10 Apr 21, 2018
prompt_hub.go Add PromptHub for async prompt in gui and terminal Oct 22, 2017
read.go More input validation on message compose Aug 8, 2017
riglist.go Omit riglist command when not built with libhamlib Mar 8, 2016
rmslist.go Fix formatting of rmslist.go (gofmt) Dec 14, 2017
schedule.go Fix time.Timer-leak in scheduler Feb 28, 2016
usage.go Improve usage text for position command Oct 12, 2016
utils.go Split input lists on semicolon Apr 19, 2017
version_report.go Add missing copyright notice Mar 8, 2016
websocket_hub.go Add PromptHub for async prompt in gui and terminal Oct 22, 2017


Build Status Windows Build Status Go Report Card


Pat is a cross platform Winlink client with basic messaging capabilities.

It is the primary sandbox/prototype application for the wl2k-go project, and provides both a command line interface and a responsive (mobile-friendly) web interface.

It is mainly developed for Linux, but are also known to run on OS X, Windows and Android.


  • Message composer/reader (basic mailbox functionality).
  • Auto-shrink image attachments.
  • Post position reports with location from local GPS, browser location or manual entry.
  • Rig control (using hamlib) for winmor PTT and QSY.
  • CRON-like syntax for execution of scheduled commands (e.g. QSY or connect).
  • Built in http-server with web interface (mobile friendly).
  • Git style command line interface.
  • Listen for P2P connections using multiple modes concurrently.
  • AX.25, telnet, WINMOR and ARDOP support.
  • Experimental gzip message compression (See "Gzip experiment" below).
martinhpedersen@duo:~$ pat interactive
> listen winmor,telnet-p2p,ax25
2015/02/03 10:33:10 Listening for incoming traffic (winmor,telnet-p2p,ax25)...
> connect winmor:///LA3F
2015/02/03 10:34:28 Connecting to winmor:LA3F...
2015/02/03 10:34:33 Connected to WINMOR:LA3F
RMS Trimode Follo.SE Oslo. Pactor & Winmor Hybrid Gateway
LA5NTA has 117 minutes remaining with LA3F
Wien CMS via LA3F >
FC EM FOYNU8AKXX59 260 221 0
F> 68
1 proposal(s) received
Accepting FOYNU8AKXX59
Receiving [//WL2K test til linux] [offset 0]
Waiting for remote node to close the connection...
> _

Gzip experiment

Gzip message compression has been added as an experimental B2F extension. The extension is implemented as a backwards compatible alternative to the ancient LZHUF compression.

This experiment is enabled by default and sessions between two Pat nodes (or other software supporting this B2F extension) will use gzip compression when transferring messages.

For more information, see https://github.com/la5nta/wl2k-go#gzip-experiment.


Copyright (c) 2014-2017 Martin Hebnes Pedersen LA5NTA

Contributors (alphabetical)

  • KD8DRX - Will Davidson
  • KE8HMG - Andrew Huebner
  • LA3QMA - Kai Günter Brandt
  • LA4TTA - Erlend Grimseid
  • LA5NTA - Martin Hebnes Pedersen
  • W6IPA - JC Martin

Thanks to

The JNOS developers for the properly maintained lzhuf implementation, as well as the original author Haruyasu Yoshizaki.

The paclink-unix team (Nicholas S. Castellano N2QZ and others) - reference implementation

Amateur Radio Safety Foundation, Inc. - The Winlink 2000 project

F6FBB Jean-Paul ROUBELAT - the FBB forwarding protocol

Pat/wl2k-go is not affiliated with The Winlink Development Team nor the Winlink 2000 project [http://winlink.org].