Documentation Index
Fetch the complete documentation index at: https://docs.crewform.tech/llms.txt
Use this file to discover all available pages before exploring further.
Overview
CrewForm supports the AG-UI (Agent-User Interaction) protocol, enabling real-time streaming of agent execution events to any compatible frontend via Server-Sent Events (SSE).AG-UI complements MCP (tools) and A2A (agents) — together they form the three agentic protocols that CrewForm supports.
How It Works
When a CrewForm agent executes a task, the task runner emits structured AG-UI events through an SSE endpoint. Any frontend — CrewForm’s dashboard, a custom app, or a CopilotKit integration — can subscribe and display execution in real-time.Event Types
| Event | Description |
|---|---|
RUN_STARTED | Task execution begins |
TEXT_MESSAGE_START | LLM response stream begins |
TEXT_MESSAGE_CONTENT | LLM response token chunk |
TEXT_MESSAGE_END | LLM response stream ends |
TOOL_CALL_START | Tool execution begins (includes tool name) |
TOOL_CALL_ARGS | Tool call arguments |
TOOL_CALL_END | Tool execution completes (includes result) |
RUN_FINISHED | Task completes successfully |
RUN_ERROR | Task fails with error message |
INTERACTION_REQUEST | Agent pauses and requests user input |
INTERACTION_RESPONSE | User submitted their response |
INTERACTION_TIMEOUT | Interaction timed out without response |
Rich Interactions
AG-UI supports bidirectional communication — agents can pause execution, present choices to the user, and resume based on user input.Interaction Types
| Type | When to use | User sees |
|---|---|---|
approval | Agent needs permission before proceeding | Approve / Reject buttons |
confirm_data | Agent wants the user to verify or edit data | Data table with Confirm / Edit / Reject |
choice | Agent needs the user to pick from options | Radio button list with Select |
How It Works
INTERACTION_REQUEST Event
When an agent requests input, the SSE stream emits:confirm_data, includes a data object. For choice, includes a choices array.
Submitting a Response
confirm_data, include data with modified values. For choice, include selectedOptionId.
React Hook Usage
TheuseAgentStream hook handles interactions automatically:
Timeout Behavior
- Default timeout: 5 minutes per interaction
- When the timeout expires, the agent emits
INTERACTION_TIMEOUTand the task fails - The task status transitions:
running→waiting_for_input→failed - Timeout duration is included in the
INTERACTION_REQUESTevent
Authentication
AG-UI uses the same Bearer token auth as A2A — provide an API key from your workspace’sapi_keys table (provider: ag-ui or a2a).
Important Notes
- The SSE stream is real-time only — connect before or during task execution
- Events stream for the duration of task execution and close on completion
- The
threadIdmaps to a CrewForm task ID - Works with any AG-UI-compatible client, including CopilotKit
- Rich interactions require a connected SSE client to display the modal — if no client is connected, the interaction will time out
Request
Response
The endpoint returnstext/event-stream with AG-UI events:
Quick Test
Health Check
Stream Events
React Hook
CrewForm includes auseAgentStream React hook for consuming AG-UI events:
Hook Return Values
| Field | Type | Description |
|---|---|---|
status | 'idle' | 'connecting' | 'streaming' | 'completed' | 'error' | Connection state |
textContent | string | Accumulated LLM response text |
toolCalls | AgUiToolCall[] | Tool calls with name, args, result, status |
pendingInteraction | AgUiInteractionRequest | null | Current interaction awaiting user response |
events | AgUiEvent[] | All raw AG-UI events received |
error | string | null | Error message if status is 'error' |
respond | (response) => Promise<void> | Submit a response to a pending interaction |

