---
schema: 1
type: video
title: >-
  Make your own event-sourced agent harness using stream processors — Jonas
  Templestein, Iterate
description: >-
  The abstraction is three things: state, a synchronous reducer that derives
  state from events, and an after-append hook for side effects. The split
  matters: when your program restarts after 100 events, you want to catch up
  state without replaying LLM requests. Everything that happens (streaming
  chunks, tool calls, errors, circuit breaker triggers) is an event in the log.
  The interesting part is deployment. Jonas demos "dynamic worker configured,"
  an event whose payload is a JavaScript string containing a processor. Append
  it to any stream and that stream becomes an AI agent without server or
  dependencies. The broader implication: processors from different authors on
  different servers can compose against the same stream, and a safety checker
  can inject context in a 200ms window before an LLM request without blocking
  the agent if it doesn't make it. Speaker info: - https://x.com/jonas -
  https://www.linkedin.com/in/jonashuckestein -
  https://github.com/jonastemplestein 0:14 Introduction and workshop overview
  1:33 Concept of event-sourced agent harnesses 2:24 Desired characteristics:
  Extensibility and composability 3:14 Agents on the edge and public routability
  4:20 The distributed nature of agents and potential pitfalls 5:40 Introduction
  to the event stream architecture 8:38 Working with the API via curl 10:48
  Handling events and error states 11:57 Circuit breakers and stream management
  13:49 Scheduling tasks and event subscriptions 15:17 Q&A: Architectural
  philosophy 19:17 Demonstrating the SDK and TypeScript integration 30:06
  Defining stream processors and reducers 47:34 How stream processors function
  in production 50:35 Dynamic workers and deploying via event payloads 58:45
  Discussion on before-hooks versus eventual consistency 1:02:16 Future outlook
  and wrapping up --- Watch along with the corrected transcript, summary,
  timestamps and resources on this talk's official AIE page:
  https://ai.engineer/talks/vi-2nasppAg-make-your-own-event-sourced-agent-harness-using-stream-processors
  Join our upcoming AI Engineer conferences (see https://ai.engineer landing
  page): - AIEi Shanghai, November 5–6 — the first for meeting top Chinese labs
  and engineers - AIE CODE in SF, November 10–12 — the top AI Coding conference
  returns - AIEi Sydney, December 7–8 — the first AIEi run alongside NeurIPS
  2026 in Sydney ---
canonical: 'https://liquidgold.cc/watch/vi-2nasppAg'
markdown: 'https://liquidgold.cc/watch/vi-2nasppAg.md'
llms: 'https://liquidgold.cc/watch/vi-2nasppAg/llms.txt'
parent: 'https://liquidgold.cc/channel/aidotengineer.md'
channel: aidotengineer
updated: '2026-10-24T14:11:13.862Z'
language: null
children: []
videoId: vi-2nasppAg
durationSeconds: 3867
publishedAt: '2026-05-14T14:00:06.000Z'
searchChunks:
  - ordinal: 0
    text: null
    startSeconds: 25
    endSeconds: 113
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=25'
    heldReason: rights
  - ordinal: 1
    text: null
    startSeconds: 124
    endSeconds: 243
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=124'
    heldReason: rights
  - ordinal: 2
    text: null
    startSeconds: 124
    endSeconds: 243
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=124'
    heldReason: rights
  - ordinal: 3
    text: null
    startSeconds: 253
    endSeconds: 384
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=253'
    heldReason: rights
  - ordinal: 4
    text: null
    startSeconds: 506
    endSeconds: 604
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=506'
    heldReason: rights
  - ordinal: 5
    text: null
    startSeconds: 615
    endSeconds: 695
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=615'
    heldReason: rights
  - ordinal: 6
    text: null
    startSeconds: 706
    endSeconds: 805
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=706'
    heldReason: rights
  - ordinal: 7
    text: null
    startSeconds: 817
    endSeconds: 954
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=817'
    heldReason: rights
  - ordinal: 8
    text: null
    startSeconds: 1057
    endSeconds: 1068
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=1057'
    heldReason: rights
  - ordinal: 9
    text: null
    startSeconds: 1174
    endSeconds: 1185
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=1174'
    heldReason: rights
  - ordinal: 10
    text: null
    startSeconds: 1855
    endSeconds: 1867
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=1855'
    heldReason: rights
  - ordinal: 11
    text: null
    startSeconds: 1961
    endSeconds: 1972
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=1961'
    heldReason: rights
  - ordinal: 12
    text: null
    startSeconds: 2390
    endSeconds: 2400
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=2390'
    heldReason: rights
  - ordinal: 13
    text: null
    startSeconds: 2511
    endSeconds: 2522
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=2511'
    heldReason: rights
  - ordinal: 14
    text: null
    startSeconds: 2758
    endSeconds: 2879
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=2758'
    heldReason: rights
  - ordinal: 15
    text: null
    startSeconds: 2891
    endSeconds: 2981
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=2891'
    heldReason: rights
  - ordinal: 16
    text: null
    startSeconds: 2891
    endSeconds: 2981
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=2891'
    heldReason: rights
  - ordinal: 17
    text: null
    startSeconds: 2991
    endSeconds: 3113
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=2991'
    heldReason: rights
  - ordinal: 18
    text: null
    startSeconds: 3124
    endSeconds: 3210
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=3124'
    heldReason: rights
  - ordinal: 19
    text: null
    startSeconds: 3221
    endSeconds: 3319
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=3221'
    heldReason: rights
  - ordinal: 20
    text: null
    startSeconds: 3330
    endSeconds: 3419
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=3330'
    heldReason: rights
  - ordinal: 21
    text: null
    startSeconds: 3430
    endSeconds: 3569
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=3430'
    heldReason: rights
  - ordinal: 22
    text: null
    startSeconds: 3580
    endSeconds: 3673
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=3580'
    heldReason: rights
  - ordinal: 23
    text: null
    startSeconds: 3673
    endSeconds: 3684
    watch: 'https://liquidgold.cc/watch/vi-2nasppAg?t=3673'
    heldReason: rights
---


# Make your own event-sourced agent harness using stream processors — Jonas Templestein, Iterate

The abstraction is three things: state, a synchronous reducer that derives state from events, and an after-append hook for side effects. The split matters: when your program restarts after 100 events, you want to catch up state without replaying LLM requests. Everything that happens (streaming chunks, tool calls, errors, circuit breaker triggers) is an event in the log. The interesting part is deployment. Jonas demos "dynamic worker configured," an event whose payload is a JavaScript string containing a processor. Append it to any stream and that stream becomes an AI agent without server or dependencies. The broader implication: processors from different authors on different servers can compose against the same stream, and a safety checker can inject context in a 200ms window before an LLM request without blocking the agent if it doesn't make it. Speaker info: - https://x.com/jonas - https://www.linkedin.com/in/jonashuckestein - https://github.com/jonastemplestein 0:14 Introduction and workshop overview 1:33 Concept of event-sourced agent harnesses 2:24 Desired characteristics: Extensibility and composability 3:14 Agents on the edge and public routability 4:20 The distributed nature of agents and potential pitfalls 5:40 Introduction to the event stream architecture 8:38 Working with the API via curl 10:48 Handling events and error states 11:57 Circuit breakers and stream management 13:49 Scheduling tasks and event subscriptions 15:17 Q\&A: Architectural philosophy 19:17 Demonstrating the SDK and TypeScript integration 30:06 Defining stream processors and reducers 47:34 How stream processors function in production 50:35 Dynamic workers and deploying via event payloads 58:45 Discussion on before-hooks versus eventual consistency 1:02:16 Future outlook and wrapping up --- Watch along with the corrected transcript, summary, timestamps and resources on this talk's official AIE page: https://ai.engineer/talks/vi-2nasppAg-make-your-own-event-sourced-agent-harness-using-stream-processors Join our upcoming AI Engineer conferences (see https://ai.engineer landing page): - AIEi Shanghai, November 5–6 — the first for meeting top Chinese labs and engineers - AIE CODE in SF, November 10–12 — the top AI Coding conference returns - AIEi Sydney, December 7–8 — the first AIEi run alongside NeurIPS 2026 in Sydney ---

Canonical: https://liquidgold.cc/watch/vi-2nasppAg · Channel: [AI Engineer](https://liquidgold.cc/channel/aidotengineer.md)

> Search chunk text is held until public-source provenance is verified.

## Document chunks

> Missing: no stored document chunks are available.
