ππ FiNo - Secure File Sharing via IPFS + Nostr
FiNo (File + Nostr) is a decentralized, secure file sharing tool that combines IPFS storage with Nostr messaging for truly anonymous and censorship-resistant file transfers.
π Features
- π End-to-End Encryption: AES-256-GCM + ECDH key exchange
- π Decentralized: No central servers, works globally
- π Completely Free: No API keys, no registration required
- β‘ Real-Time: Instant file sharing via Nostr DMs
- π Privacy-Focused: No central servers, no tracking
- ποΈ Smarter Transfers: Files are compressed (gzip) before encryption by default
- π¨ Beautiful CLI: Rich-powered output with panels, colors and emojis
π Quick Start
1. Install FiNo
pip install pyfino
2. Install IPFS (one-time setup)
# macOS
brew install ipfs
# Linux
curl -O https://dist.ipfs.io/go-ipfs/v0.36.0/go-ipfs_v0.36.0_linux-amd64.tar.gz
tar -xvzf go-ipfs_v0.36.0_linux-amd64.tar.gz
sudo mv go-ipfs/ipfs /usr/local/bin/
# Windows
# Download from https://ipfs.io/docs/install/
3. Initialize IPFS (one-time setup)
ipfs init
sudo brew services start ipfs # macOS
# or: ipfs daemon & # Linux/Windows
4. Generate your keys
fino gen-key
5. Send a file
fino send document.pdf --to npub1abc... --from nsec1xyz...
6. Receive files
fino receive --from nsec1xyz...
7. Show version
fino --version
π€ How It Works (ELI5)
The Problem
- Traditional file sharing needs central servers (Google Drive, Dropbox)
- These can be shut down, censored, or hacked
- They know who you are and what you're sharing
The Solution
FiNo splits file sharing into two parts:
-
π File Storage (IPFS)
- Files are stored on a global network (like a giant, distributed hard drive)
- No single point of failure
- Files are accessible from anywhere in the world
- Free forever - no company owns it
-
π¨ File Location (Nostr)
- The "address" of your file is sent via Nostr (like a decentralized email)
- Only the person you send it to can find the file
- No central server controls the messages
Behavior & Defaults
- Files are automatically compressed with gzip before encryption to reduce transfer size (media like .mp4/.jpg may not shrink).
- IPFS announce (provider routing) is performed in the background to minimize blocking; global discoverability may take a few seconds after send.
How It's Free
- IPFS: Community-run network, no company owns it
- Nostr: Decentralized messaging protocol, no company owns it
- No API keys: You're not using anyone's service
- No registration: You're just using open protocols
π Security Features
- AES-256-GCM: Military-grade file encryption
- ECDH: Perfect forward secrecy for metadata
- Zero-knowledge: No one can see your files except the intended recipient
- End-to-end encryption: Files encrypted before transmission
- Compress-before-encrypt: Reduces plaintext patterns and metadata hints before encryption, and shrinks size for faster, cheaper transfers
- Decentralized: No central point of failure
π¦ Installation Details
Requirements
- Python 3.8+
- IPFS daemon
- Internet connection
π¨ Important Notes
- Experimental software - Use at your own risk
- Keep your nsec private - Never share your private key
- Backup your keys - If you lose them, you can't access your files
- IPFS persistence - Files may be removed if not pinned by someone
β‘ Performance Tips
- Start the IPFS daemon before sending to keep it "warm":
ipfs daemon - Your sender upload speed is the main bottleneck for total time; compression helps most for text/JSON/CSV, not for videos/images/ZIPs.
- Receivers may need a few seconds after you send for background DHT announce to propagate; if a fetch fails immediately, retry once.
π Useful Links
π License
MIT License - see LICENSE file for details.
β οΈ Disclaimer: This is experimental software for innovation research only. Use responsibly and in accordance with local laws.