# Syndicate utils ## Syndesizer A Syndicate multitool. Includes a number of different actors that become active via configuration. Whether you use a single instance for many protocols or many specialized instances is up to you. ### JSON Socket Translator Communicate with sockets that send and receive lines of JSON using `` and `` messages. Do not send messages into the dataspace configure with `` until `` is asserted. ``` # MPV configuration example > let ?mpvSpace = dataspace ? ready> [ > ? ?cap> [ $cap ] ] $mpvSpace [ # announce the dataspace when the translator is connected ? [ $config $config $mpvSpace #f> ] # translate to an MPV command ?? [ ! ] # clear the playlist on idle so it doesn't grow indefinitely ?? [ ! ] ] ``` ### Webooks Listens for webhook requests and sends request data to a dataspace as messages. Request data is formated according to the http schema [defined in syndicate-protocols](https://git.syndicate-lang.org/syndicate-lang/syndicate-protocols/src/branch/main/schemas/http.prs), with the exception that messages bodies may be **bytes**, **string**, or **any** for the `content-type`s of `application/octet-stream`, `text/*`, and `application/json` respectively. ``` # Configuration example > ? ?cap> [ $cap endpoints: { # http://0.0.0.0:1048/my-endpoint ["my-endpoint"]: $target-dataspace # http://0.0.0.0:1048/some/multi-element/path ["some", "multi-element", "path"]: $target-dataspace } }> ] ``` ## cache_actor An actor that observes patterns and reässerts the values they capture for a given lifetime. Takes the arguments `{ dataspace: #!any lifetime: double }`. The lifetime of a cache counts down from moment a value is asserted. Example configuration: ``` ? [ ; Require the nix_actor during observations. ?nixspace> ? _> [ $config > ] ?nixspace> ? _> [ $config > ] ; Cache anything captured by observers in the $nixspace for an hour. ; The nix_actor is not required during caching. $config ? ?cap> [ $cap { dataspace: $nixspace lifetime: 3600.0 } ] ] ``` ## json_translator Wrapper that executes a command, parses its JSON output, converts to Preserves record ``, and publishes and messages to its initial dataspace. ## mintsturdyref A utility for minting [Sturdyrefs](https://synit.org/book/operation/builtin/gatekeeper.html#sturdyrefs). ## mount_actor Actor for mounting filesystems on Linux. Sample Syndicate server script: ``` # Assert a file-system we want to mount. # Transform mount assertions into mount status observations. ? [ ? [ ] ] # Assert mounting succeded. ? [ ready> ] # Assert mount failed. ? > [ failed> ] # Assert the details into the machine dataspace. ? [ $config ? [ $machine ] ] # Require the mount_actor daemon. > # Pass the daemon the config dataspace. ? ?cap> [ $cap { dataspace: $config } ] ``` ## msg A utility that sends messages to `$SYNDICATE_ROUTE`. ## net_mapper Publishes ICMP packet round-trip-times. See [net_mapper.prs](./net_mapper.prs) for a protocol description. [Source](./src/net_mapper.nim). Example script: ``` ? [ $machine ? [ $log ! ] $config [ > ? ?cap> [ $cap { dataspace: $machine } ] ] ] ``` ## preserve_process_environment This utility serializes it's process environment to Preserves and prints it to stdout. It can be used to feed the environment variables of a nested child of the Syndicate server back to the server. For example, to retreive the environmental variables that a desktop manager passed on to its children. ## syndump Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects a dataspace via `$SYNDICATE_ROUTE`, and writes observations to standard-output. Published assertions are prefixed by the `+` character, retractions by `-`, and messages by `!`. Example ```sh # Print patterns in use, filter down with AWK to only the published patterns. $ FS=':' syndump '' | awk -F : '/^+/ { print $2 }' ```