A collection of tools, libraries, links and discussions about running IPFS and libp2p on mobile (iOS & Android), using gomobile.

One of the methods of running IPFS on mobile is to embed a whole go-ipfs instance on mobile using gomobile. It works, and it is beautiful.

However, the mobile world comes with its problems and limitations that will ask everyone starting this journey to invest some time configuring everything.

This repo aims to provide useful libraries, tools, and pieces of information to help you focus on your app and not on the setup.

Problems & limitations of the mobile world

  • Network connections through cellular connectivity
  • Limited resources (CPU, RAM, Network, …)
  • App killed quite often (quick switch between foreground and background)
  • Many operations are by request


  • Things we’ve all tried at Berty and Textile
    • Limit the number of goroutines
    • Lower watermarks in conn manager
    • Use QUIC transport to be more resilient in case of switching between wifi/cellular
    • Background uploads & tasks
    • Connections prioritization by assigning them weight depending on their types, the platform and the connectivity context
  • Solutions we’d like to see
    • Native libp2p implementations
    • Better discovery of peers
    • Better caching solutions to avoid a long warm-up that doesn’t fit in a short time frame (switch foreground -> background)
  • Shared resources for mobile IPFS best practices

Back to docs