2. What is Mutagen?
Mutagen is a new kind of remote development tool that enables your existing local tools to work with
code in remote environments like cloud servers and containers.
It does this by providing high-performance real-time file synchronization and flexible network
forwarding.
It supports synchronization and forwarding between local systems, SSH-accessible locations, and
Docker containers, as well as most other infrastructure (such as Kubernetes clusters) using its tunnel
transport.
3. Features
Flexible transports:
Mutagen works across local, server, and container infrastructure, including Docker®
containers and Kubernetes® containers.
Open-source:
Mutagen is an open-source tool that gives you full control over your data, how it's
transmitted, and where it's stored. It is written in popular programming language
GoLang.
Cross-platform:
Mutagen supports a broad range of platforms, handling their idiosyncrasies automatically
while offering users full control.
4. Design
Unlike most other remote development solutions , Mutagen isn’t a plug-in or a wrapper for other tools.
So it works essentially with any tool as it doesn’t require any installation or remote endpoints.
Internally it uses SCP, SSH and Docker based mechanism to communicate with Mutagen.
Mutagen’s synchronisation and forwarding facilities are designed to be extremely flexible, operating
with any combination of transports.
To help integrate Mutagen into existing projects, Mutagen provides several ways for integration. One
is by integrating with Docker Compose and other is providing project based configuration files which
allows to configure the tool.
5. Transports
Local:
Local synchronisation and forwarding endpoints are the most basic Mutagen transport.
SSH:
Mutagen also supports synchronisation and forwarding endpoints that are accessible via SSH.
Docker Containers:
Docker containers can also be used to as synchronisation and forwarding endpoints in similar
manner to SSH.
Tunnels:
Tunnels are the most flexible Mutagen transport, allowing for synchronization and forwarding to any
remote environment. Tunnels work via encrypted peer-to-peer connections and provide automatic
remote endpoint monitoring for near-instantaneous reconnection to ephemeral infrastructure. This
makes them particularly well-suited for working with containers.
6. Network forwarding
Mutagen supports flexible network forwarding, allowing
you to connect to services and access applications
running on remote systems.
It can be particularly useful when developing applications
inside containers that you want to access locally.
For example, you might want to develop a web
application (potentially with multiple backing services) in
a containerized environment and access it from your
browser.
7. File Synchronisation
Mutagen’s file synchronization uses a novel algorithm that
combines the performance of the rsync algorithm with
bidirectionality and low-latency filesystem watching.
It can be used for example to synchronize code between your
laptop and a remote container in effective real-time, allowing
you to edit code with your editor of choice and have it pushed to
the remote environment almost instantly.