A big thanks to all the contributors worldwide. This is a global effort with collaboration from these countries:
![]()
Alterante is a decentralized filesystem.
For a general overview of Alterante and what it does, start with FAQ first.
In a nutshell, Alterante has 3 main capabilities:
- Discovery & Organization - Decentralized Search engine for all files accross all machines. Indexing includes deep metadata extraction for PDF, JPG, MP3, etc.
- Data Protection - Automated sync/backup/replication for all files, using free space available on all machines
- Access - Access to all files from any browser or mobile device using secure E2E encrypted channels between devices
A node is a unit of compute+storage, which runs on a computer (Win, Mac, Linux). A cluster is a collection of nodes, with at least 1 server.
There are 2 two types of nodes - clients and servers.
A server node has the following responsibilites:
- keeps track of all nodes on the cluster and free space available
- keep a centralized index of all the metadata accross all the nodes
- create replication orders for each node
- index all files and make them available to the API layer
- manage settings for the cluster (admin and user settings)
A client node has the following responsilibites:
- regularly ping the server to inform about uptime, IP, and free space
- extract metadata from files
- index all local files and make them available to API layer
- execute the replication orders issued by the server
- notify server of new/changed/deleted files
- transfer file metadata to the server
Alt documentation is organized into these key sections:
- 1- **Architecture **: Core architecture & diagram here
- 2- Core services: Description of client, server, and cloud services. Click here
- 3- Data Layer: Data layer where all data is persisted. Click here
- 4- Configuration Files: Description of config files. Click here
- 5- Sequence Diagrams: Diagrams that describe key user case sequences. Click here
General architecture diagram - Architecture
The services are divided into 3 categories:
- client-side : services that run on a client node
- server-side : services that run on a server node
- cloud : services that run on a cloud node (e.g. relay HTTP traffic)
These services run on a client node.
| Module | Component | Description |
|---|---|---|
| Scrubber | ScannerService | Scans for new/deleted/changes files in filesystem |
| Scrubber | ScrubService | Extract metadata from files |
| Scrubber | ClientService | Find Server IP, Send Ping to Server |
| Scrubber | ProcessorService | Ingest metadata , add to local client index |
| Scrubber | TransferService | Package metadata into ZIP files, transfer to server |
| Scrubber | BackupClientService | Process replication orders from server |
These services run on a server node.
| Module | Component | Description |
|---|---|---|
| Scrubber | BroadcastService | Broadcast Server IP address (discovered by Client) |
| Scrubber | ProcessorService | Ingest metadata, add to main index |
| Scrubber | BackupServerService | Generate backup orders for clients |
| Scrubber | RelayVaultService | Communicaton to/from Relay Server (for traffic relay) |
| RTServer | WebServer | HTTP Web Server for REST API |
| CloudBackup | AmazonDrive | Synchronize files with Amazon S3 bucket |
| Mailer | Mailer | Communication with Email mailbox |
These services run on a cloud node (e.g VM on a Public Cloud such as Amazon, Azure, or GCP)
| Module | Component | Description |
|---|---|---|
| Relay | RelayService | Relay HTTP/API requests from clients to server |
| Module | Class / Component | Description |
|---|---|---|
| cass-server | DatabaseEntry | Database entry record schema |
| cass-server | FfmpegExecutor | Build and run scripts for FFmpeg video extraction |
| cass-server | FileDatabase | File database helper functions |
| cass-server | FileDatabaseEntry | File database entry record schema |
| cass-server | FileUtils | File utils misc functions |
| cass-server | RecordStats | Record Stats functions |
| cass-server | ZipFolder | ZIP i/o helper functions |
- records.db : Stores records for each file in the system - MD5, file paths, timestamps
- testdb : Search Index (files and their metadata)
- localdb/Standard1 : Metadata for a specific file (filename = MD5)
- localdb/NodeInfo : Information about a client node (ID, time last seen, free space available, IP Address)
- localdb/BatchJobs : Information about a batch job (filename = Batch ID): Number of files, # of metadata inserts
- localdb/BackupJobs : Replication orders for each client node (what files to distribute in each client)
