Ferripfs is a Rust port of Kubo (the reference Go implementation of IPFS), providing full compatibility with Kubo v0.39.0.
About Kubo: Kubo (formerly go-ipfs) is the original and most widely used IPFS implementation, developed by Protocol Labs. Ferripfs aims to be a drop-in replacement, using the same repository format, configuration, CLI interface, and network protocols. For detailed IPFS documentation, see the official IPFS docs and Kubo documentation.
- Full CLI Compatibility: 119 of 124 Kubo commands implemented
- Repository Compatible: Uses the same
~/.ipfsformat as Kubo - Network Compatible: Connects to the IPFS network alongside Kubo nodes
- Remote Pinning: Supports IPFS Pinning Service API (Pinata, Web3.Storage, etc.)
- MFS Support: Mutable File System for familiar file operations
- HTTP Gateway: Serve content over HTTP
- Written in Rust: Memory safety, performance, and reliability
Build from source:
git clone https://codeberg.org/dpp/ferripfs
cd ferripfs
cargo build --release# Initialize a new IPFS repository
ferripfs init
# Add a file
echo "Hello IPFS" | ferripfs add
# added QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn
# Retrieve content
ferripfs cat QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn
# Start the daemon for network access
ferripfs daemon| Document | Description |
|---|---|
| Quickstart Guide | Get started with ferripfs |
| Migration from Kubo | Coming from Kubo? Start here |
| Configuration | Configuration reference |
| Troubleshooting | Fix common issues |
| Known Limitations | What's not yet implemented |
| HTTP API Reference | REST API documentation |
| Architecture | System design overview |
| Example | Description |
|---|---|
| Add and Cat | Basic content operations |
| MFS Workflow | Mutable File System usage |
| Remote Pinning | Using pinning services |
| Library Usage | Using ferripfs as a Rust library |
Ferripfs implements 119 of 124 Kubo v0.39.0 commands. See PARITY.md for the complete list.
| Category | Commands |
|---|---|
| Basic | add, cat, get, ls, refs |
| Files (MFS) | files ls, files cp, files mkdir, files mv, files read, files rm, files stat, files write |
| DAG | dag get, dag put, dag resolve, dag import, dag export, dag stat |
| Pinning | pin add, pin ls, pin rm, pin remote add, pin remote ls, pin remote rm |
| Names (IPNS) | name publish, name resolve, name inspect |
| Network | id, swarm peers, swarm connect, ping, dht findprovs, pubsub |
| Repository | repo gc, repo stat, repo verify, config |
mount- FUSE filesystem mountingfilestore ls/verify/dups- Filestore commandsobject diff- Object comparison
Ferripfs uses the same repository format as Kubo. You can:
- Use your existing
~/.ipfsdirectory - Switch between Kubo and ferripfs freely
- Share the same identity and configuration
# Stop Kubo
ipfs shutdown
# Use ferripfs with same repo
ferripfs daemon- Rust 1.75 or later
- Cargo
git clone https://codeberg.org/dpp/ferripfs
cd ferripfs
cargo build --releaseThe binary will be at ./target/release/ferripfs.
cargo testferripfs/
├── bin/ferripfs/ # CLI binary
├── crates/
│ ├── ferripfs-config/ # Configuration
│ ├── ferripfs-repo/ # Repository management
│ ├── ferripfs-blockstore/# Block storage
│ ├── ferripfs-dag/ # IPLD DAG operations
│ ├── ferripfs-unixfs/ # File representation
│ ├── ferripfs-mfs/ # Mutable File System
│ ├── ferripfs-pinning/ # Pin management
│ ├── ferripfs-bitswap/ # Block exchange protocol
│ ├── ferripfs-dht/ # Distributed Hash Table
│ └── ferripfs-network/ # Network types
├── docs/ # Documentation
├── examples/ # Usage examples
├── tests/ # Integration tests
└── fuzz/ # Fuzz testing
The following library crates are available on crates.io:
| Crate | Description |
|---|---|
| ferripfs-config | Configuration management |
| ferripfs-repo | Repository, keystore, and identity |
| ferripfs-blockstore | Content-addressed block storage |
| ferripfs-dag | IPLD DAG operations (DAG-PB, DAG-CBOR, CAR) |
| ferripfs-unixfs | UnixFS file representation |
| ferripfs-mfs | Mutable File System |
| ferripfs-pinning | Pin management |
| ferripfs-network | libp2p networking (DHT, Bitswap) |
Contributions are welcome! Please see:
- CONTRIBUTING.md - How to contribute
- PORTING_GUIDE.md - Guidelines for porting Kubo code
This project is a port of Kubo, originally developed by Protocol Labs and the IPFS community. See ATTRIBUTION.md for full acknowledgments.
Dual-licensed under MIT and Apache-2.0, at your option.