Unified Cloud Storage Management System

Orchestrate multiple storage solutions with intelligent metadata extraction and semantic search

Key Features

โ˜๏ธ

Multi-Cloud Storage

Seamlessly connect and manage AWS S3, local filesystem, SQLite, PostgreSQL and more through one interface

๐Ÿ”

Semantic Search

Automatically extract metadata from files and enable powerful semantic search capabilities, including tag-based filtering

๐Ÿ”„

Dynamic Resources

Monitor external links (like YouTube) for changes and update metadata automatically. Rescan files on demand through web or CLI

๐Ÿ”’

Advanced Controls

Built-in versioning, collision detection, and deduplication for robust data management

๐Ÿš€

Extendible system

Bring your own META extractors, based on instructions here

Microservice Architecture

System Architecture Component Diagram
๐Ÿงฉ

Modular Design

Swap internal components like databases, storage backends and metadata extractors with minimal configuration

๐Ÿณ

Docker Deployment

All-in-one Docker image for quick local or cloud deployment

๐Ÿ‡

RabbitMQ Communication

Reliable microservice communication through RabbitMQ message queues for resilience and scalability

โš–๏ธ

Zero-Downtime Scaling

Add new metadata extractors and services dynamically without disrupting the running system

๐Ÿ”Œ

Pluggable Storage

Support for multiple storage providers that can be mixed and matched

๐Ÿ“Š

Metadata Pipeline

Extensible extraction system that analyzes files and external resources. Connect your own custom meta extractors through RabbitMQ

Deployment

1. System Requirements

  • Platform: Linux (Ubuntu recommended), macOS, or Windows with WSL
  • Memory: Minimum 4GB RAM (8GB recommended)
  • Dependencies: Docker, Python 3.8+
  • Storage: 15GB for core system + storage requirements

2. Clone the repository

git clone https://github.com/xlukacs/omnivaultx.git
              

3. Run the core system

Run the start script to setup the core system.

./start_image.sh

Note: Save the url displayed in the terminal, you will need it to connect from the CLI.

4. Install CLI tool

As the CLI tool is distributed via a DEB package, you will need to install it manually:
sudo dpkg -i om_[version]_amd64.deb

5. Connect from the CLI

Set the API url and authenticate:
om --setapi [url:port]
om --authenticate
Now follow the instructions to authenticate. Use the -noauth flag to disable auth checks in the cli.

6. Connect meta extractors

Download the meta extractors from the /extractors folder on github and connect them:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Rename the .env.exmaple file to .env and set the variables. When done, run the script:
python main.py
Note: The default username and password are dp-processor and dp-processor.

Optional: Access the web interface

Configure the message broker for microservice communication:

The web interface is not yet available for local deployment. For a web version please use app.omnivaultx.com.

CLI Usage

Initialize & Configure

Set the API url.

The system can be configured to use multiple systems, for example a local system and a remote system.
om --setapi [url:port]

Authenticate

Authenticate with the system.

Authentication is done via a token flow. Authentication is only necessary for online systems.
om --authenticate
When connecting to a local system where auth is disabled, use the -noauth flag to disable local auth checks.

Test connection

Test the connection to the system.

om --test

Help command

Get help about the CLI.

om --help

Screenshots

Connection dashboard

Connection dashboard

The connection dashboard shows the current user, the already defined connections and an option to add a new one.

Resource input and search

Resource input and search

The resource input and search feature allows you to search for resources by name or tag. Support boolean search.

File explorer

File explorer

The file explorer shows the current directory and the resources in it. You can navigate through the directory structure and select a resource to view its details. Tag management is also available here.

Dynamic resource scanner

Dynamic resource scanner

The dynamic resource scanner allows you to enter an URL and do a dynamic scan. The returned resource type will be automatically selected, you just need to name the resource.

CLI installation

CLI installation

The CLI can be installed via dpkg. It will be installed in the /etc/om directory, optionally you can add a provided shell script to your PATH to see what is the connected remote directory.

CLI command examples

CLI command examples

The CLI supports many commands. Here is an example of the list command.

Core system local startup

Core system local startup

These are the logs of the core system, while starting up. The system will log all the IP addresses it is listening on.

CLI authentication

CLI authentication

The CLI supports authentication via token flow. Enter the provided url and after typing the token enter your credentials.