Loops House




Meshkit
A unified TypeScript SDK for IPFS and Filecoin storage that enables content-addressed uploads, retrieval, and synchronization across Kubo and S3-compatible providers, making decentralized storage simple for web, mobile, and server applications.

FilecoinTLDR Builder Challenge - Cycle 3
Links
Team
1 member- MAOwner
Manu Sheel Gupta
Overview
We built @ipfs-meshkit/meshkit v1.2.0, an open-source TypeScript SDK that provides a unified interface for decentralized storage across both IPFS and Filecoin-backed object storage. The SDK is designed for developers building web, mobile, and server-side applications who want to use content-addressed storage without worrying about the underlying infrastructure. Traditionally, developers using IPFS rely on a local or remote Kubo daemon. While this works well for server applications, it is difficult or impossible to run an IPFS daemon inside browsers, Ionic/Capacitor applications, React Native apps, or other mobile environments. Many Filecoin storage providers instead expose S3-compatible APIs, creating a fragmented developer experience where applications must implement different storage logic for different providers.
Meshkit solves this by exposing a single API: upload() retrieve() list() listPins() pin() that works transparently across both Kubo/IPFS and S3-compatible Filecoin storage providers.
During this development cycle, we completed several major improvements. The first milestone was integrating fil.one, a Filecoin-native S3-compatible object storage service. Since fil.one does not expose an IPFS daemon, Meshkit computes the CID locally using the multiformats library (CIDv1, raw codec, SHA2-256) and stores objects using the CID as the S3 object key. This preserves content-addressability while allowing applications to use standard S3 APIs. The second milestone was a major architectural refactor. Instead of having a fil.one-specific implementation, I introduced a generic createS3Client(config) API that supports any S3-compatible storage backend simply by changing the endpoint URL. The existing createFilOneClient() now becomes a lightweight preset on top of this generic client. This architecture immediately enables compatibility with additional Filecoin storage providers such as Lighthouse, Filebase, 4EVERLAND, Akave, and future S3-compatible services without requiring SDK changes. Another important addition was implementing native object discovery for S3 backends. Earlier versions could upload and retrieve content but could not enumerate previously stored objects. I implemented full ListObjectsV2 support with XML parsing, pagination using Continuation Tokens, filtering of non-content objects (such as manifest files), and introduced a new list() API that returns the CID, object size, and upload timestamp for every stored object. This enables applications to discover and restore previously uploaded content without maintaining separate metadata files.
The SDK now includes 154 passing unit tests covering CID generation, provider-independent storage behavior, pagination, object filtering, endpoint routing, API consistency, and compatibility between IPFS and S3 implementations.
To validate the SDK in a production-style environment, I integrated Meshkit into an Ionic/Capacitor Android invoice application. The application demonstrates a real-world decentralized backup workflow: Users configure their own fil.one bucket credentials. Every invoice is backed up by storing its JSON representation as a content-addressed object. list() discovers every stored invoice directly from the bucket without requiring a separate manifest. retrieve() restores invoices into the local SQLite database. A user can create invoices on one Android device and restore them on another device simply by selecting "Sync from fil.one."
The new list() implementation also eliminated the need for an additional AWS SDK dependency that was previously required solely for bucket discovery, significantly simplifying the application architecture. This work makes decentralized storage substantially easier for developers building mobile and browser applications. Developers no longer need to choose between running an IPFS daemon or writing provider-specific S3 code. Instead, they can build once using Meshkit's unified API and deploy across IPFS and multiple Filecoin-backed storage providers with minimal configuration changes.
By bridging IPFS content addressing with Filecoin-native object storage, Meshkit lowers the barrier to building decentralized applications while preserving interoperability, portability, and the core principles of content-addressed storage. Links: