How it Works

The Nebula Platform

Nebula is a system mainly comprised of three parts: the Remote, the Host, and the Client.

The Remote is the service running at a well known location responsible for tracking clouds and orchestrating communication between them. The Remote doesn't know anything about the contents of the cloud, only where the hosts for a cloud are, when they were last updated, and is responsible for authenticating a client's access to a cloud.

The Host is the device actually hosting the cloud's files. Each host for a cloud communicates with each other via the remote, and updates each other's files in a peer-to-peer fashion, so the remote never knows the contents of the files. Because the files on a host are just plain-old files, the user can interact with them directly through any old piece of software, and nebula will automatically keep the other hosts in sync.

Clients are the applications that the users interact directly with their clouds from another computer. For example: a web-based file browser that would let a user upload files to their cloud and download them to another machine. Clients can read and write the files on a host directly, without the files ever passing through the remote, so the remote operator never knows what a user is doing to their cloud.

    +---------+
    |         |
    | Client  |
    |         |
    +-------^-+
           ||
XXXXXXXXXXX||XXXXXXXXXXXXXXXXXXXXXXXXXX
           ||
           ||     +---------------+
           ||     | Remote        |
           ||     | +---+         |
           ||     | |   |         |
           ||     | +---+         |
           ||     +---------------+
           ||        | |
XXXXXXXXXXX||XXXXXXXX| |XXXXXXXXXXXXXXX
           ||        | |
        +--v------+  | |   +--------+
        | Host 1  <--+ +---> Host 2 |
        |         |        |        |
        |         <-------->        |
        +---------+        +--------+


fig 1: A really okay ascii diagram of the remote, client, and host relationships

Starmap.io

How does Starmap.io fit into this picture? Starmap is in a bit of a unique position here - it's acting as the remote, but also serving client applications to you. So we're operating the remote, so your hosts talk to us to facilitate communication with each other, and we're also delivering client applications to you that run in your browser to let you communicate with your cloud. Think of starmap.io as the github to nebula's git.