Metadata-Version: 2.4
Name: firecloud-devnet
Version: 0.1.0
Summary: Private, encrypted, distributed storage across your own machines
Project-URL: Homepage, https://github.com/rajashekharsunkara/firecloud
Project-URL: Repository, https://github.com/rajashekharsunkara/firecloud
Project-URL: Issues, https://github.com/rajashekharsunkara/firecloud/issues
Project-URL: Changelog, https://github.com/rajashekharsunkara/firecloud/blob/main/CHANGELOG.md
Author: Rajashekhar Sunkara
License-Expression: MIT
License-File: LICENSE
Keywords: chunking,distributed,encryption,p2p,storage
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.10
Requires-Dist: aiofiles>=23.0.0
Requires-Dist: click>=8.0.0
Requires-Dist: cryptography>=41.0.0
Requires-Dist: fastcdc>=1.5.0
Requires-Dist: pycryptodome>=3.20.0
Requires-Dist: watchdog>=3.0.0
Requires-Dist: zeroconf>=0.80.0
Requires-Dist: zfec>=1.5.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Provides-Extra: mlops
Requires-Dist: fastapi>=0.100.0; extra == 'mlops'
Requires-Dist: numpy>=1.24.0; extra == 'mlops'
Requires-Dist: psutil>=5.9.0; extra == 'mlops'
Requires-Dist: pydantic>=2.0; extra == 'mlops'
Requires-Dist: rich>=13.0.0; extra == 'mlops'
Requires-Dist: scikit-learn>=1.3.0; extra == 'mlops'
Requires-Dist: uvicorn>=0.20.0; extra == 'mlops'
Provides-Extra: rag
Requires-Dist: fastembed>=0.2.0; extra == 'rag'
Requires-Dist: ollama>=0.1.0; extra == 'rag'
Requires-Dist: pydantic>=2.0; extra == 'rag'
Requires-Dist: qdrant-client>=1.8.0; extra == 'rag'
Requires-Dist: rich>=13.0.0; extra == 'rag'
Description-Content-Type: text/markdown

![CI](https://github.com/rajashekharsunkara/firecloud/actions/workflows/ci.yml/badge.svg)

# FireCloud

Private, encrypted, distributed storage across machines you own.

Unlike S3 (vendor lock-in), Syncthing (no erasure coding), or IPFS (public DHT), FireCloud gives you zero-knowledge peer-to-peer storage where data is encrypted locally before it leaves your machine. Every chunk stored on the network is ciphertext — nodes can't read it.

---

## Install

```bash
# from GitHub (recommended for now)
pip install git+https://github.com/rajashekharsunkara/firecloud.git

# with RAG extensions
pip install "firecloud-devnet[rag]"

# with MLOps extensions
pip install "firecloud-devnet[mlops]"
```

## Quickstart

```bash
# 1. Start a 4-node network via Docker Compose
git clone https://github.com/rajashekharsunkara/firecloud.git
cd firecloud
cp .env.example .env          # set FIRECLOUD_PASSPHRASE in .env
docker compose up -d           # starts bootstrap + 3 storage nodes

# 2. Upload a file
docker exec firecloud-bootstrap firecloud upload /data/my-file.zip

# 3. Download from any node
docker exec firecloud-node-1 firecloud download <file_id> /data/restored.zip
```

---

## Architecture

```
┌─────────────────────────────────────────┐
│  fc-rag (Private RAG — opt-in)          │  LLMOps
│  fc-mlops (Artifact Store — opt-in)     │  MLOps
│  Docker + GitHub Actions                │  DevOps
│  FireCloud Core (storage, crypto, P2P)  │  Distributed Systems
└─────────────────────────────────────────┘
```

**Distributed Systems** — XChaCha20-Poly1305 encryption, FastCDC content-defined chunking, zfec erasure coding, mDNS peer discovery. Manifest consistency uses Lamport timestamps with last-writer-wins semantics. Node communication runs over TLS-protected binary RPC.

**DevOps** — Multi-node Docker Compose setup with health checks. GitHub Actions CI pipeline (lint → test → build) gates every merge.

**MLOps** — `fc-mlops` provides version-tracked ML artifact storage via FireCloud's `Node` API, a FastAPI telemetry endpoint with psutil system metrics, and IsolationForest-based anomaly detection on telemetry readings.

**LLMOps** — `fc-rag` is a fully local RAG pipeline using fastembed for embeddings, Qdrant (embedded mode) for vector search, and Ollama for local LLM inference — no text ever leaves your machine.

---

## Security

FireCloud uses **HMAC-SHA-256 with a network-derived key** for chunk addressing instead of plain SHA-256. This raises the cost of confirmation-of-file attacks — an attacker who suspects a specific file is stored cannot verify its presence by computing chunk hashes from the plaintext, because valid chunk IDs require the network key. This protection holds as long as the network key remains confidential.

---

## AI/ML Extensions

FireCloud stores and retrieves encrypted content. The RAG and artifact layers run entirely on the client — nothing in plaintext crosses the server boundary.

### Private RAG (`fc-rag`)

Index your docs locally and query with a private LLM — no data leaves your machine.

```bash
pip install "firecloud-devnet[rag]"
fc-rag index ./docs
fc-rag query "How does FireCloud handle node departure?"
```

### MLOps Artifact Store (`fc-mlops`)

Version-track ML models, datasets, and checkpoints using FireCloud as the storage backend.

```bash
pip install "firecloud-devnet[mlops]"
fc-ml save ./model.pt --name resnet --version 1.0.0 --type model --metric accuracy=0.94
fc-ml simulate-failure
```

---

## Development

```bash
git clone https://github.com/rajashekharsunkara/firecloud.git
cd firecloud
pip install -e ".[dev]"
pytest tests/ -v
```

## License

MIT — see [LICENSE](LICENSE).
