IPFS-lite: embeddable, lightweight IPFS-network peer for IPLD applications

I figure this might be of interest for some people here.

IPFS-lite is a minimal IPFS peer implementation to just provide a DAGService (Get, Put blocks to the IPFS Network) and additionally Add/Get single files (as go-ipfs does). It allows to ipfs-ify any libp2p application but also to run lightweight embedded peers that can read and write files to ipfs but do not do all the other things (ipns, mfs, stream mounting, gateway etc etc.).

It may come very handy for mobile applications, for example. It also makes putting and getting IPLD blocks to the network a painless experience.

9 Likes

this is awesome :open_mouth: Definitely going to be using this in the future

I like this. It’s also a good way to study how IPFS works, what are the packages doing, etc…

1 Like

Hi. A IPFS’ lightweight version is much appreciated. Although it gives questions:

  • Is it also lightweight in RAM usage?
  • Does it provides a single executable like IPFS does?
  • It will be available in builds for the same platforms as IPFS haves?

Also, IPFS is creating Rust versions. Simple as ipfs-lite is, it can prove how IPFS would be fully on Rust, as I’ve suggested on GitHub: https://github.com/hsanjuan/ipfs-lite/issues/6

Hey @DaniellMesquita, sorry for the late answer.

Is it also lightweight in RAM usage?

Note that ipfs-lite is not an alternative implementation of go-ipfs, but a minimal go-ipfs feature set put together for easy embedding (a DAGService). It is lightweight in the sense that it drops many things, like Pinner, GC, API, Gateway, IPNS, MFS, Folder-adding, CLI commands… So it should probably use less RAM by the mere fact that it loads less code, but still the heavy consumers are there: the libp2p host, the DHT, the reprovider, the datastore.

Does it provides a single executable like IPFS does?
It will be available in builds for the same platforms as IPFS haves?

No, though the examples show how to make an executable file that does something with it (fetching a file from the ipfs network). The role of ipfs-lite is to give applications a simple way to be able to interact with the IPFS network, fetch and put single pieces of content (usually IPLD nodes). In that sense it is NOT an alternative IPFS implementation in Go, but a complimentary tool using a minimal subset of the existing IPFS implementation.

1 Like