Skip to content

max-lt/murmur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Murmur

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.

How it works

  1. Generate a BIP39 mnemonic (12 or 24 words) — this is your network's root of trust
  2. Start a backup daemon on your NAS or server
  3. Connect phones and tablets by entering the mnemonic — existing devices approve new ones
  4. Files flow automatically from sources (phone) to backup nodes (NAS)
  5. 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.

Architecture

┌─────────────────────────────────────────────────────────────┐
│  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.).

Workspace layout

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

Build & test

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

Install

# 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

Dependencies

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.

License

See LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors