Trigger programs
Trigger programs define when a live stream emits an operational assertion. The v1 instruction set is deliberately small: load a signal, compare values, combine booleans, require persistence, detect a rising edge, apply a cooldown, emit one durable event, request a keyframe or clip, and notify a webhook or allowlisted local output. Programs contain at most 64 forward-only instructions, 16 stack values, 16 state slots, and 8 actions, so execution is bounded.
trigger loading-bay-entry version 1when motion_score >= 0.40 for 2 framesedge risingcooldown 5000msemit loading_bay_entrycapture keyframenotify webhookendCompile, validate, and replay through either the REST API, TypeScript SDK, or
CLI. POST /v1/triggers/compile returns typed JSON bytecode.
POST /v1/triggers/validate checks the version, stack, jumps, state, and action
bounds. POST /v1/triggers/evaluate replays timestamped samples through the
same state machine used by live capture.
Replay samples keep scalar signals at the top level:
[ { "pts_ms": 0, "motion_score": 0.20 }, { "pts_ms": 100, "motion_score": 0.55 }, { "pts_ms": 200, "motion_score": 0.60 }]Attach the resulting trigger_program in the WHIP attach configuration. The
program is fixed for one pipeline generation. The current live scalar path
supports motion_score, novelty_score, and confidence, requires one
keyframe capture, and stores the binary JPEG before committing the metadata
event. Detector, tracking, world geometry, uncertainty, teacher disagreement,
audio events, audio novelty, speech confidence, Mage cognition scores, and clip
actions are represented in the ISA but are rejected at live
attach until their corresponding producers are connected. Replay supports all
signals through explicit observations.
Audio and proactive video signals use the observation form:
audio_event:<label>speech_confidenceaudio_novelty_scorecognition_gate_scoreAn emit loading_bay_entry instruction commits the event as
trigger.loading_bay_entry. Trigger programs cannot impersonate run lifecycle
events. notify webhook opts that assertion into the run’s registered webhook
deliveries. notify local_output sends a metadata-only Unix datagram to the
absolute path in VIDARAX_TRIGGER_LOCAL_OUTPUT_SOCKET. It carries the stable
event ID, run, stream, sequence, timestamp, kind, and pipeline generation. It
never carries image bytes. The receiving process must bind the socket before the stream is
attached.
Missing signals fail closed. A slow binary writer or consumer cannot block decode: the handoff is bounded and its drop/failure counters are exposed in Prometheus metrics.