Helia Provider
App-owned Helia storage for web and mobile runtimes.
HeliaProvider lets an application use an app-owned Helia/UnixFS stack as the encrypted byte-storage path while preserving MeshKit client semantics.
Use it when the app owns its IPFS/libp2p runtime, especially in browser, PWA, or mobile-style environments where connecting directly to an operator Kubo RPC endpoint is not appropriate.
What The App Owns
With Helia, MeshKit does not configure libp2p for you. Your app owns:
- Helia node creation
- UnixFS adapter creation
- transports and peer discovery
- persistence and cache behavior
- browser/mobile lifecycle integration
- network permissions
- metadata service or metadata persistence strategy for MeshKit workflows
MeshKit encrypts content and calls the adapter you provide.
Example
import { createMeshkit, HeliaProvider } from "@meshkit/core";
export async function createClient(unixfs: {
addBytes(bytes: Uint8Array): Promise<{ toString(): string }>;
cat(cid: unknown): AsyncIterable<Uint8Array>;
}) {
return createMeshkit({
provider: new HeliaProvider({ unixfs }),
identity: "browser-peer",
});
}Wire the actual Helia node in your runtime-specific app layer, then pass the UnixFS API into the provider.
When To Use Helia
| Good fit | Poor fit |
|---|---|
| Browser/PWA owns in-process IPFS | Server app already has an authenticated Kubo service |
| Mobile app owns transport lifecycle | You need operator-controlled pinning/cluster behavior first |
| You want app-level peer behavior | You need a simple CLI provider config only |
Metadata Boundary
Helia handles byte storage and retrieval. MeshKit workflows still need metadata for proofs, capsules, mailboxes, sync jobs, vaults, capabilities, and logs. Decide where that metadata lives before using Helia for production sharing, messaging, sync, or policy workflows.
Production Caveats
- Browser and mobile network behavior can be limited by platform lifecycle, connectivity, and permissions.
- Persisted local IPFS data is not the same as durable multi-provider retention.
- Validate retrieval after app restart and network changes.
- Do not claim production readiness until the metadata boundary is also validated.