Is there a guide on internalizing IPFS?

I would like internalize IPFS in a Tauri application, i.e., have the IPFS binary used by the application sit inside the bundle itself. Is there a guide for doing this already? Should I literally just bundle an IPFS binary into the project and call it with std::process?

You can talk to an already installed IPFS node via Http but if you want IPFS as a crate then AFAIK there’s nothing out there (yet).

Maybe you can use rust-libp2p?

In my case, the main requirement is that the Rust daemon is spawned in a manner that is consistent with the bundle that is shipped. So, I guess I don’t need to necessarily have IPFS running as a part of my Rust binary, but instead just call an executable at a known location.

However, I think ideally IPFS would be internal to the Rust binary, so sounds like I would be waiting on a Rust crate for that next step. Perhaps, I could look into using FFIs/externs or even some more generic interprocess socket communication. However, I’m not sure that these are much better than just process execing.

rust-libp2p may need to be the longer term starting point for this project anyways, as we attempt to diverge from IPFS.

Maybe try integrating GitHub - n0-computer/iroh: The most efficient implementation of IPFS on any planet