blobcache

module
v0.0.0-...-575026b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2025 License: GPL-3.0

README

Blobcache

GoDoc

Blobcache reimagines application state as Volumes holding hash-linked data structures. Volumes can be persisted locally, encrypted, and accessed over the network. Hash-linked data structures are efficient to sync and transfer. Corruption is always detected, and the root is a cryptographic commitment to the whole data structure.

Blobcache is a universal backend for E2EE applications.

Quick Docs

Getting Started

You should be able to install with

$ go install ./cmd/blobcache

And then if ${go env GOPATH}/bin is on your path, you should be able to run the blobcache command with

$ blobcache 

or to put the executable somewhere specific

$ go build -o ./put/the/binary/here/please ./cmd/blobcache 
Running a Node in Memory

This is a good option if you just want to play around with the API, and don't want to persist any data, or connect to peers.

$ blobcache daemon-ephemeral \
    --serve-api unix://./blobcache.sock \
    --listen 0.0.0.0:6025
Running the daemon

The following command runs a daemon with state in the specified directory.

$ blobcache daemon \
    --state $HOME/.local/blobcache \
    --serve-api unix:///run/blobcache/blobcache.sock \
    --listen 0.0.0.0:6025

Once the daemon is running, you should be able to connect to it and start building your application on top of content-addressed storage.

License

The Blobcache implementation is licensed under GPLv3.

All of the clients are licensed under MPL 2.0

What this means is: if you improve Blobcache you have to make the improvements available, but if you are just using a client you can do whatever you want with it.

Directories

Path Synopsis
client
go
Package bcclient provides a client for the Blobcache API.
Package bcclient provides a client for the Blobcache API.
cmd
blobcache command
src
bcfuse
Package bcfuse implements a filesystem interface for blobcache.
Package bcfuse implements a filesystem interface for blobcache.
bchttp
Package bchttp implements a Blobcache service over HTTP.
Package bchttp implements a Blobcache service over HTTP.
bclocal
Package bclocal implements a local Blobcache service.
Package bclocal implements a local Blobcache service.
bclocal/internal/pdb
package pdb has utilities for working with the Pebble database.
package pdb has utilities for working with the Pebble database.
bcremote
Package bcremote implements a blobcache.Service over Blobcache Network Protocol (BCNP).
Package bcremote implements a blobcache.Service over Blobcache Network Protocol (BCNP).
blobcache/blobcachetests
package blobcachetests provides a test suite for blobcache.Service.
package blobcachetests provides a test suite for blobcache.Service.
internal/bcnet
bcnet implements the Blobcache Protocol (BCP).
bcnet implements the Blobcache Protocol (BCP).
internal/sbe
package sbe implements simple binary encoding formats for serializing and deserializing data.
package sbe implements simple binary encoding formats for serializing and deserializing data.
internal/volumes/gitvol
Package gitvol implements a Volume in terms of Git
Package gitvol implements a Volume in terms of Git
schema
Package schema implements Schemas for blobcache volumes.
Package schema implements Schemas for blobcache volumes.
schema/basiccont
Package basiccont implements a simple container for volumes.
Package basiccont implements a simple container for volumes.
schema/basicns
Package basicns provides a simple namespace implementation.
Package basicns provides a simple namespace implementation.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL