Overview

Mutagen is a development utility that lets you use your existing local tools (such as your text editor/IDE, browser, and terminal) to work in remote environments like cloud servers and containers. It does this by providing high-performance file synchronization and flexible network forwarding, allowing you to develop applications in a way that looks local but runs on remote hardware. Mutagen is completely free and open-source and works directly between your local system and the remote infrastructure that you need to access.

To extend the features provided by Mutagen, mutagen.io offers additional services that go beyond what’s possible with a local tool. These services help to improve common remote development workflows without requiring you to give up control of your data. This list of services will be expanding regularly, so get started for free today and subscribe to keep up-to-date with new features.

Design

Unlike most other remote development solutions, Mutagen isn’t a plug-in or a wrapper, so it works with essentially any tool. It also doesn’t require manual installation on remote endpoints, instead using copy mechanisms like scp and docker cp to inject small “agent” binaries into remote environments and secure transports like ssh or docker exec for communication. For maximum flexibility, it also offers a peer-to-peer transport that will work with almost any remote infrastructure, including Kubernetes® clusters.

Mutagen’s synchronization and forwarding facilities are designed to be extremely flexible, operating between arbitrary pairs of endpoints using any combination of transports. This includes cases where both endpoints are remote, allowing for synchronization and forwarding that’s simply proxied through your local system.

To help integrate this functionality with your existing development projects, Mutagen offers support for Docker Compose, allowing you to automatically set up and tear down synchronization and forwarding sessions alongside the rest of your services. For non-Compose projects, Mutagen offers a generic project format for automation, and you can always resort to scripting or manually managing Mutagen’s synchronization and forwarding sessions.

File synchronization

Mutagen’s file synchronization is designed to facilitate real-time remote code editing with your existing text editor or IDE, allowing you to quickly test code changes in a remote environment without having to re-deploy. It has rsync-like performance, coupled with low-latency filesystem watching and the ability to operate in both unidirectional and bidirectional modes. In addition to code, it can easily handle build artifacts, analysis outputs, or even your coding music collection.

Since Mutagen is development-focused, it gives users granular control over behaviors like conflict resolution, ignores, symbolic link handling, permission propagation, and more. It’s also aggressively cross-platform, meaning that platform-specific quirks are handled automatically and Windows-to-POSIX development isn’t a problem.

Network forwarding

Mutagen’s network forwarding is designed to let you access remote applications without exposing ports publicly, as well as link application components that might exist in separate locations. Mutagen currently supports forwarding IPv4/v6 TCP traffic as well as Unix domain sockets and Windows named pipes. Mutagen can even mix transport layer protocols, for example mapping a local Unix domain socket to a remote TCP listener.

Getting started

To learn more about Mutagen and get a basic understanding of how it works, check out the Getting started guide.