36,003
stars
+31
3,109
forks
520
watchers
7,111
prs
4,406
issues
327
releases
875
discussions
README
SeaweedFS
!SeaweedFS Logo
SeaweedFS is a simple and highly scalable distributed file system. There are two objectives:
1. to store billions of files!
2. to serve the files fast!
One SeaweedFS cluster serves an S3 object store, a POSIX file system, a lakehouse with S3 Tables and a built-in Iceberg REST Catalog, and vector search with S3 Vector Buckets, all on shared storage. Each blob is one disk read away, capacity grows by starting another volume server, and cloud storage can be cached or tiered transparently. Blob reads and writes have O(1) complexity and can run at the full speed supported by the underlying hardware.
!SeaweedFS feature overview: S3 objects, POSIX files, table buckets with an Iceberg REST Catalog and Lance namespace, and S3 Vector Buckets share one cluster of masters, filers, and volume servers, with cloud caching, tiering, and cross-cluster replication.
- Download Binaries for different platforms
- Wiki Documentation
- HTTP REST API for the filer, master, and volume servers
- Community: Slack, Twitter, Telegram, Reddit, Mailing List
- SeaweedFS White Paper and introduction slides: 2025.5, 2021.5, 2019.3
Table of Contents
=================
Quick Start
One command
Docker
Docker Compose
Kubernetes with Helm
Build from source
Scale out
Why SeaweedFS
Fast
Scalable
The most complete S3 API
A data warehouse with S3 Tables
Vector search with S3 Vector Buckets
A fast cache for cloud storage
Active-active replication and more
Architecture
Compared to Other Systems
Compared to HDFS
Compared to GlusterFS, Ceph
Compared to MooseFS
Compared to Ceph
Compared to MinIO, RustFS
Benchmark
Enterprise
License
Sponsors
Quick Start
One command
Download the latest binary from the releases page and unzip the single weed (or weed.exe) file, or let the install script put it in /usr/local/bin:
bash
curl -fsSL https://raw.githubusercontent.com/seaweedfs/seaweedfs/master/install.sh | bash
Then start a ready-to-use S3 object store:
bash
AWS_ACCESS_KEY_ID=admin \
AWS_SECRET_ACCESS_KEY=secret \
S3_BUCKET=my-bucket \
./weed mini -dir=./data
That's it. The S3 endpoint is at http://localhost:8333, my-bucket exists, and admin/secret are valid credentials:
bash
AWS_ACCESS_KEY_ID=admin AWS_SECRET_ACCESS_KEY=secret \
aws --endpoint-url http://localhost:8333 s3 cp README.md s3://my-bucket/
The same process also runs the master, a volume server, the filer, WebDAV, the Iceberg REST catalog, and the Admin UI. Add S3_TABLE_BUCKET=warehouse to also create an Iceberg table bucket, or warehouse:LANCE for a Lance one. Drop the AWS keys to run without authentication for development.
Without Admin authentication or mTLS, weed mini binds the Admin UI/API and its worker gRPC control plane to loopback rather than -ip.bind. Set WEED_ADMIN_PASSWORD or configure https.admin mTLS to keep the network bind. Remote workers must opt in with -admin.worker.Top issues
#3886Slow S3 PUT on Filer53 comments · 2022-10-21#8908S3 API: Docker Registry blob finalization fails silently, resulting in corrupted/missing blobs32 comments · 2026-04-03#6121Freed volumes are lost after restart and recurrent inconsistent state of volume services (LookupFileId)32 comments · 2024-10-14#6474EC encode completed but volume not spread nor mounted30 comments · 2025-01-24#10020Weed Fuse with large drives uses gigs of memory28 comments · 2026-06-19#15812.07: spurious errors on FUSE mount25 comments · 2020-10-29#891add docker volume driver20 comments · 2019-03-20#8455Once again my volumes are full and I can't clear them (lots of orphaned files)19 comments · 2026-02-26
Discussions
#12361Proper way to change filler backend?3 comments · 2026-11-03#12282Optional preservation of S3 user metadata in filer.backup.1 comments · 2026-10-31#12271Custom master ports for clients to use1 comments · 2026-10-31#12125Migrating to another swfs instance1 comments · 2026-10-27#11961How to configure EC shard placement only to 1 DC/Rack1 comments · 2026-10-22#11949filer.sync with levelDb store limitation ?1 comments · 2026-10-22#11826Path based Kafka notification configuration1 comments · 2026-10-19#11824Adding path_prefixes filter in notification.kafka does not work1 comments · 2026-10-19
Latest release
4.53 4.53 2026-11-08What's Changed fix(s3tables,s3vectors): bind DeleteNamespace and the vector bucket cleanup to the authorized records by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12331 filer: allow renaming into a sibling that shares the name prefix by @fazpu in https://github.com/seaweedfs/seaweedfs/pull/12337 compression: compress JSON uploads, and match file types by extension by @patwhite in https://github.com/seaweedfs/seaweedfs/pull/12339 filer: reuse IsEqualOrUnder for the rename subdirectory check by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/12338 s3vectors: support