Mutagen is a new kind of remote development tool that lets you use your existing local tools to work in remote environments like cloud servers and containers. It does this by providing high-performance real-time file synchronization and flexible network forwarding.
Unlike most other remote development solutions, Mutagen isn’t a plug-in, so it
works with essentially any tool. It also doesn’t require users to manually
install it on remote endpoints or expose ports. Instead, Mutagen uses copy
docker cp to inject small “agent” binaries into a
remote environments and then communicates with those binaries over a transport
Mutagen’s synchronization and forwarding facilities are designed to be extremely flexible, operating between arbitrary pairs of endpoints without any knowledge of the underlying transport. This includes cases where both endpoints are remote, allowing for synchronization and/or forwarding that’s simply proxied through your local system. Support is currently implemented for local, SSH-based, or Docker® container endpoints.
On top of synchronization and forwarding, Mutagen offers simple orchestration facilities that let you integrate it with your existing development setup. If you need a more bespoke setup, Mutagen can also be used in a manual and/or scripted fashion to create individual synchronization and forwarding sessions.
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.
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. Mutagen can even mix the two, e.g. mapping a local Unix domain socket to a remote TCP listener.
To learn more about Mutagen and get a basic understanding of how it works, check out the Getting started guide.