# sgr remotes

sgr follows the decentralized Git model where any sgr installation can act as a remote, or a peer, for the purposes of pushing and pulling datasets. In essence, the local sgr client can communicate with the local and the remote sgr engine over the PostgreSQL wire protocol to determine what data it needs to push and pull. This works on top of the Postgres authentication where the current role name determines which datasets a user can write to.

The two-engine sync example showcases setting up data sharing between two Splitgraph engines.

## Splitgraph

Splitgraph itself is a special kind of a sgr remote. Clients can communicate with it over the same (very restricted) PostgreSQL protocol to push and pull images but can't check them out. In addition, sgr uploads objects to an S3-compatible storage instead of the remote engine itself.

You can use sgr without Splitgraph, but if you're interested in using it to share datasets and use public datasets in Splitfiles, you probably want to use Splitgraph, and should read the Splitgraph introduction.