blobcache

module
v0.0.0-...-1ef88f4 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2025 License: GPL-3.0

README

Blobcache

GoDoc Matrix

Blobcache is a content addressed data store, designed to be a replicated data layer for applications. If you can express your application state as a copy-on-write data structure, then Blobcache can handle syncing and replication for you.

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 all set to connect to it and start building your application on top of content-addressed storage.

Help, I need to store data larger than a single Blobcache blob

Blobcache is not a filesystem or object store. It only allows storing blobs up to a fixed maximum size (currently 2MB). It is more of a building block than a storage solution on it's own.

Take a look at glfs, a Git-Like FileSystem which breaks apart large files into chunks which will fit into Blobcache.

Also take a look at GotFS which is a more complicated, but in many ways more efficient, alternative to glfs.

Help, I need to store many small things efficiently in Blobcache

Take a look at GotKV, an immutable key-value store on top of content-addressable storage. It's Blobcache compatible.

Community

You can get in touch via either:

  • Our dedicated Matrix room #blobcache:matrix.org
  • The INET256 Discord, in the #applications channel.

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
src
bcfs
Package bcfs implements a filesystem interface for blobcache.
Package bcfs 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.
blobcache
Package blobcache is a temporary standin for the Blobcache API at github.com/blobcache/blobcache
Package blobcache is a temporary standin for the Blobcache API at github.com/blobcache/blobcache
blobcache/blobcachetests
package blobcachetests provides a test suite for blobcache.Service.
package blobcachetests provides a test suite for blobcache.Service.
internal/volumes/gitvol
Package gitvol implements a Volume in terms of Git
Package gitvol implements a Volume in terms of Git

Jump to

Keyboard shortcuts

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