Skip to main content

Private, encrypted, distributed storage across your own machines

Project description

CI

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

# 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

# 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

# 4. Check replica/share health across the network
docker exec firecloud-bootstrap firecloud verify

CLI essentials

firecloud init                          # create a network keystore
firecloud start --bootstrap host:7474   # run a node, optionally joining a peer
firecloud upload <path>                 # chunk → encrypt → distribute
firecloud download <file_id> <output>   # retrieve → verify → reassemble
firecloud verify [file_id]              # health report: healthy / degraded / unrecoverable
firecloud sync <folder>                 # bi-directional folder sync

Environment variables (all optional): FIRECLOUD_PASSPHRASE (skip the passphrase prompt), FIRECLOUD_DATA_DIR (default storage directory), FIRECLOUD_MAX_STORAGE_GB (chunk-store quota), and FIRECLOUD_BOOTSTRAP (comma-separated peers to connect to on start).


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.

MLOpsfc-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.

LLMOpsfc-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.

Chunks are encrypted with XChaCha20-Poly1305 before leaving the machine, so storage nodes only ever see authenticated ciphertext. Transport hardening includes a frame-size cap, handshake and request timeouts, and constant-time auth-token comparison.

Known limitations (devnet): node TLS certificates are self-signed and clients do not verify them, so the TLS layer protects against passive snooping but not an active man-in-the-middle on your LAN; the chunk payloads themselves remain end-to-end encrypted regardless. Deploy only on networks you control.


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.

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.

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

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

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firecloud_devnet-0.2.0.tar.gz (68.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firecloud_devnet-0.2.0-py3-none-any.whl (56.6 kB view details)

Uploaded Python 3

File details

Details for the file firecloud_devnet-0.2.0.tar.gz.

File metadata

  • Download URL: firecloud_devnet-0.2.0.tar.gz
  • Upload date:
  • Size: 68.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for firecloud_devnet-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6875adb189b75bf0eb593bbeb2fca194fbadf6196857d7ebfc95534232f28065
MD5 640e16ab381fbf99980d1d597add40cf
BLAKE2b-256 8e0c5f94aca796445ba59e05e8edbfa989326559721fb1a4bc998383daa192e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for firecloud_devnet-0.2.0.tar.gz:

Publisher: publish.yml on rajashekharsunkara/firecloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file firecloud_devnet-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for firecloud_devnet-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ebc52bffd293ce7ea5b3b05f3aa380d19e292fd296c66b5b1118fd61d0e35ab1
MD5 9e0801efa20fca5aab065d4eec72fe28
BLAKE2b-256 c217384e806ed9535926ce1bbb8cbb8e071f936fed60303857e722bf609d92be

See more details on using hashes here.

Provenance

The following attestation bundles were made for firecloud_devnet-0.2.0-py3-none-any.whl:

Publisher: publish.yml on rajashekharsunkara/firecloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page