pastemesh 0.10.1

dotnet tool install --global pastemesh --version 0.10.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local pastemesh --version 0.10.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=pastemesh&version=0.10.1
                    
nuke :add-package pastemesh --version 0.10.1
                    

PasteMesh (v0.10.1)

Release License Security

Sovereign, End-to-End Encrypted Peer-to-Peer Clipboard Mesh
Seamless clipboard synchronization across your developer workstations, servers, and mobile devicesβ€”without third-party cloud intermediaries.

Official Website: https://pastemesh.net


Highlights

  • πŸ”’ Zero-Trust Sovereign Security: Every clipboard clip is encrypted locally using ChaCha20-Poly1305 AEAD with per-mesh symmetric keys and authenticated via Ed25519 signatures.
  • 🌐 Multi-Mesh Network Isolation: Run multiple isolated clipboard networks simultaneously (e.g., default, work, personal, fleet). Vault storage, encryption keys, and peer registries remain strictly isolated.
  • πŸ“¦ Strictly 2 Binaries: Zero binary bloat or tool sprawl. Everything is consolidated into two self-contained binaries:
    • pastemesh: Unified CLI, background daemon, multi-mesh manager, and native OS tray applet (Rust).
    • pastemesh-desktop: .NET 10 Native AOT desktop engine with Kestrel Web Dashboard and mobile SVG QR pairing.
  • πŸ–₯️ Native OS System Tray Applet & Quick Popup: D-Bus StatusNotifierItem tray widget and fast GTK popup menus (pastemesh popup). Features dynamic MRU clip history, one-click clipboard copying, quick mesh switching, and interactive modals.
  • ⌨️ Desktop Keyboard Shortcuts:
    • Ctrl + Super + Alt + H: Interactive full history vault window (pastemesh popup)
    • Ctrl + Super + H: Cursor-positioned quick popup menu (pastemesh history --menu)
    • Ctrl + Super + V: Paste latest clip from encrypted vault (pastemesh paste)
    • Ctrl + Super + X: Cut active desktop selection into encrypted vault (pastemesh cut)
    • Ctrl + Super + C: Copy active desktop selection into encrypted vault (pastemesh copy)
  • πŸ“± Zero-Dependency Mobile Pairing: Ephemeral 6-digit SAS PIN mutual verification (pastemesh pair) with air-gapped SVG QR code generation.
  • ⚑ Bit-Exact Unix Pipelines: Clean standard I/O streaming (echo "secret" | pastemesh, pastemesh paste -n). Errors and diagnostics route strictly to stderr.

Installation

Linux & macOS (One-Line Automated Install)

curl -fsSL https://pastemesh.net/install.sh | sh

Windows 11 & 10 (x64 & Native ARM64)

One-Line PowerShell Install (Auto-Detects x64 or ARM64)
irm https://pastemesh.net/install.ps1 | iex

To explicitly target an architecture (e.g., on Windows 11 ARM64 / Snapdragon X Elite):

& ([scriptblock]::Create((irm https://pastemesh.net/install.ps1))) -Arch arm64
Package Managers (Winget, Scoop & Chocolatey β€” x64 & ARM64)
# Winget
winget install PasteMesh.PasteMesh

# Scoop
scoop install pastemesh

# Chocolatey
choco install pastemesh
Native Windows Installers & Portable Archives
  • Windows 11 ARM64 (Native): PasteMesh-Setup-v0.10.1-windows-arm64.exe or pastemesh-v0.10.1-windows-arm64.zip
  • Windows x64: PasteMesh-Setup-v0.10.1-windows-x64.exe or pastemesh-v0.10.1-windows-x64.zip

From Local Release Archive (Linux)

Download pastemesh-v0.10.1-linux-x64.tar.gz (or linux-arm64.tar.gz) and extract:

tar -xzf pastemesh-v0.10.1-linux-x64.tar.gz
sudo mv pastemesh pastemesh-desktop /usr/local/bin/

Verifying Installation

pastemesh --version
# Output: pastemesh 0.10.1

Quick Start & CLI Usage

1. Clipboard Copy, Cut & Paste

# Copy text into the active mesh
pastemesh copy "Secret token or code snippet"

# Cut text or file (encrypts to vault and deletes source file)
pastemesh cut -f /tmp/temporary_token.txt

# Capture active desktop selection via CLI
pastemesh copy -s
pastemesh cut -s

# Quiet copy from stdin (pipelines automatically default to copy)
cat id_ed25519.pub | pastemesh

# Paste latest clip (bit-exact stdout)
pastemesh paste

# Paste without trailing newline (preserves exact payload bytes)
pastemesh paste -n

# Paste specific historical item by index
pastemesh paste 3

# Fast numeric shorthand
pastemesh 3

2. Vault, Popup & History Management

# Open interactive GUI clipboard history window
pastemesh popup

# Open quick floating cursor menu
pastemesh popup --menu

# View recent clipboard history in terminal
pastemesh history

# Search history
pastemesh history --search "database"

# Pin a clip so it is preserved indefinitely (defaults to latest #1)
pastemesh pin
pastemesh pin 4

# Unpin a clip
pastemesh unpin 4

# Delete an individual clip
pastemesh delete 2

# Clear clipboard history (interactive prompt)
pastemesh history clear

# Non-interactive clears
pastemesh history clear -y           # Clears unpinned clips (preserves pinned)
pastemesh history clear --pinned -y  # Clears only pinned clips
pastemesh history clear --all -y     # Purges entire vault

3. Multi-Mesh Isolation

# List all configured meshes
pastemesh mesh list

# Create a new isolated mesh
pastemesh mesh create work

# Switch active mesh
pastemesh mesh switch work

# Rename a custom mesh (preserves encryption key, clips, and paired peers)
pastemesh mesh rename work engineering

# Inspect active mesh status and peer connections
pastemesh mesh status

# Target a specific mesh without switching active context
pastemesh -m engineering copy "Sensitive work payload"
pastemesh -m engineering paste
pastemesh -m engineering history

# Delete a mesh
pastemesh mesh delete engineering

4. Native OS System Tray Applet

Launch the native desktop tray applet:

pastemesh tray
  • Dynamic MRU Menu: Top items show recent clips (configurable via mru_limit, default: 10). Clicking any item copies it to the clipboard (xclip/wl-copy) and shows a notification.
  • Mesh Submenu (🌐 Mesh: <active>):
    • Switch active mesh with a single click.
    • View mesh status and peer metrics.
    • Create or delete meshes on the fly.
  • Full History Table: Interactive GUI table with timestamps, sizes, pin status, and previews.
  • Clear History: Interactive dialog to purge unpinned or all clips.
  • Settings: Configure MRU limits and preferences.

5. Background Daemon & Pairing

# Run headless background daemon
pastemesh daemon --port 5288

# Generate ephemeral pairing PIN & QR link for mobile or remote peer
pastemesh pair

# Authenticate remote peer with their 6-digit PIN
pastemesh pair 499348

Architecture & Storage

Binary Topology

PasteMesh enforces a strictly 2-binary model:

dist/bundle/
β”œβ”€β”€ pastemesh          # Unified CLI, daemon, multi-mesh manager, and tray applet (Rust)
└── pastemesh-desktop  # Native AOT web dashboard, QR pairing & REST API (.NET 10)

Both binaries communicate via Unix domain sockets (/tmp/pastemesh-<uid>.sock) and share the configuration directory.

Vault Storage Layout (~/.config/pastemesh/)

Storage follows a flat, high-performance vault structure:

~/.config/pastemesh/
β”œβ”€β”€ config.json              # Global user preferences (mru_limit, etc.)
β”œβ”€β”€ meshes.json              # Registered mesh networks and active mesh pointer
β”œβ”€β”€ peers.json               # Trusted peers for 'default' mesh
β”œβ”€β”€ peers-{mesh}.json        # Trusted peers for '{mesh}'
└── vault/
    β”œβ”€β”€ vault.key            # ChaCha20-Poly1305 symmetric key for 'default' mesh
    β”œβ”€β”€ vault-{mesh}.key     # ChaCha20-Poly1305 symmetric key for '{mesh}'
    β”œβ”€β”€ index.json           # Catalog and metadata for 'default' mesh
    β”œβ”€β”€ index-{mesh}.json    # Catalog and metadata for '{mesh}'
    └── blobs/               # Encrypted payload blobs: {uuid}.blob

Note: Blobs are encrypted with mesh-specific keys. Even if raw files are manually copied between meshes, they cannot be decrypted without the corresponding mesh key.


Development & Testing

Prerequisites

  • Rust Toolchain: 1.85+ (ensure ~/.cargo/bin is in your PATH)
  • .NET SDK: .NET 10 SDK with clang and zlib1g-dev for Native AOT compilation
  • Desktop Tools: zenity, xclip or wl-clipboard, libnotify-bin

Building & Packaging (Makefile)

PasteMesh provides a top-level Makefile to streamline building, testing, assembling release bundles, and deploying:

# Display all available targets
make help

# Build release binaries and assemble the strictly 2-binary bundle in dist/bundle/
make bundle

# Package release tarball (dist/pastemesh-v0.10.1-<arch>.tar.gz)
make release

# Run all unit tests and the full cross-compatibility integration test suite
make test

# Install binaries to ~/.local/bin (or /usr/local/bin if run with sudo)
make install

# Bump version across all project manifests (C#, Rust, packaging, installers)
make bump 0.10.1
# or: make bump version=0.10.1

Manual Build from Source

If you prefer building individual components manually:

# 1. Build Rust release binary (pastemesh)
cargo build --release --manifest-path rust/Cargo.toml
# Output: rust/target/release/pastemesh

# 2. Publish .NET 10 Native AOT desktop binary (pastemesh-desktop)
dotnet publish dotnet/src/PasteMesh.Desktop/PasteMesh.Desktop.csproj -c Release -r linux-x64 --self-contained -o dist/desktop
# Output: dist/desktop/pastemesh-desktop

# 3. Assemble distribution bundle (The Rule of 2)
mkdir -p dist/bundle
cp rust/target/release/pastemesh dist/bundle/
cp dist/desktop/pastemesh-desktop dist/bundle/
chmod +x dist/bundle/pastemesh dist/bundle/pastemesh-desktop

# 4. Package release archive
tar -czvf dist/pastemesh-v0.10.1-linux-x64.tar.gz -C dist/bundle .

Building & Packaging for Windows (x64 & Native ARM64)

On Windows (or CI runners), use packaging/windows/build-windows.ps1 to publish Native AOT binaries (win-x64 or win-arm64), stage architecture-specific VC++ CRT redistributables (dist/vc_crt_<arch>), configure AppxManifest.xml (ProcessorArchitecture), and build both the portable .zip and Inno Setup installer:

# Build Windows x64 release bundle, MSIX layout, and Inno Setup installer
pwsh ./packaging/windows/build-windows.ps1 -Arch x64

# Build native Windows 11 ARM64 release bundle, MSIX layout, and Inno Setup installer
pwsh ./packaging/windows/build-windows.ps1 -Arch arm64

Running the End-to-End Test Suite

Run the unified cross-engine integration test suite:

make test
# Or directly:
./tests/cross-compat/run.sh

This suite verifies:

  1. .NET 10 Solution unit tests
  2. Rust Workspace cryptography and core tests
  3. Direct CLI vault save/retrieve
  4. Background Daemon IPC socket request/response loop
  5. Bi-directional cross-engine decryption (.NET Native AOT $\leftrightarrow$ Rust)
  6. Multi-mesh cryptographic isolation and zero cross-mesh leakage

License

Licensed under either of:

at your option.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.10.1 49 10/16/2026