Mutagen provides real-time file synchronization and flexible
network forwarding that extend the reach of your existing
development tools and allow them to work with applications in
remote environments —
Mutagen works between any combination of local, SSH-accessible, and Docker® container endpoints, including remote-to-remote.
Mutagen supports a broad range of platforms, handling their idiosyncrasies transparently while offering users full control.
Mutagen is a open-source tool that gives your full control over your data, how it's transmitted, and where it's stored.
Mutagen promotes containers to interactive development environments, helping you to define reusable setups that you can share across your development team.
Using Mutagen's real-time file synchronization and transparent network forwarding, you can opt to move those containers onto cloud platforms, removing dependencies and sparing your laptop the pain of running complex applications locally.See an example →
Mutagen offers a novel and high-performance synchronization algorithm that can move code and other files between locations in effectively real-time. It offers safe and portable out-of-the-box behaviors, with development-focused configuration options for:
Mutagen supplements its synchronization features with flexible network forwarding that can operate between any two endpoints, allowing you to access applications running on remote systems, reverse forward traffic back to your laptop, or proxy traffic between two remote systems, all without ever needing to expose ports to the internet. It currently supports forwarding TCP ports (with both IPv4 and IPv6 support) and Unix domain sockets.Learn more →
Mutagen can be controlled manually, integrated into your tooling, or embedded into other tools. It also offers a simple built-in orchestration mechanism that developers can use to automatically initialize synchronization and forwarding sessions that plug into their existing development orchestration setups.Learn more →
forward: godoc: source: "tcp:localhost:6060" destination: "docker://mutagen-dev:tcp:localhost:6060" sync: code: alpha: "." beta: "docker://mutagen-dev/root/mutagen" mode: "one-way-safe" ignore: vcs: true paths: - "/build/"
version: "3.7" services: development: build: ./scripts/environments/development container_name: mutagen-dev stop_grace_period: 0s
# Use a minimal base image with Go support. FROM golang:alpine # Install supplementary tools. RUN ["apk", "add", "git", "openssh-client"] RUN ["go", "get", "golang.org/x/tools/cmd/godoc"] # Disable cgo. ENV CGO_ENABLED=0 # Create a directory that will serve as our working directory, # as well as a synchronization root. RUN ["mkdir", "/root/mutagen"] # Set the working directory. WORKDIR /root/mutagen # Use a null entry point to just idle. ENTRYPOINT ["tail", "-f", "/dev/null"]