Kestra ⇄ Pulse
Kestra owns the YAML-declarative flow; Pulse is the real-time stream step, called with two core io.kestra.plugin.core.http.Request tasks. Repo example: examples/kestra-pulse-bridge/ — the integration is a flow YAML, not code.
send_to_pulse (POST /x/order-scoring/in) → wait_for_stream (Pause PT2S) → read_from_pulse (GET /events/order-scoring.score.out) → decide
Run it
Bring up Kestra + Pulse — the repo's examples/orchestrators-compose/ has a kestra profile — then:
pulse deploy . # the order-scoring app (pulse.yaml)
In Kestra: add the PULSE_TOKEN secret (+ optional pulse_url), import flow.yaml, Execute with input amount=2500, then again with amount=300. Expected: escalate, then auto-approve.
What's validated — stated precisely
- The exact two HTTP calls the flow's tasks make are validated live against a
--devPulse:POSTK-2500/K-300,GETreturns['K-2500']— the 300 filtered by the streaming stage. - The Kestra server itself was not booted in the repo's CI sandbox (its download hosts are blocked there).
flow.yamlis written to the Kestra flow schema — run it on any Kestra, including the compose profile or Kestra Cloud.