Skip to content

About

CloudPool

Resources

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

CloudPoolZK Logo

CloudPoolZK

Zero-Knowledge Distributed Cloud Memory Pool and Virtual File System
Seamlessly aggregate, encrypt, and pool multiple cloud storage accounts into a unified, secure virtual drive.


Inspiration

Modern cloud storage services offer generous free tiers such as Google Drive's 15 GB allocation per account yet utilizing multiple accounts quickly leads to storage fragmentation, tedious manual file juggling, and awkward credential switching. At the same time, I dislike that facts that current and the future traditional cloud providers retain full visibility into stored files, scanning and indexing user content by default. In simple word, cloud provider will have full access to your cloud-saving content eventhough its your personal area. Therefore this repository exist to restrict that access and unify all of your cloud account as one. If one account have limited space, it could borrow a space from different account. However for all of these features, currently it is only limited to google drive.

CloudPoolZK was created to address these challenges with two core principles:

  1. Unified Storage Pooling Without Subscriptions: Rather than paying recurring monthly fees or manually splitting large files across separate accounts, CloudPoolZK transparently binds multiple accounts into one cohesive memory pool. When a file exceeds the remaining capacity of one storage node, its remaining parts automatically spill over into the /remains/ partition of another connected node.
  2. Client-Side Zero-Knowledge Privacy: Privacy should not require trusting a third-party server. By performing 256-bit AES-GCM encryption entirely on the local client machine before any byte leaves the system, cloud providers only ever receive opaque, encrypted binary chunks. The master key is derived purely in memory via PBKDF2 and is never transmitted or stored remotely.

Overview

CloudPoolZK is a cross-platform desktop application built with C# and .NET 9 Avalonia. It acts as a distributed virtual file system and cryptographic abstraction layer over multi-account cloud storage providers.

Key capabilities include:

  • Unified multi-account aggregation into a single pool.
  • Automatic file chunking and cross-account spillover storage.
  • Client-side Zero-Knowledge AES-256-GCM encryption with PBKDF2 key derivation.
  • Windows-style virtual file explorer with sorting, filtering, searching, and media previewing.
  • Recursive directory upload, in-app file creation, and instant download reassembly.

Core Features and UI

1. Accounts Tab: Storage Pool and Vault Security

The Accounts tab serves as the central dashboard for monitoring collective storage capacity, managing encryption keys, and controlling connected cloud nodes.

CloudPoolZK Accounts View

  • Unified Pool Storage Metric: Live aggregated view displaying total capacity across all connected accounts and real-time utilization percentages.
  • Zero-Knowledge Master Passphrase: Configure a custom passphrase derived through PBKDF2 (100,000 SHA-256 iterations) to generate a 256-bit AES-GCM encryption key. Plaintext data and keys are never transmitted to cloud storage.
  • Vault Lock and Unlock: Clear master encryption keys from system RAM with one click to protect data during unattended sessions.
  • Connected Storage Nodes: Individual account cards displaying primary file counts, remainder spillover chunk counts, and live quota usage progress bars.
  • Account Lifecycle Management: Connect new Google Drive accounts via OAuth 2.0 or disconnect existing accounts with automatic local token revocation.

2. Manage Tab: Virtual File Explorer

The Manage tab provides a dual-pane file management interface modeled after modern desktop file explorers.

CloudPoolZK Manage Explorer View

  • Dual-Pane Layout:
    • Navigation Sidebar: Switch between connected accounts and quickly inspect Root primary storage versus /remains/ spillover allocations.
    • File Table: Detailed grid presenting file kind badges ([FILE], [DIR], [CHUNK]), modified timestamps, format descriptions, size, and spillover distribution metadata.
  • Interactive Breadcrumbs and Navigation:
    • Root navigation shortcut with interactive clickable breadcrumb segments (Root › Folder › Subfolder).
    • Instant search bar that filters directory contents in real time.
  • Multi-Dimensional Sorting:
    • Sort by Name (A-Z / Z-A), Date Modified (Newest / Oldest), Size (Largest / Smallest), Type, and Format with visual selection indicators.
  • File Type Filtering:
    • Filter by Images, PDF, Video, Text, Folder, Audio, Markdown, and ZIP/Archives.
    • Active filter pill with divider line and quick cancellation button.
  • Recursive Folder and File Uploads:
    • Upload single files or recursively upload entire directory structures with automated chunking and manifest generation.
  • In-App Media Previews:
    • Built-in Image Preview Viewer with on-the-fly chunk reassembly and decryption.
    • Embedded Audio Player and Video Player with system player fallback.
  • Document Creation:
    • Create new folders, text files (.txt), Markdown documents (.md), and Word documents (.docx) directly inside the virtual file system.
  • Context Menus and Row Actions:
    • Right-click context menu and hover quick actions for Download, Rename, Make a Copy, File Information, and Deletion.
  • Download Progress Monitoring:
    • Dedicated download progress bar displaying real-time reassembly status.

3. Remote Storage View (Google Drive Perspective)

From the perspective of Google Drive or any third-party inspecting the cloud storage account, raw plaintext files and folder structures are never visible.

Google Drive Remote Perspective

  • Files are divided into authenticated, encrypted binary chunks.
  • The /remains/ directory stores remainder spillover chunks from other connected nodes without exposing original file identities.
  • Virtual file system manifests ensure accurate client-side reassembly while preventing metadata exposure on remote servers.

Architecture and Technology Stack

CloudPoolZK follows the Model-View-ViewModel (MVVM) design pattern in Avalonia UI:

CloudPoolZK/
├── CloudPoolZK.Core/              # Core domain and cryptographic engine
│   ├── Crypto/                    # AES-GCM (256-bit) and PBKDF2 key derivation
│   ├── Models/                    # Virtual FS, manifests, and chunk metadata
│   └── Services/                  # Google Drive API and OAuth storage provider
├── CloudPoolZK.UI/                # Avalonia desktop user interface
│   ├── Assets/                    # App logo, icons, and visual assets
│   ├── Styles/
│   │   └── AppStyles.axaml        # Centralized global design system and styles
│   ├── ViewModels/                # Reactive ViewModels (MainWindow, DriveItem, CloudAccount)
│       ├── MainWindow.axaml          # Main window shell and modal overlays
│       ├── AccountsView.axaml        # Accounts and vault management UserControl
│       ├── ManageView.axaml          # File explorer UserControl
│       └── StorageStrategyView.axaml # Storage strategy & allocation engine UserControl
└── CloudPoolZK.Tests/                # Unit and cryptographic test suites

Local Setup and Configuration

Prerequisites

  • .NET 9.0 SDK
  • A Google account for Google Cloud Console access

Step 1: Set Up Google Cloud Console

  1. Open the Google Cloud Console.
  2. Create a new project (e.g., CloudPoolZK-Dev).
  3. Under APIs & Services > Library, search for Google Drive API and click Enable.

Step 2: Configure OAuth Consent Screen

  1. Navigate to APIs & Services > OAuth consent screen.
  2. Select External and complete the required fields (Application name: CloudPoolZK, support email, developer email).
  3. Under Test users, click + Add Users and specify the Google email addresses you will use for authentication.
  4. Save and proceed.

Step 3: Generate Desktop Credentials

  1. Go to APIs & Services > Credentials.
  2. Click + Create Credentials > OAuth client ID.
  3. Choose Desktop app as the Application type, name the client, and click Create.
  4. Download the generated client secret JSON file.

Step 4: Install Credentials Locally

  1. In the root directory of the repository, create a directory named Keys (alongside CloudPoolZK.sln).
  2. Move the downloaded JSON file into Keys/.
  3. Rename the file to credentials.json:
    CloudPoolZK/
    ├── Keys/
    │   └── credentials.json
    ├── CloudPoolZK.sln
    └── ...
    
    (Note: The Keys/ folder is excluded via .gitignore to prevent committing private credentials).

Building and Running

Build Solution

dotnet build

Run Tests

dotnet test

Run Desktop Application

dotnet run --project CloudPoolZK.UI

Security and Cryptography Details

  • Zero-Knowledge Design: Chunking, AES-256-GCM encryption, and manifest processing happen locally on the client machine before transmission.
  • Key Derivation: PBKDF2 with SHA-256 using 100,000 iterations produces a 256-bit symmetric key from user passphrases.
  • Direct Endpoints: All communication occurs directly between the desktop application and Google APIs over HTTPS/TLS without intermediary proxies.

License

This project is licensed under the MIT License. See LICENSE.txt for terms.

About

CloudPool

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages