Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions docs/concepts/ipfs-implementations.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,26 +12,33 @@ Looking into implementing IPFS yourself?
Relevant specifications are listed in [ipfs/specs](https://github.com/ipfs/specs/).
:::

## Actively maintained

| Name | URL | Language(s) | What it's trying to do |
|------------------|-------------------------------------------------------------------------|------------------------|--------------------------------------------------------------------------------------------------------------------------|
| auspinner | <https://github.com/2color/auspinner> | go | CLI tool to deal with the pinning service API and upload files through bitswap. |
| Agregore | <https://github.com/AgregoreWeb/agregore-ipfs-daemon> | go, javascript | Mobile friendly Kubo daemon. |
| barge | <https://github.com/application-research/estuary/tree/master/cmd/barge> | go | CLI tool with a git like workflow to upload deltas to estuary. |
| barge | <https://github.com/application-research/barge> | go | CLI tool with a git like workflow to upload deltas to estuary. |
| Boost | <https://github.com/filecoin-project/boost> | go | Daemon to get IPFS data in and out of a Filecoin storage provider. |
| Elastic provider | <https://github.com/ipfs-elastic-provider/ipfs-elastic-provider> | javascript, typescript | Scallable Cloud-Native implementation. |
| Estuary | <https://github.com/application-research/estuary/> | go | Daemon oriented service to pin and onboard IPFS data into Filecoin. |
| gomobile-ipfs | <https://github.com/ipfs-shipyard/gomobile-ipfs> | go | Library oriented ipfs daemon to help embeding Kubo into a mobile app. |
| ipfs cluster | <https://github.com/ipfs/ipfs-cluster> | go | CRDT / Raft consensus between some more less trusted nodes to allocate and synchronise a pinset on multiple IPFS nodes. |
| ipfs tiny | <https://gitlab.com/librespacefoundation/ipfs-tiny> | c++ | Tiny embeddable, os-independent IPFS implementation. |
| ipfs-embed | <https://github.com/ipfs-rust/ipfs-embed> | rust | Small embeddable ipfs implementation. |
| ipfs-lite | <https://github.com/hsanjuan/ipfs-lite> | go | Minimal library oriented ipfs daemon building on the same blocks as Kubo but with a minimal glue layer. |
| ipfs-nucleus | <https://github.com/peergos/ipfs-nucleus/>  | go | Minimal IPFS replacement for P2P IPLD apps. |
| ipget | <https://github.com/ipfs/ipget> | go | Minimal wget insipired tool to download files from IPFS nodes over bitswap. |
| iroh | <https://github.com/n0-computer/iroh> | rust | Extreme-Efficiency oriented IPFS implementation. |
| js-ipfs | <https://github.com/ipfs/js-ipfs> | javascript, typescript | Javascript implementation targeting nodejs and browsers. |
| Kubo | <https://github.com/ipfs/kubo> | go | Generalist daemon oriented IPFS implementation with an extensive HTTP API. |
| Linux2ipfs | <https://github.com/Jorropo/linux2ipfs> | go | Small pipeline and extreme-performance oriented implementation to upload files and deltas to pinning services very fast. |
| Lotus | <https://github.com/filecoin-project/lotus> | go | Filecoin node handling consensus, storage providing, making storage deals, importing data, ... |
| whypfs | <https://github.com/whyrusleeping/whypfs> | go | Daemon based on the same building blocks as Kubo but with some options tweaking for more performance. |

## Legacy

| Name | URL | Language(s) | What it's trying to do |
|------------------|-------------------------------------------------------------------------|------------------------|--------------------------------------------------------------------------------------------------------------------------|
| auspinner | <https://github.com/2color/auspinner> | go | CLI tool to deal with the pinning service API and upload files through bitswap. |
Copy link
Member

@2color 2color Jan 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On another thought, I think that because Auspinner still works and while not actively maintained still lives up to its promise so it may make sense to move it to Actively maintained.

However, this can be leading because its functionality is not on par with Kubo.

Therefore, If I think about this page more holistically, some ideas for better organisation come to mind:

  • Adding an experimental column
  • Adding a column for some of the IPFS subsystems, e.g.
    • IPFS Gateway ('server' or 'client')
    • IPFS Pinning API Client
    • RPC API
    • DHT (client or server)
    • Level of IPLD support (not too sure about this one, but as an example, Auspinner takes CAR files which can be UnixFS or DAG-CBOR but it can't chunk and create UnixFS blocks for you)
    • PubSub support
    • Blockstore
    • IPNS support
    • Delegated Routing Spec Support
    • Bitswap support (Lotus doesn't support as far as I know)
    • Long lived vs. ephemeral (js-ipfs, ipfs-lite)
    • NAT hole punching (Circuit Relay v2) support

| Agregore | <https://github.com/AgregoreWeb/agregore-ipfs-daemon> | go, javascript | Mobile friendly Kubo daemon. |
| ipfs tiny | <https://gitlab.com/librespacefoundation/ipfs-tiny> | c++ | Tiny embeddable, os-independent IPFS implementation. |
| ipget | <https://github.com/ipfs/ipget> | go | Minimal wget inspired tool to download files from IPFS nodes over bitswap. |
| Linux2ipfs | <https://github.com/Jorropo/linux2ipfs> | go | Small pipeline and extreme-performance oriented implementation to upload files and deltas to pinning services very fast. |
| py-ipfs | <https://github.com/ipfs-shipyard/py-ipfs> | python | Python IPFS implementation. |
| rust-ipfs | <https://github.com/rs-ipfs/rust-ipfs> | rust | Rust IPFS implementation. |
| whypfs | <https://github.com/whyrusleeping/whypfs> | go | Daemon based on the same building blocks as Kubo but with some options tweaking for more performance. |