Tahoe-LAFS Storage Drone

Idea: Creating a dedicated, minimal, small fast tahoe storage node in C to be run on embedded (OpenWRT) systems.

Goal: Adding lots of cheap tahoe-lafs storage nodes to our grid by making any of our Freifunk routers with USB port one such node.

How to learn about the Tahoe-LAFS storage protocol


  • http://foolscap.lothar.com/trac
    • http://foolscap.lothar.com/docs/
    • http://foolscap.lothar.com/docs/api/index.html

Random notes

Convergence key vs. Random Key:

Documentation of Tahoe-LAFS storage (drone) protocol

The storage drone should be able to communicate with the main tahoe-lafs software without needing any modifications to the latter.

The following document is going to collect the various formats and protocols needed for a dedicated storage node.

Introducer Communication

  • Connect to Introducer
  • Announce ourselves to introducer

Client Communication

  • Immutable:
    • allocate - remoteallocatebuckets()
    • write -
    • close
    • read
    • get - remotegetbuckets()
  • Mutable:
    • writev
    • readv - remoteslotreadv()
  • Both:
    • add-lease - remoteaddlease()
    • renew - remoterenewlease()
    • cancel
  • Dunno:
    • remotegetversion()
    • remoteadvisecorrupt_share()
    • remoteslottestvandreadvandwritev()

Local Storage Format

Ideally, the local disk storage format of this storage drone would be the same as of the main tahoe-lafs software to be able to run either software over the same storage directory.

Configuration Format