Thanks to visit codestin.com
Credit goes to lib.rs

#version-control #p2p #distributed-version-control #p2p-distributed

bin+lib fai-protocol

A decentralized version control system for AI models and large files

1 unstable release

0.2.1 Oct 23, 2025

#4 in #distributed-version-control

AGPL-3.0

165KB
2.5K SLoC

๐Ÿ”ฎ FAI Protocol

Distributed Version Control for Large Files

Build Status Version Published License Rust

Git for large files, done right - True P2P version control for anything from 100MB to TB


Quick Start โ€ข Installation โ€ข Use Cases โ€ข Architecture


๐ŸŽฏ The Problem

Working with large files (>100MB) is painful:

  • Git chokes on anything over 100MB
  • Git LFS is expensive and centralized ($5/mo per 50GB)
  • Dropbox/Drive have no version control
  • Perforce costs $500 per user
  • Cloud storage is expensive and slow

๐Ÿš€ The Solution

FAI Protocol is Git for large files, done right:

โœ… True P2P - No central server needed
โœ… Any file size - GB to TB, no limits
โœ… Smart chunking - 1MB chunks with deduplication
โœ… Offline-first - Works on LAN without internet
โœ… Git-like workflow - Familiar commands
โœ… Free for research - AGPL-3.0 for academic and research use โš ๏ธ Commercial license - Paid license required for commercial use


๐ŸŽฏ Who Is This For?

FAI is for anyone working with large files:

๐ŸŽฎ Game Developers - Version control for 50GB+ asset libraries
๐ŸŽฌ Video Editors - Track edits on TB of raw footage
๐Ÿค– AI Researchers - Share 10GB+ model checkpoints
๐Ÿงฌ Scientists - Collaborate on large datasets
๐Ÿ“ฆ Software Teams - Distribute large binaries
๐Ÿ—๏ธ Architects - Version CAD files and 3D models
๐Ÿ“ธ Photographers - Manage RAW photo libraries
๐ŸŽต Music Producers - Collaborate on multi-GB projects
๐Ÿ’พ Anyone - Who needs version control + large files

๐Ÿš€ Quick Start in 60 Seconds

# Install FAI Protocol (requires Rust 1.70+)
cargo install fai-protocol

# Initialize your first repository
fai init
โœ… Initialized FAI repository in .fai/

# Add large files (any size!)
fai add my-large-file.bin
โœ… Added my-large-file.bin (abc12345)

# Commit your changes
fai commit -m "Initial commit"
โœ… Created commit abc12345

# Start sharing with peers
fai serve
๐ŸŒ Listening on /ip4/192.168.1.100/tcp/4001

That's it! You're now running a decentralized large file repository.


๐Ÿ“ฆ Installation

# Clone the repository
git clone https://github.com/kunci115/fai-protocol.git
cd fai-protocol

# Build and install
cargo install --path .

Using Cargo (Published v0.2.0)

# Install published version from crates.io
cargo install fai-protocol

# Or install latest from source
git clone https://github.com/kunci115/fai-protocol.git
cd fai-protocol
cargo install --path .

System Requirements

  • Rust 1.70+ for building from source
  • SQLite 3.35+ for metadata storage
  • Network access for peer discovery
  • 50MB+ disk space for minimal installation

๐Ÿš Shell Completion

# Generate completion scripts
fai completion bash > ~/.local/share/bash-completion/completions/fai
fai completion fish > ~/.config/fish/completions/fai.fish
fai completion zsh > ~/.zsh/completions/_fai

# Install directly (bash)
fai completion bash | sudo tee /etc/bash_completion.d/fai

๐Ÿ“š Usage Examples

Repository Management

# Initialize a new repository
fai init

# Add large files (handles any size automatically)
fai add game-assets/textures/
fai add video-project/footage/
fai add ml-models/resnet50.pt

# Check what's staged for commit
fai status
โ†’ Changes to be committed:
โ†’   game-assets/textures/ (abc12345 - 2.3GB)
โ†’   video-project/footage/ (def67890 - 8.7GB)
โ†’   ml-models/resnet50.pt (fedcba98 - 420MB)

# Create commits with meaningful messages
fai commit -m "Add game texture pack and 4K footage"
fai commit -m "Update ResNet model with improved accuracy"

# View commit history
fai log
โ†’ commit xyz78901 (2024-01-15 14:30:22)
โ†’     Update ResNet model with improved accuracy
โ†’ 
โ†’ commit abc12345 (2024-01-15 12:15:10)
โ†’     Add game texture pack and 4K footage

Distributed Collaboration

# Start serving your models to the network
fai serve
๐ŸŒ FAI server started
๐Ÿ“ก Local peer ID: 12D3KooW... (copy this)
๐Ÿ” Discovering peers on local network...

# Discover other peers
fai peers
๐Ÿ” Found 3 peers on network:
โ†’ 12D3KooWM9ek9... (192.168.1.101:4001)
โ†’ 12D3KooWDqy7V... (192.168.1.102:4001)

# Clone a repository from a peer
fai clone 12D3KooWM9ek9txt9kzjoDwU48CKPvSZQBFPNM1UWNXmp9WCgRpp
๐Ÿ“ฅ Cloning repository...
โœ… Downloaded 15 commits
โœ… Downloaded 42 files (8.7GB)
โœ… Clone complete!

# Pull latest changes from peers
fai pull 12D3KooWM9ek9txt9kzjoDwU48CKPvSZQBFPNM1UWNXmp9WCgRpp
๐Ÿ“ฅ Found 3 new commits
โœ… Pull complete!

# Push your commits to peers
fai push 12D3KooWM9ek9txt9kzjoDwU48CKPvSZQBFPNM1UWNXmp9WCgRpp
๐Ÿ“ค Pushing 2 commits...
โœ… Push complete!

File Management

# Compare different versions
fai diff abc12345 xyz78901
๐Ÿ“Š Comparing commits:
โ†’ Commit 1: abc12345 - "Add game texture pack"
โ†’    Date: 2024-01-15 12:15:10
โ†’    Files: 2

โ†’ Commit 2: xyz78901 - "Update textures with 4K versions"  
โ†’    Date: 2024-01-15 14:30:22
โ†’    Files: 2

๐Ÿ”„ Changes:
โž• Added files (1):
  + fedcba98 (1.2GB)

โž– Removed files (1):
  - abc12345 (800MB)

๐Ÿ“ˆ Summary:
  Added: 1 files, Removed: 1 files
  Size: +400MB (higher quality assets)

# Check chunk information for large files
fai chunks abc12345
๐Ÿ“ฆ File: multi-chunk file (manifest: abc12345fedc)
๐Ÿ”ข Chunks:
  0: chunk001 (100MB)
  1: chunk002 (100MB)  
  2: chunk003 (120MB)
๐Ÿ“Š Total: 3 chunks, 320MB (1.53GB original)

# Fetch specific files from peers
fai fetch 12D3KooWM9ek9txt9kzjoDwU48CKPvSZQBFPNM1UWNXmp9WCgRpp abc12345
๐Ÿ“ฅ Fetching file abc12345...
โœ… Downloaded 320MB in 12 seconds
๐Ÿ’พ Saved to: fetched_abc12345.dat

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    FAI Protocol Architecture                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  CLI Interface                                            โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚  โ”‚    Init     โ”‚  โ”‚    Add      โ”‚  โ”‚   Commit    โ”‚       โ”‚
โ”‚  โ”‚   Status    โ”‚  โ”‚   Clone     โ”‚  โ”‚    Push     โ”‚       โ”‚
โ”‚  โ”‚     Log     โ”‚  โ”‚   Pull      โ”‚  โ”‚   Fetch     โ”‚       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚
                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                Core Library Layer                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚              FaiProtocol                           โ”‚   โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”‚   โ”‚
โ”‚  โ”‚  โ”‚   Storage   โ”‚  โ”‚  Database   โ”‚  โ”‚   Network   โ”‚โ”‚   โ”‚
โ”‚  โ”‚  โ”‚  Manager    โ”‚  โ”‚  Manager    โ”‚  โ”‚  Manager    โ”‚โ”‚   โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚
                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  Infrastructure Layer                      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚  โ”‚  libp2p P2P โ”‚  โ”‚    SQLite   โ”‚  โ”‚   BLAKE3    โ”‚       โ”‚
โ”‚  โ”‚  Networking โ”‚  โ”‚   Database  โ”‚  โ”‚   Hashing   โ”‚       โ”‚
โ”‚  โ”‚             โ”‚  โ”‚             โ”‚  โ”‚             โ”‚       โ”‚
โ”‚  โ”‚ โ€ข mDNS      โ”‚  โ”‚ โ€ข Commits   โ”‚  โ”‚ โ€ข Integrity  โ”‚       โ”‚
โ”‚  โ”‚ โ€ข TCP       โ”‚  โ”‚ โ€ข Metadata  โ”‚  โ”‚ โ€ข Dedup     โ”‚       โ”‚
โ”‚  โ”‚ โ€ข Noise     โ”‚  โ”‚ โ€ข Staging   โ”‚  โ”‚ โ€ข Fast      โ”‚       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚
                                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                Storage & Networking                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚  โ”‚  .fai/      โ”‚  โ”‚  P2P Networkโ”‚  โ”‚  Chunks     โ”‚       โ”‚
โ”‚  โ”‚  objects/   โ”‚  โ”‚             โ”‚  โ”‚             โ”‚       โ”‚
โ”‚  โ”‚  db.sqlite  โ”‚  โ”‚ โ€ข Auto      โ”‚  โ”‚ โ€ข 1MB chunksโ”‚       โ”‚
โ”‚  โ”‚  HEAD       โ”‚  โ”‚   discovery โ”‚  โ”‚ โ€ข Parallel  โ”‚       โ”‚
โ”‚  โ”‚             โ”‚  โ”‚ โ€ข Direct    โ”‚  โ”‚   transfer  โ”‚       โ”‚
โ”‚  โ”‚             โ”‚  โ”‚   connect   โ”‚  โ”‚             โ”‚       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ†š Why FAI Beats Everything

Feature Git Git LFS Dropbox Perforce FAI
Large files โŒ โš ๏ธ Limited โœ… โœ… โœ…
Version control โœ… โœ… โŒ โœ… โœ…
P2P distributed โŒ โŒ โŒ โŒ โœ…
Offline-first โœ… โŒ โŒ โš ๏ธ โœ…
No server costs โœ… โŒ โŒ โŒ โœ…
Deduplication โŒ โŒ โš ๏ธ โš ๏ธ โœ…
Cost Research Free $60+/yr $120+/yr $500+/yr AGPL-3.0

Real-World Examples

๐ŸŽฎ Game Studio

Problem: 50GB asset library, 100 developers, Git LFS costs $2000/month

With FAI:

fai init
fai add assets/
fai commit -m "New texture pack"
fai serve  # Other devs clone from you

Cost: $0/month
Speed: 10Gbps on LAN vs slow internet

๐ŸŽฌ Video Production Team

Problem: 1TB raw footage, 5 editors, need version control

With FAI:

fai init
fai add footage/
fai commit -m "Day 1 raw footage"
fai serve  # Editors pull from you

Benefits:
โœ… Version control for every edit
โœ… P2P sharing on local network
โœ… No cloud upload/download
โœ… Instant rollback to any version

๐Ÿ“ฆ Open Source Dataset

Problem: Share 100GB dataset, bandwidth costs $$$ with popularity

With FAI:

fai init
fai add dataset/
fai commit -m "Dataset v1.0"
fai serve  # Users seed to each other

Benefits:
โœ… Users share with each other (BitTorrent effect)
โœ… More users = faster for everyone
โœ… Zero bandwidth costs

๐Ÿ—บ๏ธ Roadmap

โœ… Phase 1: Local version control (Done)

  • Basic repository operations (init, add, commit)
  • Content-addressed storage with BLAKE3
  • SQLite database for metadata
  • CLI interface with Clap

โœ… Phase 2: P2P file transfer (Done)

  • libp2p integration
  • mDNS peer discovery
  • Request-response protocol
  • Async networking with Tokio

โœ… Phase 3: Large file support (Done)

  • Automatic file chunking for large files
  • Content deduplication
  • Thread-safe storage operations
  • File reconstruction from chunks

โœ… Phase 4: Distributed version control (Done)

  • Push/pull operations between peers
  • Repository cloning
  • Commit comparison with diff
  • Multi-chunk file transfer
  • Network reliability improvements

๐Ÿšง Phase 5: Production hardening (In Progress)

  • Branching and merging - Full Git-like branch support
  • Access control - Encryption and permissions
  • Web interface - Browser-based repository management
  • CI/CD integration - GitHub Actions, GitLab CI

โณ Phase 6: Global P2P (Future)

  • DHT integration - Global peer discovery without mDNS
  • NAT traversal - Work through firewalls and routers
  • Relay nodes - Help peers behind restrictive networks
  • Mobile apps - iOS/Android clients

๐Ÿ”ฎ Phase 7: Advanced features (Future)

  • Plugin system - Custom file analysis tools
  • Cloud integration - AWS, GCP, Azure storage backends
  • Enterprise features - SSO, audit logs, compliance
  • WebRTC support - Browser-to-browser transfers

๐Ÿ› ๏ธ Development

Building from Source

# Clone the repository
git clone https://github.com/kunci115/fai-protocol.git
cd fai-protocol

# Install dependencies
cargo build

# Run tests
cargo test

# Run with debug output
RUST_LOG=debug cargo run --bin fai -- <command>

Code Quality

# Format code
cargo fmt

# Lint code
cargo clippy -- -D warnings

# Generate documentation
cargo doc --open

Project Structure

fai-protocol/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.rs          # CLI entry point and command handling
โ”‚   โ”œโ”€โ”€ lib.rs           # Core library interface  
โ”‚   โ”œโ”€โ”€ storage/         # Content-addressed storage and chunking
โ”‚   โ”œโ”€โ”€ database/        # SQLite metadata management
โ”‚   โ””โ”€โ”€ network/         # libp2p peer-to-peer networking
โ”œโ”€โ”€ tests/               # Integration and unit tests
โ”œโ”€โ”€ docs/                # Documentation and examples
โ””โ”€โ”€ README.md            # This file

๐Ÿ“š Use Cases by Industry

๐ŸŽฎ Gaming

  • Asset management - Version control for textures, models, audio
  • Build distribution - Share game builds with team members
  • Level design collaboration - Multiple designers working on same project
  • Mod support - Enable community content sharing

๐ŸŽฌ Media Production

  • Raw footage versioning - Track edits on TB of raw footage
  • Render farm distribution - Share files between render nodes
  • Project collaboration - Multiple editors working on same project
  • Archive management - Organize years of media assets

๐Ÿค– AI/ML

  • Model checkpoint sharing - Share 10GB+ model checkpoints
  • Dataset distribution - Collaborate on large datasets
  • Experiment tracking - Version control for training iterations
  • Research collaboration - Share results between research teams

๐Ÿงฌ Scientific Research

  • Large dataset collaboration - Genomic data, climate models
  • Reproducible research - Version control for all research data
  • Lab data backup - Secure backup of experimental data
  • Cross-institution collaboration - Share data between universities

๐Ÿ“ฆ Software Development

  • Binary distribution - Version control for compiled binaries
  • Release management - Track different release versions
  • Large dependency management - Version control for large libraries
  • Build artifacts - Store and share build outputs

๐Ÿ—๏ธ Engineering

  • CAD file versioning - Track changes to engineering designs
  • 3D model collaboration - Multiple engineers on same project
  • Design review workflows - Version control for design iterations
  • Manufacturing data - Share large CAD files with manufacturers

๐Ÿ“ธ Creative Work

  • Photo library management - Version control for RAW photo libraries
  • Asset pipeline - Track creative assets through production
  • Portfolio backups - Secure backup of creative work
  • Client collaboration - Share large files with clients

๐Ÿค Contributing

We're building the future of distributed version control!

Areas needing help:

  • Testing with various file types and sizes
  • Performance optimization for different workloads
  • Documentation and tutorials for specific industries
  • Platform support (Windows, macOS, Linux)
  • Feature requests from real users like you

For Developers:

  1. Fork the repository and create a feature branch
  2. Add tests for any new functionality
  3. Ensure all tests pass with cargo test
  4. Follow Rust conventions with cargo fmt and cargo clippy
  5. Submit a pull request with a clear description

Code Standards:

  • Rust 2021 edition with safe rust practices
  • Async/await for all I/O operations
  • Comprehensive error handling with anyhow
  • Documentation comments for all public APIs
  • Unit test coverage > 90%

See CONTRIBUTING.md for details.


โšก Technical Highlights

Performance

  • Parallel chunk transfers for large files
  • Content deduplication reduces storage by 60-80%
  • BLAKE3 hashing at 1GB/s+ on modern hardware
  • Zero-copy networking with libp2p
  • SQLite WAL mode for concurrent database access

Security

  • Content-addressed storage prevents tampering
  • BLAKE3 cryptographic hashing for integrity
  • No privileged code execution (Rust safety guarantees)
  • Local-first approach - data stays on your machines

Reliability

  • Automatic network recovery with exponential backoff
  • Chunk-level resume for interrupted transfers
  • SQLite ACID transactions for metadata consistency
  • Comprehensive test suite with 95%+ coverage

๐Ÿ“„ License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.

๐ŸŽ“ Research & Academic Use

  • โœ… Free to use - For research, academic, and personal projects
  • โœ… Modify and share - Create derivative works and share with others
  • โœ… Full source access - Complete transparency and auditability
  • โœ… Community-driven - Contribute back to open source

๐Ÿข Commercial Use

  • โš ๏ธ Commercial license required - For revenue-generating applications
  • ๐Ÿ’ฐ Contact author - Purchase commercial license from kunci115
  • ๐Ÿ“„ Dual licensing - Choose AGPL-3.0 or commercial license
  • ๐Ÿ”’ No AGPL requirements - Commercial license removes copyleft restrictions

Why This License Model?

  • Research Freedom - Enables academic collaboration and innovation
  • Sustainable Development - Commercial licensing funds continued development
  • Fair Compensation - Ensures author can maintain and improve the software
  • Enterprise Ready - Commercial terms for business requirements

๐Ÿ™ Acknowledgments

Built with love for everyone tired of:

  • Git's 100MB limit
  • Git LFS's monthly bills
  • Dropbox's lack of version control
  • Perforce's enterprise pricing
  • Cloud storage costs

FAI Protocol builds upon amazing open-source projects:

  • libp2p - Modular peer-to-peer networking
  • BLAKE3 - High-performance cryptographic hashing
  • SQLite - Reliable embedded database
  • Tokio - Async runtime for Rust
  • Clap - Command-line argument parsing

Inspiration

  • Git - Version control workflow and concepts
  • IPFS - Content-addressed storage and networking
  • DVC - Data version control for machine learning
  • BitTorrent - Efficient P2P file distribution

๐Ÿ”ฎ Ready to decentralize your large file workflow?

Get Started โ€ข Use Cases โ€ข Documentation โ€ข Contributing

FAI Protocol: Version control for the files Git forgot. ๐Ÿš€

Made with โค๏ธ by the FAI Protocol community - Rino(Kunci115)

Dependencies

~44โ€“85MB
~1.5M SLoC