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.
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
commands like ssh
or docker exec
as transports for communication.
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.
In addition to manual and scripted management of synchronization and forwarding, tooling is available to help automate and integrate this functionality with your existing development workflows. Mutagen offers a Docker Desktop extension as well as a Mutagen-aware Compose implementation. For non-Docker projects, Mutagen offers a generic project format for automation.
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.