How it works
Read the stream in order.
Start with RUN_STARTED carrying threadId and runId. Open an assistant message with TEXT_MESSAGE_START, send one or more non-empty TEXT_MESSAGE_CONTENT deltas using the same messageId, close it with TEXT_MESSAGE_END, then emit RUN_FINISHED with the original run identifiers.
The valid sample on the homepage is formatted as SSE and can be copied directly. Real streams can interleave tool calls, state updates and reasoning, but every identifier-scoped lifecycle should remain internally consistent.
Useful next steps
- Paste the stream into the free validator.
- Check SSE framing and JSON payload parsing.
- Look up common lifecycle diagnostics.
- Compare behavior with the official AG-UI SDK used by your application.
AG-UI Event Lab is independent and is not affiliated with the AG-UI project or CopilotKit.