Skip to main content

imbue-mngr-pair

Continuous file synchronization between an agent and your local directory.

A plugin for mngr that adds the mngr pair command. Launch with mngr pair <agent>.

Overview

mngr pair watches for file changes on both sides and syncs them in real-time using unison. If both directories are git repositories, it first synchronizes git state (branches and commits) before starting continuous file sync. This lets you edit alongside an agent, reviewing and modifying its work as it happens.

Requirements

  • unison (file synchronization tool), version 2.52 or newer, plus its unison-fsmonitor helper -- unison watches for changes through that helper, so continuous sync needs both binaries.
    • macOS: brew install unison and brew install autozimu/formulas/unison-fsmonitor
    • Linux: take both from a unison release. apt-get install unison is not enough: the Debian and Ubuntu package contains no unison-fsmonitor (and no separate package provides one), and Ubuntu 22.04's unison is 2.51, which is too old regardless -- versions below 2.52 cannot interoperate with newer ones at all.

Pairing with an agent on a remote host needs the same two binaries on that host, because unison is a client/server protocol rather than a one-shot copy: a second unison runs on the host and watches its own side. mngr uses what is already installed there if it is usable, and otherwise installs a pinned static build into ~/.mngr/bin on the host. That build only exists for Linux x86_64 (upstream has never published a Linux arm64 binary), so on any other platform you have to install unison and unison-fsmonitor yourself.

Usage

# Basic pairing with an agent
mngr pair my-agent

# Pair to a specific local directory
mngr pair my-agent --target ./local-dir

# One-way sync (agent to local only)
mngr pair my-agent --sync-direction=forward

# One-way sync (local to agent only)
mngr pair my-agent --sync-direction=reverse

# Prefer source files on conflicts
mngr pair my-agent --conflict=source

# Filter to specific files
mngr pair my-agent --include "*.py" --exclude "__pycache__/*"

# Pair a subdirectory of the agent
mngr pair my-agent:/subdir --target ./local-dir


# Pair with an agent running on a remote host
mngr pair my-agent@my-vps

# Skip the git requirement
mngr pair my-agent --no-require-git

Options

Sync behavior

  • --sync-direction MODE -- both (bidirectional, default), forward (agent to local), reverse (local to agent)
  • --conflict MODE -- Conflict resolution for bidirectional sync: newer (most recent mtime, default), source, target
  • --include PATTERN / --exclude PATTERN -- Glob patterns for selective sync (repeatable). .git is always excluded.

--include polls rather than watches

Restricting a sync with --include is incompatible with unison-fsmonitor, which fails every event it sees on a replica narrowed by -path. Such a sync therefore polls every couple of seconds instead of watching, which is a little slower to notice a change and otherwise identical.

Git handling

  • --require-git / --no-require-git -- Require both sides to be git repos (default: enabled)
  • --uncommitted-changes MODE -- How to handle uncommitted changes during initial git sync: stash, clobber, merge, fail (default)

Press Ctrl+C to stop the sync. SIGTERM stops it the same way, so a supervising process can shut pairing down cleanly. Either way unison is stopped with it.

Machine-readable output

With --format jsonl the command streams one JSON object per line. Three of them mark the lifecycle: pair_started (the two paths have been resolved and work is about to begin), pair_syncing (unison is up and both replicas are being watched), and pair_stopped (the sync has ended). A fourth, pair_transferring, carries is_transferring and fires when unison starts moving bytes and again when it settles -- a sync spends nearly all its life up but idle.

Limitations

  • Remote hosts need unison 2.52+ and unison-fsmonitor; mngr can only install those for Linux x86_64, so elsewhere (notably Linux arm64, for which upstream publishes no binary at all) you must install them yourself. A host carrying only the distro unison counts as not having them.
  • Clock skew between machines can affect the newer conflict mode -- which matters more when pairing with a remote agent, since the two clocks are genuinely separate.

Metadata

Release files for imbue-mngr-pair 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for imbue-mngr-pair 0.3.0
File Interpreter ABI Platform Actions
imbue_mngr_pair-0.3.0-py3-none-any.whl Python 3 none any Details for imbue_mngr_pair-0.3.0-py3-none-any.whl

Release files / imbue_mngr_pair-0.3.0-py3-none-any.whl

Download URL imbue_mngr_pair-0.3.0-py3-none-any.whl
Size 27.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a795afca2db14fdafdf05e289f06388fa077ce11392f80e5dd5a0fd8c63229a
BLAKE2b-256 checksum
How to use checksums
ab7de56a8aad8f0ef0b7c0434edfcc287ebe1ad911f51fd1a20b0af83326204e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for imbue-mngr-pair 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 1 file in this release has been uploaded with provenance metadata.

Attestation for imbue_mngr_pair-0.3.0-py3-none-any.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page