Skip to content

dpp/ferrisipfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Ferripfs

Build Status Crates.io Documentation License

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.

Features

  • Full CLI Compatibility: 119 of 124 Kubo commands implemented
  • Repository Compatible: Uses the same ~/.ipfs format 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

Quick Start

Installation

Build from source:

git clone https://codeberg.org/dpp/ferripfs
cd ferripfs
cargo build --release

Initialize and Run

# 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

Documentation

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

Examples

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

Command Parity

Ferripfs implements 119 of 124 Kubo v0.39.0 commands. See PARITY.md for the complete list.

Commands Overview

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

Not Yet Implemented

  • mount - FUSE filesystem mounting
  • filestore ls/verify/dups - Filestore commands
  • object diff - Object comparison

Repository Compatibility

Ferripfs uses the same repository format as Kubo. You can:

  • Use your existing ~/.ipfs directory
  • Switch between Kubo and ferripfs freely
  • Share the same identity and configuration
# Stop Kubo
ipfs shutdown

# Use ferripfs with same repo
ferripfs daemon

Building from Source

Prerequisites

  • Rust 1.75 or later
  • Cargo

Build

git clone https://codeberg.org/dpp/ferripfs
cd ferripfs
cargo build --release

The binary will be at ./target/release/ferripfs.

Run Tests

cargo test

Project Structure

ferripfs/
├── 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

Crates

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)

Contributing

Contributions are welcome! Please see:

Attribution

This project is a port of Kubo, originally developed by Protocol Labs and the IPFS community. See ATTRIBUTION.md for full acknowledgments.

License

Dual-licensed under MIT and Apache-2.0, at your option.

Links

About

No description, website, or topics provided.

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages