Data Streaming Summit 2026 · a hands-on course in five short labs
You build an agent whose context is a live Kafka stream, kept fresh by streaming SQL, and that asks a human before it acts. Five labs, each adding one idea.
Aegis Financial, a fictional bank, streams every login attempt into Kafka. Somewhere in that stream, an attacker is guessing passwords. Your agent spots them from live data, and flags the account once you say so.
flowchart LR
K["Kafka topic<br/>security.login_events"] --> S["Streaming SQL<br/>materialized view<br/>login_failures"]
J["inject<br/>(you, in Lab 3)"] -- "new login burst" --> K
S -- "SQL tools, over MCP" --> A["Orca agent<br/>hello-agent-<you>"]
A -- "insert<br/>(only if you approve)" --> F["table<br/>flagged_accounts"]
The same five labs, on two stacks.
| Cloud course | Local course | |
|---|---|---|
| Runs on | StreamNative Cloud: your own instance, with a Kafka cluster, a SQL workspace, and an agent workspace | Your laptop: Ursa for Kafka, RisingWave, and the Orca Agent Engine (ork local) |
| You need | A StreamNative Cloud login with your own instance, from the hackathon organizers | Docker and an Anthropic API key |
| Time | About 40 minutes | About 45 minutes, plus image downloads |
| Start | Lab 0: Set up | Lab 0: Set up |
At the hackathon, take the Cloud course: see Before you arrive. Without a StreamNative Cloud instance, or to see every part run on your own machine, take the Local course.
The agent steps work three ways. Pick one.
- CLI: the
orkcommand line - Python: the
runorcaSDK - TypeScript: the
@runorca/orca-sdkSDK
| Lab | You | The idea |
|---|---|---|
| 0. Set up | Get your stack ready and run the doctor | Know that every part answers before you build on it |
| 1. Hello, agent | Create an agent and chat | Agent, environment, session, events |
| 2. Hello, streaming SQL | Build a materialized view over the topic | Context that keeps itself fresh |
| 3. Agent + live context | Give the agent SQL tools, inject new data | The answer changes with the data |
| 4. Agent acts, human approves | Let the agent write, with your OK | Governed actions |
Every lab is steps you can check, a short quiz, and a task to try on your own. The labs explains how a lab and its checks work.
A coding agent such as Claude Code can walk you through either course one step at a time, check your work with you, and quiz you. The tutor skill ships in this repository: see Learn with the tutor.
- A stream (Kafka) that holds the facts as they happen.
- A materialized view that keeps a running summary: the agent's always-fresh context.
- An agent that reads that context itself, through an allow-list of tools.
- A human approval gate on the one action that changes something.
That is the shape of most data + agent applications. Swap the topic, the view, and the action, and you have your own project: Go further.
| Path | What |
|---|---|
labs/ |
The two courses: Cloud and Local |
agent/ |
The agent definition for each lab, per stack, shared by all three paths |
sql/ |
The SQL for Lab 2, per stack, plus a reset script |
cli/ |
The CLI path (ork + jq) |
python/ |
The Python path, the doctor, the seeder, and the data injector |
typescript/ |
The TypeScript path, the doctor, the seeder, and the data injector |
local/ |
The Local course's stack: a Compose file and four helper scripts |
lab-ork |
ork with your endpoint, key, and ids filled in: what the lab checks use |
data/, schemas/ |
The synthetic login events the Local course loads, and their Avro schema |
skills/ |
The tutor skill |
docs/ |
Before you arrive · Learn with the tutor · Go further |
Licensed under Apache 2.0.