Syndicate

Syndicate Wishlist

Syndicate projects I want to exist but am not actively working on atm.

  • Facet dataflow blocks in syndicate-rs

    • Similar to .on_asserted_facet() but for dataflow blocks, basically wraps the dataflow block in it’s own facet and destroys the previous version of the facet each run of the dataflow block.
    • this is mostly because I am lazy and don’t want to manually retract assertions or handle updating assertions for complicated setups where I’m asserting/retracting many draw commands.
    • this could probably be implemented as a dataflow!() proc macro.
  • Iroh Tools

A Sketch of Running Folk on Synit

My programming life at the moment has been split between the worlds of Syndicate and Folk. They are both reactive programming systems that have a ton of conceptual overlap, so I have been trying to figure out a way to combine the two in a nice way so that I can eventually utilize the Ambient Networking, Graphics, and Audio work I’ve been iterating on in Syndicate world, from Folk, and use the physical interface Folk provides to interact with Syndicate actors.

Devlog

Jul 11, 2025

Flexbox sorta working?

Lots of bugs to fix and the current impl is atrocious but it sorta works?

Jun 20, 2025

Ideas Around Entity State

In traditional Syndicate implementations, Entities respond to patterns that get asserted to dataspaces. In the Rust implementation of Syndicate, there are two levels of state management, Actors-level, which are fields that are globally accessible to all Entities within that actor, and Entity-local Rust structs to hold state isolated to that entity.

Syntax Experiments

One way I’ve been working on Klee, is to sketch out example programs and explain how they should behave, before the implementation can sufficiently execute the commands I’m drawing out.

During

The during keyword is used in proper syndicate implementations, and plays the same roll in Klee. It takes the default form:

(during P <E_b> <E> <E_r>)
  • P is the pattern we are matching the dataspace against

  • E_b denotes “expression before” and is the expression run for a defined amount of time “before” the assertion appears. The idea here is to have three dedicated lifetimes of a shape “before” “during” and “after”. Because we cannot predict the future, before instead needs to start when the assertion is first asserted, and as mentioned previously, lives for a defined amount of time in this state. One major use case for this is fade-in animations.

Overview

A diagram of 2 actors, A and B asserting fragments of a klee program to a third actor, K.

Two Syndicate actors, A and B, make assertions into a Klee dataspace.

Background

The problem: We have an actor that has a rich internal model of some domain, and we want to use this model to generate a graphic design and render it to the user, how do we do this?

Ambient Dataspaces

hello

Work-in-progress for now. Will be similar in functionality to the tuplespaces in AmbientTalk

See also: https://git.syndicate-lang.org/ehmry/cow-feds