A Rust port of Kobu (the GoLang IPFS client)
  • Rust 99.6%
  • Shell 0.3%
Find a file
David Pollak 810bed41f1
Fixed nat traversal stuff
Signed-off-by: David Pollak <feeder.of.the.bears@gmail.com>
2026-04-01 08:07:33 -04:00
.cargo Initial Commit 2026-02-07 16:18:47 -05:00
.gitea Initial Commit 2026-02-07 16:18:47 -05:00
bin/ferripfs Fixed some docs 2026-02-07 18:22:44 -05:00
crates Fixed nat traversal stuff 2026-04-01 08:07:33 -04:00
docs Initial Commit 2026-02-07 16:18:47 -05:00
examples Initial Commit 2026-02-07 16:18:47 -05:00
fuzz Initial Commit 2026-02-07 16:18:47 -05:00
scripts Initial Commit 2026-02-07 16:18:47 -05:00
tests Initial Commit 2026-02-07 16:18:47 -05:00
tools/parity-checker Initial Commit 2026-02-07 16:18:47 -05:00
.dockerignore Initial Commit 2026-02-07 16:18:47 -05:00
.gitignore Initial Commit 2026-02-07 16:18:47 -05:00
.woodpecker.yml Initial Commit 2026-02-07 16:18:47 -05:00
ATTRIBUTION.md Initial Commit 2026-02-07 16:18:47 -05:00
Cargo.lock Added support for pinning via the library 2026-03-01 19:22:01 -05:00
Cargo.toml Fixed nat traversal stuff 2026-04-01 08:07:33 -04:00
CHANGELOG.md Updated changelog 2026-02-07 18:24:35 -05:00
CODE_OF_CONDUCT.md Initial Commit 2026-02-07 16:18:47 -05:00
CONTRIBUTING.md Initial Commit 2026-02-07 16:18:47 -05:00
docker-compose.interop.yml Initial Commit 2026-02-07 16:18:47 -05:00
docker-compose.yml Initial Commit 2026-02-07 16:18:47 -05:00
Dockerfile Initial Commit 2026-02-07 16:18:47 -05:00
LICENSE-APACHE Initial Commit 2026-02-07 16:18:47 -05:00
LICENSE-MIT Initial Commit 2026-02-07 16:18:47 -05:00
PARITY.md Initial Commit 2026-02-07 16:18:47 -05:00
PLAN.md Initial Commit 2026-02-07 16:18:47 -05:00
PORTING_GUIDE.md Initial Commit 2026-02-07 16:18:47 -05:00
PUBLISHING.md Initial Commit 2026-02-07 16:18:47 -05:00
README.md Fixed some minor issues with readme 2026-02-07 19:10:52 -05:00
rustfmt.toml Initial Commit 2026-02-07 16:18:47 -05:00
SECURITY.md Initial Commit 2026-02-07 16:18:47 -05:00

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.