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 (flat files, 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): flat-file DAG persistence (dag.bin), fjall v3 (transient push queue), clap (CLI).
No dependency requires C/C++ compilation in the core crates.
See LICENSE for details.