Skip to content
This program will connect desktop clients to Meraki firewalls
Python Shell NSIS PowerShell Makefile Batchfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status Build status BCH compliance


This program will connect desktop devices to Meraki firewalls via an L2TP/IPSEC connection. This program uses a Meraki dashboard admin's credentials to pull the data required for a Client VPN connection, create the connection with OS built-ins, and then connect.

Current Feature Set (targeting v1.0.0)

  • Authentication/Authorization

    • Dashboard admins/Guest users supported with Meraki Auth
    • TFA prompt supported
    • Only networks/organizations that that user has access to are shown
  • VPN Connection (Windows-only)

    • Split Tunnel
    • Remember Credential
  • Platforms

    • Windows 7/8/10
    • macOS 10.7-13
    • linux (requires network-manager)
  • CI/CD on tagged commits

    • Windows 10
    • macOS 10.13
    • Ubuntu 14.04
    • Ubuntu 16.04
  • Troubleshooting tests on connection failure

    • Is the MX online?
    • Can the client ping the firewall's public IP?
    • Is the user behind the firewall?
    • Is Client VPN enabled?
    • Is authentication type Meraki Auth?
    • Are UDP ports 500/4500 port forwarded through firewall?

The goals for future major versions can be found in the Project list.

Installing Merlink


Download the executables here.

Building from Source

1. Clone the repository:

git clone

2. Download the required libraries with pip3

pip3 install requirements.txt

3. Execute the file



Please read for the process for submitting pull requests.

Setting up your environment

To set up your Windows environment, please read


SemVer is used for versioning:

  • MAJOR version: Incompatible UI from previous version from a user's perspective
  • MINOR version: Functionality is added to UI from a user's persective
  • PATCH version: Minor enhancements and bug fixes

For the versions available, see the tags on this repository.


Adapting Git Branching for this projcet

  • iss#-X.Y: Branch from dev-X.Y and reintegrate to dev-X.Y. Should be tied to an issue tagged with 'bug', 'feature', or 'enchancement' on repo.
  • dev-X.Y: Development branch. When it's ready for a release, branch into a release.
  • rel-X.Y: Release candidate targeting version X.Y. When it is ready, it should be merged into master tagged with version X.Y.
  • master: Master branch.


Reference Material

Language and Libraries

  • Python 3 - Base language
  • Qt5 - Comprehensive Qt reference made by the Qt company. It is made for C++, but will supply the information you need about classes and functions.
  • PyQt5 - Documentation for PyQt5. This is a copypaste of the Qt docs applied to Python, and generally contains less useful information
  • Mechanical Soup - Web scraper for Python 3


General Documentation

Style Guide

Style Guide


  • PyInstaller - Python bundler used as part of this project

    • Make sure you install the latest PyIntstaller directly:

    pip install

  • NSIS - Windows program installer system

  • FPM - A way to package to targets deb, rpm, pacman, and osxpkg libxml2-utils


  • coala:

    • On ubuntu, be sure to install these libraries as well:

    sudo apt install libxml2-utils libxml2-dev libxslt-dev libxml2


This project is licensed under the Apache License 2.0 - see the file for details.


  • Ross Jacobs - Initial work - pocc

See also the list of contributors who participated in this project.


Praise be Stack Overflow!

You can’t perform that action at this time.