MCPcopy Index your code
hub / github.com/mutagen-io/mutagen

github.com/mutagen-io/mutagen @v0.18.1 sqlite

repository ↗ · DeepWiki ↗ · release v0.18.1 ↗
3,081 symbols 8,750 edges 726 files 1,930 documented · 63% 9 cross-repo links
README

Mutagen

Mutagen is a new kind of remote development tool that enables your existing local tools to work with code in remote environments like cloud servers and containers. It does this by providing high-performance real-time file synchronization and flexible network forwarding. It supports synchronization and forwarding between local systems, SSH-accessible locations, and Docker containers.

Getting started

The best way to understand Mutagen and its features is to read the Overview and Getting started guides. You can find information about all of Mutagen's features in the documentation.

Installation

You can find installation instructions in the Mutagen documentation.

Community

The Mutagen Community Slack Workspace is the place to go for discussion, questions, and ideas.

For updates about the project and its releases, you can follow Mutagen on Twitter.

Status

Mutagen is built and tested on Windows, macOS, and Linux, and it's available for many more platforms.

Tests Report card
Tests Report card

License

For license information, please see the LICENSE file.

Contributing

If you'd like to contribute to Mutagen, please see the contribution documentation.

Security

Mutagen takes security very seriously. If you believe you have found a security issue with Mutagen, please practice responsible disclosure practices and send an email directly to security@mutagen.io instead of opening a GitHub issue. For more information, please see the security documentation.

Versioning and support

Mutagen uses semantic versioning for tracking releases. Before Mutagen reaches version 1.0, each minor release series will be supported for one month after the first release in the next minor release series (e.g. v0.10.x will be supported until one month after the release of v0.11.0).

The builds for each minor release series are pinned to the same Go minor release and dependency versions used for developing that series (though patch releases will be incorporated if they contain security fixes).

We reserve the right to break or bend these rules if necessary for the sake of security, e.g. discontinuing support for a minor release to which a security fix cannot be backported or upgrading Go minor versions for a release series to incorporate important security fixes. Features marked as experimental may also see breakage when necessary, though we will endeavor to keep this to a minimum.

Building

Please see the build instructions.

External projects

Users have built a number of cool projects to extend and integrate Mutagen into their workflows:

  • Mutagen Helper is a tool that makes the orchestration of synchronization sessions even easier by letting you define sessions with configuration files that live inside your codebase. Thanks to @Toilal!
  • docker-magento-mutagen (from Mage2click) is a Docker-based development environment for Magento that uses Mutagen for file synchronization. Thanks to @u-maxx and @shkoliar!
  • MutagenMon is a Python-based GUI for monitoring Mutagen sessions. Thanks to @rualark!
  • mutagenmon is an alternative (Go-based) native GUI for Mac, for monitoring Mutagen sessions, provides apple notarized builds.

Unrelated projects

Please note that this project is unrelated to the Mutagen Python module used for handling audio metadata.

Extension points exported contracts — how you extend this code

ProtocolHandler (Interface)
ProtocolHandler defines the interface that protocol handlers must support in order to connect to endpoints. [8 implementers]
pkg/forwarding/connect.go
Flusher (Interface)
Flusher represents a stream that performs internal buffering that may need to be flushed to ensure transmission. [6 implementers]
pkg/stream/interfaces.go
ProtocolHandler (Interface)
ProtocolHandler defines the interface that protocol handlers must support in order to connect to endpoints. [8 implementers]
pkg/synchronization/connect.go
RecursiveWatcher (Interface)
RecursiveWatcher is the interface implemented by recursive filesystem watching implementations. It is not safe for concu [3 …
pkg/filesystem/watching/watch_recursive.go
Prompter (Interface)
Prompter is the interface to which types supporting prompting must adhere. Implementations are not required to be safe f [3 …
pkg/prompting/prompter.go
LabelSelector (Interface)
LabelSelector is a type that performs matching against a set of labels. [2 implementers]
pkg/selection/labels.go
Transport (Interface)
Transport is the standard agent transport interface, allowing the agent dialing structure to invoke commands on the remo [2 …
pkg/agent/transport.go
Carrier (Interface)
Carrier is the interface that the streams used for multiplexing must implement. It imposes the additional constraint tha [1 …
pkg/multiplexing/carrier.go

Core symbols most depended-on inside this repo

Errorf
called by 1325
pkg/logging/logger.go
Error
called by 310
pkg/logging/logger.go
Close
called by 189
pkg/filesystem/watching/internal/third_party/notify/watcher.go
Unlock
called by 77
pkg/state/lock.go
Fatal
called by 77
cmd/error.go
Lock
called by 76
pkg/state/lock.go
Name
called by 75
scripts/build.go
Debug
called by 54
pkg/logging/logger.go

Shape

Method 1,531
Function 1,153
Struct 299
TypeAlias 55
Interface 39
FuncType 4

Languages

Go100%

Modules by API surface

pkg/synchronization/endpoint/remote/protocol.pb.go123 symbols
pkg/service/synchronization/synchronization.pb.go120 symbols
pkg/service/forwarding/forwarding.pb.go91 symbols
pkg/service/synchronization/synchronization_grpc.pb.go46 symbols
pkg/synchronization/state.pb.go42 symbols
pkg/url/parse_test.go40 symbols
pkg/synchronization/rsync/engine_test.go37 symbols
pkg/service/prompting/prompting.pb.go36 symbols
pkg/service/forwarding/forwarding_grpc.pb.go36 symbols
pkg/synchronization/rsync/receive.go33 symbols
pkg/forwarding/state.pb.go33 symbols
pkg/url/url.pb.go32 symbols

Dependencies from manifests, versioned

github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/bmatcuk/doublestar/v4v4.7.1 · 1×
github.com/eknkc/basexv1.0.1 · 1×
github.com/golang/groupcachev0.0.0-2021033122475 · 1×
github.com/hectane/go-aclv0.0.0-2023012207593 · 1×
github.com/inconshreveable/mousetrapv1.1.0 · 1×
github.com/klauspost/cpuid/v2v2.2.8 · 1×

For agents

$ claude mcp add mutagen \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact