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 itsunison-fsmonitorhelper -- unison watches for changes through that helper, so continuous sync needs both binaries.- macOS:
brew install unisonandbrew install autozimu/formulas/unison-fsmonitor - Linux: take both from a unison release.
apt-get install unisonis not enough: the Debian and Ubuntu package contains nounison-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.
- macOS:
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)..gitis 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
newerconflict 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logSecurity 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 logA 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.