sandpolis / Sandpolis
Projects that are alternatives of or similar to Sandpolis
Sandpolis is a real-time distributed administration platform for servers, desktop computers, embedded devices, and anything in-between.
This project is unfinished and should only be used in a secure testing environment!
Introduction
The vision for Sandpolis is to build the ultimate no-expense-spared administration system that:
- provides full control over any device 💻,
- is crazy fast ⚡️,
- scales to thousands of devices 💥,
- and gives you money 💰.
Maybe not that last one, but it won't cost you anything because it's free in terms of cost and, more importantly, free as in freedom.
This project has existed in some form since 2013 and has always been a solo endeavour. It's already unbelievable that it's come this far, but maybe it will be fully functional by 2023?
Instances
Sandpolis is not just one program, but a set of several working together. There are three catagories in which every Sandpolis component (or "instance") belongs:
- 💻 an agent installed on a remote system that carries out administration tasks on behalf of users
- 📱 a client application that users can use to interact with agents
- 🔒 a server that facilitates communication between instances in the network and makes everything "work"
For end-user convenience (or confusion), there are multiple official programs in each category. For example, you can login to a Sandpolis server with either the Desktop Client or from a mobile device with the iOS Client.
Instance | Status |
---|---|
Server |
|
iOS Client |
|
Desktop Client |
|
Terminal Client |
|
Agent |
|
Native Agent |
|
Minimal Native Agent |
|
Plugins
Sandpolis supports plugins as a first-class feature. Essentially all end-user functionality in Sandpolis (file transfers, remote desktop, etc) is implemented as a plugin. This allows users to choose exactly what features they want and ignore the rest. Third-party plugins can also be installed, but must be signed with a trusted code-signing certificate.
The following plugins are officially supported:
Plugin | Status |
---|---|
Desktop Plugin |
|
Shell Plugin |
|
Filesystem Plugin |
|
Snapshot Plugin |
|
Device Plugin |
|
Core Modules
The following library modules define the core of Sandpolis. Instances and plugins depend on these basic modules which prevents code duplication. You probably don't need to worry about these unless you're developing plugins.
Module | Status |
---|---|
core.agent |
|
core.client |
|
core.clientagent |
|
core.clientserver |
|
core.foundation |
|
core.instance |
|
core.net |
|
core.server |
|
core.serveragent |
|
Installing
You could install Sandpolis now, but it's likely to be an underwhelming experience. Once things are more stable, installation instructions will appear out of thin air.
In the meantime, here's a screenshot to admire of the iOS client back when it was actually functional:
Building
Since there are many complex components in Sandpolis, you'll usually only want to build a small subset them. To choose what components to build, initialize the desired submodules:
# Sandpolis uses git submodules extensively
git submodule update --init com.sandpolis.server.vanilla
git submodule update --init module
Since Sandpolis is built with Gradle, building the code is the easy part:
# Just make sure you have JDK 16 first
./gradlew build
Using Vagrant
In order to build components for other operating systems, Vagrant can be used:
vagrant up linux
vagrant ssh linux