Access remote actors, publish services, subscribe to messages and state updates etc., via the Syndicate network protocol from bash (and perhaps other shells).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tony Garnock-Jones 5ba404d99e
Switch to HMAC-BLAKE2s
2 months ago
examples Switch to HMAC-BLAKE2s 2 months ago
lib Make a couple of parameters optional 1 year ago 10 months ago


This is an implementation of the Syndicate network protocol (based on Preserves) for Bash.

Q. Is this a joke, or is this serious?
A. Yes.


First, it depends on Bash-specific shell features.

Second, you'll need a Syndicate network server ("broker"). The best option at present is the Rust-language server. Unfortunately it relies on a few nightly-only features of Rust, so I use rustup to get a nightly toolchain, and then use that:

# compiling syndicate-server from source needs these things:
apt install libssl-dev pkg-config curl build-essential

# this is the command-line given by
curl --proto '=https' --tlsv1.2 -sSf | sh
# follow the instructions
# then log out and in again

# now you can get the nightly toolchain:
rustup toolchain install nightly

# and finally the server:
cargo +nightly install syndicate-server

Third, you'll need the preserves-tool program, which uses to slice and dice network packets. It's also written in Rust (but doesn't require nightly), so you can get it with:

cargo install preserves-tools

Running the demo

Start the server in one terminal, in the same directory as this file:

syndicate-server -s ./sock

Then, in one or more other terminals, run from the same directory: