Noureddine RAMDI / Foxel: a pluggable, AI-powered self-hosted cloud storage platform

Created Mon, 04 May 2026 10:23:02 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

DrizzleTime/Foxel

Foxel tackles the challenge of managing diverse private cloud storage needs with a flexible, extensible platform that unifies multiple storage backends under one roof. What sets it apart is a manifest-based plugin system that loads React frontend components and custom backend routes at runtime — no core code changes needed. Add to that an AI-powered semantic search engine capable of querying unstructured data naturally, and you have a platform designed for real-world self-hosted cloud use with developer-friendly extension options.

what foxel is and how it works

Foxel is a private cloud storage platform implemented in Python 3.14+ with FastAPI for the backend and React 19 for the frontend. It supports multiple storage backends — including S3, WebDAV, Google Drive, OneDrive, and even Telegram — unified through a pluggable adapter pattern. This lets users aggregate storage sources behind a consistent interface.

Under the hood, Foxel employs a manifest-based plugin system. Plugins declare their frontend React components and backend API routes via manifests, which the core system loads dynamically at runtime. This design lets developers extend Foxel’s capabilities without touching the core codebase or rebuilding the app.

Foxel also integrates AI-driven semantic search. It uses configurable embedding providers to convert content into vectors, which are stored in vector databases like Milvus or Qdrant. This enables natural language queries across unstructured data, a notable feature for cloud storage systems that often struggle with meaningful search beyond metadata.

Security is handled via RBAC, with path-based access control rules ensuring granular permission management. The platform supports multiple protocols through mappings, including an S3-compatible API, WebDAV, and signed direct links.

Deployment is straightforward using Docker Compose, with SQLite as the default database for persistence. This keeps the footprint light for small to medium setups.

the plugin system and AI semantic search as technical strengths

The core architectural highlight is definitely the manifest-based plugin system. Instead of baking all features into a monolithic app, Foxel treats plugins as first-class citizens. Each plugin ships with a manifest file declaring frontend React components and backend routes it needs. At runtime, the platform reads these manifests and dynamically loads the components and routes.

This pattern offers several advantages:

  • Extensibility without core modifications: Developers can add new storage adapters, UI features, or API extensions without touching the Foxel core.
  • Runtime flexibility: Plugins can be added, updated, or removed without redeploying the entire app.
  • Clear separation: The manifest acts like a contract, making plugins self-contained and easier to maintain.

The tradeoff is added complexity in loading and managing plugins, plus the need for careful versioning and compatibility checks. The plugin system also demands that frontend React components are structured to be dynamically loadable, which can complicate the build and deployment pipeline.

On the AI side, Foxel’s use of vector databases like Milvus and Qdrant for semantic search is a practical choice that leverages growing industry tools for unstructured data search. By converting file content and metadata into embeddings, Foxel allows natural language queries that go beyond simple keyword matching. This can be a game-changer for users with large, heterogeneous data stores.

However, this feature requires extra infrastructure (vector DB) and configuration (embedding providers), which might be overkill for simple setups. Performance and cost tradeoffs depend on data volume and query complexity.

The RBAC system uses path-based rules, which provides fine-grained permissions crucial for multi-user environments. Combined with protocol mappings (e.g., S3 API compatible endpoints), Foxel fits well into existing workflows and tooling.

Code quality appears solid, with adherence to modern Python and React standards. The choice of SQLite as default DB is pragmatic but signals a focus on smaller-scale or test deployments. Larger or production environments will need PostgreSQL or another backend.

quick start with docker compose

The easiest way to get Foxel running is with Docker Compose. The README provides these exact commands:

mkdir -p data/db data/mount
chmod 777 data/db data/mount
curl -L -O https://github.com/DrizzleTime/Foxel/raw/main/compose.yaml

Edit the downloaded compose.yaml to replace default SECRET_KEY and TEMP_LINK_SECRET_KEY with strong random values for security.

Finally, start all services:

docker-compose up -d

Once running, access the web UI in your browser. The first launch walks through admin account setup.

This quickstart approach encapsulates all dependencies and services, including the AI vector databases, making it straightforward to trial Foxel in a self-contained environment.

verdict: who should consider foxel

Foxel is a solid option if you want a self-hosted cloud storage platform that goes beyond simple file serving. Its plugin system architecture is worth studying or adopting if you build extensible, modular apps needing runtime component loading.

The AI-powered semantic search adds real value for users with diverse, unstructured data needing natural language querying. However, this comes with infrastructure overhead and configuration complexity.

The default SQLite backend and Docker Compose deployment target small to medium setups or proof-of-concept use. For larger-scale or performance-critical production, expect to upgrade the database and possibly scale vector DB components.

Overall, Foxel fits developers and teams who want a flexible, extendable private cloud with advanced search capabilities but can handle the operational complexity. If your needs are simpler, or you want a turn-key solution, other platforms might be easier to deploy and maintain.

The manifest-based plugin design is a practical pattern worth borrowing even if you don’t adopt Foxel entirely. It balances core stability with extensibility neatly, something many self-hosted projects struggle with.

Foxel is a good repository to explore for anyone interested in combining Python FastAPI, React, AI semantic search, and plugin-driven extensibility in a cloud storage context.


→ GitHub Repo: DrizzleTime/Foxel ⭐ 1,031 · Python