Make remote development work with your local tools

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 — no plug-ins required.

Learn more →

Transport-agnostic

Mutagen works between any combination of local, SSH-accessible, and Docker® container endpoints, including remote-to-remote.

Robustly cross-platform

Mutagen supports a broad range of platforms, handling their idiosyncrasies transparently while offering users full control.

Open-source and local

Mutagen is a open-source tool that gives your full control over your data, how it's transmitted, and where it's stored.

Use remote containers as interactive development environments

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 →

High-performance file synchronization

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:

  • Permission handling
  • Conflict resolution
  • Ignoring content
  • Symbolic link handling
  • Filesystem watching
  • And more...
Learn more →

Powerful network forwarding

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 →

Flexible integration and orchestration

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"]

Interested? Try Mutagen or check out the documentation today!