Syndicate Dataspace Server
syndicate-server program is a daemon that speaks the
Syndicate network protocol, offering
a gateway service for resolving “sturdy references” to usable capabilities;
a root dataspace service; and
optional internal services such as
TCP listeners, for accessing the gateway and other services over TCP/IP (either plain TCP/IP or websockets-over-TCP/IP);
Unix socket listeners, for accessing the gateway and other services over Unix sockets; and, last but not least,
Configuration watchers, for dynamic reconfiguration of the server and its active services.
The program is written in Rust.
cargo +nightly install syndicate-server.
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>...
The internal services of the daemon are activated by adding particular
assertions to the server’s root dataspace. This is done initially with
--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.
-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
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
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">>
- the internal TCP listener service would be instantiated twice, once on port 1 and once on port 8001;
- the UNIX socket listener service would be instantiated once, with
- another configuration-watcher service would be started, monitoring
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
/usr/lib/syndicate/config will update the root dataspace’s