Profile picture

Emmanuel Obiabo

šŸŒ Banana Protocol: Peer-Assisted Local Memory (PALM)

I love to build unconventional things and this might have taken the cake

Published on January 5, 2026

The Banana protocol.


I love building unconventional things, and this one might take the cake. I’m learning and flexing in Rust and distributed systems, and I’m actively working on Banana Protocol, Peer‑Assisted Local Memory (PALM). This is a work in progress; I’m still exploring and iterating.

Abstract

  • PALM is a local‑first, peer‑to‑peer (P2P) storage system that aggregates unused disk capacity across devices on the same local network (home Wi‑Fi, campus, office, community mesh).
  • Goals: privacy, fault tolerance, and efficiency without central servers or cloud dependence.
  • Approach: threshold erasure coding + decentralized discovery (mDNS/gossip) + content‑addressed fragments.

Overview

  • Devices on a LAN cooperate to store files. Data is split into n fragments and recoverable from any k fragments (k ≤ n).
  • Privacy by design: fragments are non‑informative below the recovery threshold.
  • Focus: simple setup, LAN performance, low operational overhead.

The Banana Metaphor

  • File = bunch of bananas; fragment = single banana.
  • Lose a few bananas, and you can still reconstruct the bunch if enough remain.
  • A single banana reveals nothing useful on its own.

Core Concepts

  • Erasure Coding: Reed‑Solomon or fountain codes; k‑of‑n recovery.
  • Fragment Distribution: no single peer stores the full file; placement balances capacity and availability.
  • Content Addressing: cryptographic hashes for integrity, deduplication, and lookup.

Properties

  • Fault Tolerance: redundancy and parallel retrieval mitigate churn and offline peers.
  • Privacy: fragments are useless in isolation; threshold decoding is required.
  • Efficiency: leverages LAN speeds; avoids internet latency and egress costs.
  • Decentralization: mDNS and lightweight gossip; no master index or central coordinator.

How It Works

  • Upload: split → encode → assign → distribute fragments based on capacity/health.
  • Storage: mutual hosting with quotas and local policies.
  • Retrieval: request by content ID → locate peers → fetch ≄ k fragments (in parallel) → reconstruct locally.
  • Discovery/Membership: local presence via mDNS; fragment availability and health via gossip.
  • Integrity: content‑addressed fragments; optional signatures for provenance.

Remote Access (Exploratory)

  • Voluntary relay peers; hole‑punching where possible.
  • No fixed central relay; multiple relays for robustness.
  • May remain optional to preserve local‑first simplicity.

Comparison

  • IPFS: wide‑area/global; PALM is LAN‑first, lightweight, offline‑friendly.
  • Storj: decentralized cloud with central elements; PALM avoids servers, purely local P2P.
  • Tahoe‑LAFS: secure global storage with heavier setup; PALM prioritizes simplicity and LAN performance.

Planned Tech Stack

  • Language: Rust (performance, safety, async).
  • Coding: Reed‑Solomon or fountain codes.
  • Networking: QUIC preferred; TCP/UDP fallback.
  • Discovery: mDNS + lightweight gossip.
  • Storage: content‑addressed fragments with local persistence and quotas.

Use Cases

  • Campus/dorm collaboration and sharing.
  • Offline events/workshops.
  • Community/disaster‑resilient local meshes.
  • Edge clusters with limited backhaul.
  • Low‑bandwidth environments.
  • Educational demos in distributed systems and coding theory.

Project Status (Work in Progress)

  • Stage: very early; active prototyping.
  • Current work:
    • Encoding/decoding reliability.
    • Local peer discovery/membership.
    • Fragment placement/replication strategies.
    • Recovery under churn.
    • CLI for end‑to‑end testing.
  • Code: not public yet; rapid iteration expected.

Open Questions

  • Choosing k/n per file size, SLA, and peer reliability.
  • Placement policies balancing capacity, latency, and churn.
  • Gossip scope and rate control on dense LANs.
  • Optional relay design that preserves decentralization.
  • Security: signatures, access control, abuse prevention.
  • UX: onboarding, quotas, failure visibility, conflict resolution.

Call for Feedback I’d love input from folks working on local‑first systems, P2P networking, Rust, and erasure coding—especially on placement strategies, recovery trade‑offs, and real‑world LAN constraints.

Conclusion Banana Protocol (PALM) aims to make private, resilient, and fast LAN storage practical through threshold coding and cooperative peers—avoiding cloud costs and central points of failure. I’m still building and learning—one fragment at a time. šŸŒšŸš€