Syndicate Dataspace Server

Screenshot of the server running

The syndicate-server program is a daemon that speaks the Syndicate network protocol, offering

Installation

The program is written in Rust.

  1. Install cargo and a nightly toolchain.
  2. Then, cargo +nightly install syndicate-server.

Command-line usage

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
syndicate-server 0.10.0

USAGE:
    syndicate-server [FLAGS] [OPTIONS]

FLAGS:
        --debt-reporter
    -h, --help             Prints help information
        --inferior
    -V, --version          Prints version information

OPTIONS:
    -c, --config <config>...
    -p, --port <ports>...
    -s, --socket <sockets>...

Configuration

The internal services of the daemon are activated by adding particular assertions to the server’s root dataspace. This is done initially with the -c/--config command-line flag, although any program holding a capability to assert appropriate values into the root dataspace may subsequently reconfigure the server on the fly by doing so.

When -c <path> is specified, each file and subdirectory at or within path is monitored for changes. A path will usually point to a directory, but pointing to a single file is also just fine.

Each file at or within path is read as a sequence of text-syntax Preserves documents. Each complete Preserves Value in each file is separately asserted into the root dataspace within the server.

Every time a file is created, changed, or deleted, it is rescanned and its assertions are updated accordingly.

For example, if -c /etc/syndicate/config appeared on the command-line, and the file /etc/syndicate/config/listeners.pr existed with contents

1
2
3
4
<require-service <relay-listener <tcp "0.0.0.0" 1>>
<require-service <relay-listener <tcp "0.0.0.0" 8001>>
<require-service <relay-listener <unix "/run/ds">>>
<require-service <config-watcher "/usr/lib/syndicate/config">>

then

Removing any of those lines of text and saving the file causes the daemon to automatically shut down the matching service. And of course editing or adding files under /etc/syndicate/config or /usr/lib/syndicate/config will update the root dataspace’s assertions accordingly.