Private, peer-to-peer device synchronization network. Sync photos, documents and files between your devices — phone, tablet, laptop, NAS — without any third-party server.
Built in 100% pure Rust. Zero C bindings.
- Generate a BIP39 mnemonic (12 or 24 words) — this is your network's root of trust
- Start a backup daemon on your NAS or server
- Connect phones and tablets by entering the mnemonic — existing devices approve new ones
- Files flow automatically from sources (phone) to backup nodes (NAS)
- Any device can request temporary access to another device's files
All mutations (device joins, file additions, access grants) are recorded in a signed, hash-chained DAG that syncs via gossip. Devices merge naturally when they reconnect — fully offline-first.
┌─────────────────────────────────────────────────────────────┐
│ Platform (storage, UI, OS integration) │
│ murmurd / murmur-cli / murmur-desktop │
| / Android / iOS (later) │
├─────────────────────────────────────────────────────────────┤
│ Rust Core (protocol + logic, no storage) │
│ ┌─────────────────────────────────────┐ │
│ │ Engine — sync, approval, blobs │ │
│ │ DAG — signed append-only log │ │
│ │ Network — iroh QUIC + gossip │ │
│ │ Seed — BIP39 + HKDF keys │ │
│ │ Types — DeviceId, BlobHash, … │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
The core never writes to disk. It produces serialized bytes and hands them to the platform via callbacks. Each platform decides how to persist (Fjall, SQLite, Core Data, etc.).
crates/
murmur-types/ Shared types (DeviceId, BlobHash, NetworkId, HLC, roles)
murmur-seed/ BIP39 mnemonic + HKDF key derivation
murmur-dag/ Signed append-only DAG (in-memory, platform persists)
murmur-net/ Network (iroh QUIC + gossip + shared wire utilities)
murmur-engine/ Orchestrator (sync, approval, blob transfer, storage-agnostic)
murmur-ipc/ IPC protocol types for daemon ↔ CLI communication
murmur-cli/ CLI tool for managing murmurd (init, join, approve, status, etc.)
murmurd/ Headless backup daemon (NAS/RPi/VPS)
murmur-desktop/ iced desktop GUI app (Linux, macOS, Windows)
murmur-ffi/ UniFFI bindings for mobile platforms (Android, iOS)
platforms/
android/ Android app wrapping murmur-ffi
tests/
integration/ Multi-device simulation tests
cargo build # build everything
cargo test # all tests
cargo test -p murmur-types # single crate
cargo clippy -- -D warnings # lint (must pass, zero warnings)
cargo fmt --check # format check# Headless backup daemon (NAS, RPi, VPS)
cargo install --path crates/murmurd
# CLI tool for managing the daemon
cargo install --path crates/murmur-cli
# iced desktop GUI app (Linux, macOS, Windows)
cargo install --path crates/murmur-desktop| Purpose | Crate |
|---|---|
| Hashing | blake3 |
| Networking | iroh 0.96 |
| Gossip | iroh-gossip 0.96 |
| BIP39 | bip39 v2 |
| Key derivation | hkdf + sha2 |
| Signing | ed25519-dalek v2 |
| Serialization | postcard + serde |
| Async | tokio |
| Encryption | aes-gcm |
| Metrics | prometheus |
| HTTP | axum |
| mDNS | mdns-sd |
| UI (desktop) | iced 0.14 |
Desktop/server (murmurd, murmur-cli, murmur-desktop): fjall v3 (metadata DB), clap (CLI).
No dependency requires C/C++ compilation in the core crates.
See LICENSE for details.