# 🔐📁 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-CBC + 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
## 🚀 Quick Start
### 1. Install FiNo
```bash
pip install pyfino
```
### 2. Install IPFS (one-time setup)
```bash
# 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)
```bash
ipfs init
brew services start ipfs # macOS
# or: ipfs daemon & # Linux/Windows
```
### 4. Generate your keys
```bash
fino gen-key
```
### 5. Send a file
```bash
fino send document.pdf --to npub1abc... --from nsec1xyz...
```
### 6. Receive files
```bash
fino receive --from nsec1xyz...
```
## 🤔 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:
1. **📁 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
2. **📨 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
### **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-CBC**: 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
- **Decentralized**: No central point of failure
## 📦 Installation Details
### Requirements
- Python 3.8+
- IPFS daemon
- Internet connection
### Dependencies
- `cryptography`: Encryption
- `pynostr`: Nostr protocol
- `requests`: HTTP requests
- `rich`: Beautiful CLI
- `typer`: Command-line interface
## 🚨 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
## 🔗 Useful Links
- [IPFS Documentation](https://docs.ipfs.io/)
- [Nostr Protocol](https://github.com/nostr-protocol/nostr)
- [FiNo GitHub](https://github.com/yourusername/fino)
## 📄 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.
Raw data
{
"_id": null,
"home_page": null,
"name": "pyfino",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "nostr, ipfs, encryption, file-sharing, proof-of-concept, innovation",
"author": "arnispen",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/43/a7/509907283bc6e113f071ec73660740b2099bbde427c7e1fffdff334aea8b/pyfino-0.2.1.tar.gz",
"platform": null,
"description": "# \ud83d\udd10\ud83d\udcc1 FiNo - Secure File Sharing via IPFS + Nostr\n\n**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.\n\n## \ud83c\udf1f Features\n\n- **\ud83d\udd10 End-to-End Encryption**: AES-256-CBC + ECDH key exchange\n- **\ud83c\udf10 Decentralized**: No central servers, works globally\n- **\ud83c\udd93 Completely Free**: No API keys, no registration required\n- **\u26a1 Real-Time**: Instant file sharing via Nostr DMs\n- **\ud83d\udd12 Privacy-Focused**: No central servers, no tracking\n\n## \ud83d\ude80 Quick Start\n\n### 1. Install FiNo\n```bash\npip install pyfino\n```\n\n### 2. Install IPFS (one-time setup)\n```bash\n# macOS\nbrew install ipfs\n\n# Linux\ncurl -O https://dist.ipfs.io/go-ipfs/v0.36.0/go-ipfs_v0.36.0_linux-amd64.tar.gz\ntar -xvzf go-ipfs_v0.36.0_linux-amd64.tar.gz\nsudo mv go-ipfs/ipfs /usr/local/bin/\n\n# Windows\n# Download from https://ipfs.io/docs/install/\n```\n\n### 3. Initialize IPFS (one-time setup)\n```bash\nipfs init\nbrew services start ipfs # macOS\n# or: ipfs daemon & # Linux/Windows\n```\n\n### 4. Generate your keys\n```bash\nfino gen-key\n```\n\n### 5. Send a file\n```bash\nfino send document.pdf --to npub1abc... --from nsec1xyz...\n```\n\n### 6. Receive files\n```bash\nfino receive --from nsec1xyz...\n```\n\n## \ud83e\udd14 How It Works (ELI5)\n\n### **The Problem**\n- Traditional file sharing needs central servers (Google Drive, Dropbox)\n- These can be shut down, censored, or hacked\n- They know who you are and what you're sharing\n\n### **The Solution**\nFiNo splits file sharing into two parts:\n\n1. **\ud83d\udcc1 File Storage (IPFS)**\n - Files are stored on a global network (like a giant, distributed hard drive)\n - No single point of failure\n - Files are accessible from anywhere in the world\n - **Free forever** - no company owns it\n\n2. **\ud83d\udce8 File Location (Nostr)**\n - The \"address\" of your file is sent via Nostr (like a decentralized email)\n - Only the person you send it to can find the file\n - No central server controls the messages\n\n### **How It's Free**\n- **IPFS**: Community-run network, no company owns it\n- **Nostr**: Decentralized messaging protocol, no company owns it\n- **No API keys**: You're not using anyone's service\n- **No registration**: You're just using open protocols\n\n## \ud83d\udd10 Security Features\n\n- **AES-256-CBC**: Military-grade file encryption\n- **ECDH**: Perfect forward secrecy for metadata\n- **Zero-knowledge**: No one can see your files except the intended recipient\n- **End-to-end encryption**: Files encrypted before transmission\n- **Decentralized**: No central point of failure\n\n## \ud83d\udce6 Installation Details\n\n### Requirements\n- Python 3.8+\n- IPFS daemon\n- Internet connection\n\n### Dependencies\n- `cryptography`: Encryption\n- `pynostr`: Nostr protocol\n- `requests`: HTTP requests\n- `rich`: Beautiful CLI\n- `typer`: Command-line interface\n\n## \ud83d\udea8 Important Notes\n\n- **Experimental software** - Use at your own risk\n- **Keep your nsec private** - Never share your private key\n- **Backup your keys** - If you lose them, you can't access your files\n- **IPFS persistence** - Files may be removed if not pinned by someone\n\n## \ud83d\udd17 Useful Links\n\n- [IPFS Documentation](https://docs.ipfs.io/)\n- [Nostr Protocol](https://github.com/nostr-protocol/nostr)\n- [FiNo GitHub](https://github.com/yourusername/fino)\n\n## \ud83d\udcc4 License\n\nMIT License - see LICENSE file for details.\n\n---\n\n**\u26a0\ufe0f Disclaimer**: This is experimental software for innovation research only. Use responsibly and in accordance with local laws.\n",
"bugtrack_url": null,
"license": null,
"summary": "Proof-of-Concept: Secure File Sharing via IPFS + Nostr DMs",
"version": "0.2.1",
"project_urls": {
"Homepage": "https://github.com/arnispen/fino",
"Issues": "https://github.com/arnispen/fino/issues",
"Repository": "https://github.com/arnispen/fino"
},
"split_keywords": [
"nostr",
" ipfs",
" encryption",
" file-sharing",
" proof-of-concept",
" innovation"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "92e930794ef5f1dcb2b1cc03b33be8b48c622f4a9d5251d080fbbb0e10e2436b",
"md5": "a24b38ce632d035d4ea116da4abc310f",
"sha256": "55b87137338d8c0ca7ec3c6bdd94c6de8e5d93c8350456a78c8e25062a482331"
},
"downloads": -1,
"filename": "pyfino-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a24b38ce632d035d4ea116da4abc310f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 18225,
"upload_time": "2025-08-13T19:43:58",
"upload_time_iso_8601": "2025-08-13T19:43:58.348536Z",
"url": "https://files.pythonhosted.org/packages/92/e9/30794ef5f1dcb2b1cc03b33be8b48c622f4a9d5251d080fbbb0e10e2436b/pyfino-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "43a7509907283bc6e113f071ec73660740b2099bbde427c7e1fffdff334aea8b",
"md5": "5e1d86057ee79243d75772408d4f6512",
"sha256": "03b0d7e31274e358c3d2bf41de06136480128a64c803033c23dfcd5af8a02813"
},
"downloads": -1,
"filename": "pyfino-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "5e1d86057ee79243d75772408d4f6512",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 16895,
"upload_time": "2025-08-13T19:43:59",
"upload_time_iso_8601": "2025-08-13T19:43:59.264933Z",
"url": "https://files.pythonhosted.org/packages/43/a7/509907283bc6e113f071ec73660740b2099bbde427c7e1fffdff334aea8b/pyfino-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 19:43:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "arnispen",
"github_project": "fino",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "cryptography",
"specs": [
[
">=",
"41.0.0"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.28.0"
]
]
},
{
"name": "pynostr",
"specs": [
[
">=",
"0.0.20"
]
]
},
{
"name": "typer",
"specs": [
[
">=",
"0.9.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "websockets",
"specs": [
[
">=",
"11.0.0"
]
]
},
{
"name": "rich",
"specs": [
[
">=",
"13.0.0"
]
]
},
{
"name": "ruff",
"specs": [
[
">=",
"0.6.0"
]
]
},
{
"name": "mypy",
"specs": [
[
">=",
"1.0.0"
]
]
}
],
"lcname": "pyfino"
}