A predicate is a boolean expression that decides whether a playlist should play. When it evaluates to true, the playlist is eligible to play. When it is false, the playlist sits out.
Every playlist has one. When you set a schedule in the dashboard, Screenly writes the predicate for you. The simplest possible predicate is TRUE, which means the playlist always plays.
What makes a predicate feel live is how often the engine checks it. The predicate sitting on the device does not change on its own. What changes is the time, and the engine keeps re-evaluating the rule against the current moment many times a second. So a playlist starts or stops the instant the clock crosses a line in its rule, rather than waiting for the next sync.
That constant re-evaluation is the point. A predicate is not read once and acted on later. It is a question the screen keeps asking against the present moment, and the answer turns over exactly when it should.
It can work this way because the engine is light. It lives on the device itself, built into the Screenly software, so it runs on both ScreenlyOS and Screenly Anywhere, and checking a predicate many times a second costs the device almost nothing. The same engine powers all of Screenly’s scheduling, asking its question over and over in the background while your content plays.