dotmemlink is a high-performance, lightweight CLI tool written in Rust designed to synchronize and manage .memlink directories intelligently.
It solves the problem of having separate, un-synced memory profiles (e.g., between WSL/Linux and host Windows filesystems, or across different local setups) by bidirectionally or unidirectionally merging memory files using modification timestamps as the source of truth, ensuring indexes are preserved.
- Bidirectional or Unidirectional Synchronization: Synchronize directory profiles seamlessly.
- Timestamp-Aware Overwrites: Safe copies that compare updatedAt strings embedded within memory JSONs (falling back to file mtime).
- Active Directory Locking: Uses system-level exclusive locks (dotmemlink.lock) during operations to prevent concurrency conflicts.
- Interactive / Preview Modes: Review proposed synchronization actions with --dry-run or confirm individual changes interactively using --interactive.
- Date Range Filters: Keep sync windows narrow using --since YYYY-MM-DD and --before YYYY-MM-DD.
- Seamless Import/Export: Back up memories to a flat directory and import them back with automatic ID generation for untracked JSON files.
- Automated self-updates: Upgrades to the latest GitHub release via dotmemlink upgrade.
Install dotmemlink with a single command on your terminal.
curl -fsSL https://raw.githubusercontent.com/memlinkdotdev/dotmemlink/main/scripts/install.sh | bashirm https://raw.githubusercontent.com/memlinkdotdev/dotmemlink/main/scripts/install.ps1 | iexThe sync subcommand aligns two .memlink directories:
# Sync from WSL/Linux to Windows (Unidirectional, overwrites older Windows files)
dotmemlink sync --from ~/.memlink --to /mnt/c/Users/UserName/.memlink
# Bi-directional sync (copies newer files back and forth, updates both config.json maps)
dotmemlink sync --from ~/.memlink --to /mnt/c/Users/UserName/.memlink --two-way
# Run a safe preview (dry-run)
dotmemlink sync --from ~/.memlink --to /mnt/c/Users/UserName/.memlink --two-way --dry-run
# Interactive sync (prompts you before writing)
dotmemlink sync --from ~/.memlink --to /mnt/c/Users/UserName/.memlink --two-way --interactive
# Sync only memories modified since a specific date
dotmemlink sync --from ~/.memlink --to /mnt/c/Users/UserName/.memlink --two-way --since 2026-05-01Export all JSON files to a flat directory for backup:
dotmemlink export --source ~/.memlink --target ~/backups/memlink-flatImport JSON files from a flat directory, automatically generating 12-character alphanumeric IDs and registering them inside target .memlink/config.json:
dotmemlink import --source ~/backups/memlink-flat --target ~/.memlinkUpgrade dotmemlink to the latest version directly from GitHub Releases:
dotmemlink upgradeShow the current version and compilation commit hash:
dotmemlink versionIf you have Rust installed locally, you can build from source:
git clone https://github.com/memlinkdotdev/dotmemlink.git
cd dotmemlink
cargo build --releaseTo run the integration test suite:
cargo testThis project is licensed under the MIT License.