warehouse

module
v0.37.3 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2026 License: MIT

README

Warehouse is a distributed object storage system (an alternative to S3) that is fully self hostable.

Features:

  • Scalable: Deploy as many volume servers as you want to expand the storage pool
  • Optimized for small files - based on the haystack paper and inspired by SeaweedFS
  • Web UI - Easily manage volume servers, buckets, objects, and API keys through the Web UI
  • Fine grained API keys - create API keys with access to only what you allow

Docs:

Feature Goals

  • Basic Bucket CRUD
  • Basic Object CRUD
  • Web UI - In progress
  • Authentication
  • Golang client
  • TypeScript client
  • Graph based upload processing (replacement for a message broker)
  • Cache server (would reconstruct chunks as well)
  • FFmpeg integration
  • TensorFlow integration
  • In memory database instead of SQLite

Unfortunately I've ran out of time to implement all these features!

I'll update during Stardance by Hackclub

Optimizations

  1. Optimized for small files
    • Usually to read a file its metadata has to read from disk first (unless its in cache) and then do another read to actually read the file. This adds overhead.
    • Each file usually has over 128 bytes of metadata overhead (256+ bytes in ext4!)
    • Warehouse solves this problem by
      1. Having a very small metadata overhead (17 bytes)
      2. Storing all metadata in memory
    • This means that each read from a volume server is only one disk read, lowering latency
  2. Direct connections
    • Some file storage systems may proxy data to the underlying storage
    • This increases bandwith
    • Warehouse uses direct connections (with JWTs) so that clients upload and read directly from the volume servers the file (or chunk) is located at
  3. Chunking
    • Warehouse supports large files using chunks
    • Each file is split into 80 MiB chunks, by the client. This means less work for the server
    • The client uploads chunks directly to multiple volumes, spreading out work and increasing upload speed by using concurrency.

Directories

Path Synopsis
cmd
_tests command
server command
volume command
web command
internal
pkg
sdk

Jump to

Keyboard shortcuts

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