Simple, fast, no-nonsense blob storage
Pull request Compare This branch is 2 commits ahead, 11 commits behind bertha:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


BerthaD is a simple, fast, no-nonsense TCP server to store blobs of data by its SHA256 hash with just three operations:

  1. PUT – Stores the data on disk and return its hash.
  2. LIST – Return the hashes of all blobs stored on this server.
  3. GET – Given the hash of a blob it returns the content of the blob.


  • __GET__s are fast. They are implemented using Linux' splice and FreeBSD's sendfile syscall.
  • Small codebase.
  • No authentication. No SSL. If you don't need them, they are only an overhead.



>>> from bertha import BerthaClient
>>> c = BerthaClient('localhost', 1234)
>>> list(c.list())
>>> c.put_str("Example blob")
>>> list(c.list())
>>> c.get('a0869d836f643fae5d740ad4407c97e174d03169fd788fce690341d03f8d8f44').read()
'Example blob'

See py-bertha.


Usage: berthad-vfs <bound host> <port> <data dir> <tmp dir>
  • bound host is address or name of the address to be bound. For instance: localhost or
  • port is the port on which to bind. Clients default to 819.
  • data dir is the directory which will contain the blobs. It must exist.
  • tmp dir is the directory which will contain the blobs while they are streamed to disk during a PUT. The directory must be on the same mounting point as data dir.


The protocol is described in