Unlike web-based IDEs, network filesystems, and editor plugins, Mutagen is a high-performance file synchronization engine. It allows developers to edit code on their local filesystem, with their editor of choice, and have it synchronized in real-time to remote locations.
In contrast with other synchronization tools, Mutagen focuses specifically on development scenarios. It offers granular control over development-centric behaviors such as permission handling, conflict resolution, symbolic link handling, ignoring content, filesystem watching, and more.
Mutagen also offers a flexible assortment of unidirectional and bidirectional synchronization modes, allowing it to adapt to a broad range of workflows. It can currently synchronize between any pair of local, SSH-accessible, and Docker® container endpoints.
With applications continuing their march towards cloud-based, containerized deployment, there is a growing desire to realign development and deployment workflows. However, despite a growing number of orchestration tools making their way into the development ecosystem, one critical feature remains conspicuously absent: the ability to efficiently and robustly synchronize code into remote environments.
As cloud platforms and containerization technologies continue to become more complex and difficult to emulate locally, this workflow realignment is no longer going to be optional. Mutagen is designed to fill the code synchronization gap and work in tandem with orchestration tooling to facilitate remote, container-based development scenarios.
Mutagen is unique amongst synchronizers in that it doesn't need to be installed on remote systems and doesn't require TCP port forwarding. Instead, it ships with an assortment of cross-compiled "agent" binaries that it copies to remote systems and executes, communicating and transmitting data over standard input/output streams. This behavior makes Mutagen ideally suited for work with ephemeral remotes like containers.
Mutagen also has no dependencies, runs completely in user space (no administrative permissions or pesky kernel extensions required), and brings along some nifty safety features to avoid accidental data deletion. Combined with its robustness to connection dropouts, Mutagen can be used in almost any environment and with any connection.
Although it's designed for development, Mutagen can efficiently synchronize any filesystem content. Under the hood, Mutagen uses a bidirectional version of the rsync algorithm based on a three-way merge. This allows it to perform differential file transfers while safely reconciling filesystem contents between two endpoints.
Coupled with low-latency filesystem watching, metadata caching, and pipelined network operations, Mutagen offers effectively real-time synchronization even in low-bandwidth, high-latency setups.