Repository navigation
Description
Overview
Is your feature request related to a problem? Please describe.
With the recent shifts in licensing and the deprecation of some older object storage components (such as MinIO becoming less viable for certain open-source/enterprise scenarios without strict AGPL compliance), there is a growing need for a highly performant, scalable, and flexible storage alternative in the .NET Aspire ecosystem.
SeaweedFS (https://github.com/seaweedfs/seaweedfs) is an excellent, highly scalable distributed file system that provides both a Native Filer API and an S3-compatible gateway. It is lightweight, extremely fast, and solves the need for a reliable object/file storage component.
Describe the solution you'd like
I propose adding a complete integration for SeaweedFS to the Community Toolkit, consisting of both Hosting and Client packages.
Hosting Integration (CommunityToolkit.Aspire.Hosting.SeaweedFS):
A robust resource builder that allows developers to easily spin up a SeaweedFS cluster and opt-in to the specific APIs they need:
WithS3(): Enables the S3-Compatible API Gateway.WithFiler(): Enables the Native Filer API.WithDataVolume()/WithDataBindMount(): For state persistence.
Client Integration (CommunityToolkit.Aspire.SeaweedFS.Client):
Seamless dependency injection for consuming the cluster APIs:
AddSeaweedFSS3Client(): Wires up the standardAWSSDK.S3IAmazonS3client securely to the Aspire container.AddSeaweedFSFilerClient(): Registers a strongly-typedHttpClientfor ultra-fast native Filer API operations.- Built-in Health Checks for both S3 and Filer endpoints.
Usage example
1. AppHost Configuration (Hosting):
Developers can spin up the cluster, opt-in to the S3 Gateway or Native Filer, and persist data using volumes:
var builder = DistributedApplication.CreateBuilder(args);
// Provisions SeaweedFS with S3 Gateway enabled (implicitly enables Filer for metadata)
var seaweedfs = builder.AddSeaweedFS("seaweedfs")
.WithS3()
.WithDataVolume();
builder.AddProject<Projects.ApiService>("apiservice")
.WithReference(seaweedfs);
builder.Build().Run();2. Consuming the APIs (Client):
In the consuming project, developers can easily inject the standard AWS S3 client or the strongly-typed Filer HTTP client. The integration handles the dynamic endpoints automatically.
var builder = WebApplication.CreateBuilder(args);
// Registers IAmazonS3 configured for the SeaweedFS S3 Gateway
builder.AddSeaweedFSS3Client("seaweedfs");
// Registers a strongly-typed HttpClient for native SeaweedFS Filer operations
builder.AddSeaweedFSFilerClient("seaweedfs");Additional context
I have already fully implemented this feature locally to ensure it fits the .NET Aspire architectural guidelines. The implementation includes:
CommunityToolkit.Aspire.Hosting.SeaweedFS: AppHost resource builder with dynamic endpoint routing (WithS3,WithFiler,WithDataVolume, etc.).CommunityToolkit.Aspire.SeaweedFS.Client: Dependency injection extensions forIAmazonS3andSeaweedFSFilerClient, including built-in health checks.- Comprehensive Tests: Unit tests and E2E functional tests using
AspireIntegrationTestFixtureand Docker. - Example App: A fully working example demonstrating both S3 and Filer endpoints.
I am ready to open a Pull Request with all the code as soon as this proposal is evaluated!
Help us help you
Yes, I'd like to be assigned to work on this item
Activity
github-actions commentedon Jun 12, 2026
We have noticed this issue has not been updated within 21 days. If there is no action on this issue in the next 14 days, we will automatically close it. You can use
/stale-extendto extend the window.