Skip to content
Changelog

The AG-UI interface supports ag-ui-protocol 1.0

September 23, 20261 min read

Agno accepts any ag-ui-protocol from 0.1.15 up, so new installs of the AgentOS AG-UI interface picked up 1.0 as soon as it shipped. The 1.0 release lets a tool result message (ToolMessage.content) carry a list of content parts, and the AG-UI resume code still expected a string. When a frontend answered a paused run with a list, a confirmation ended in RUN_ERROR and the tool never ran. A frontend tool result reached the model as raw objects, AgentOS could not save the run, and the run stayed PAUSED.

The AG-UI interface now turns each tool result into text before it resolves the pause. It keeps a string as it is. For a list, it joins the text parts with newlines and drops every other part with a warning. The real output below comes from resolving two pauses with list content, before the fix and now:

Before:
confirmation:    TypeError the JSON object must be str, bytes or bytearray, not list
external result: [TextPart(type='text', ..., text='first line'), TextPart(type='text', ..., text='second line'), ImagePart(type='image', ...)]
 
Now:
confirmation:    confirmed = True | resolved = True
WARNING Tool result tc3: ignoring image parts, using its text
external result: 'first line\nsecond line'

The AG-UI interface behaves the same on ag-ui-protocol 0.1.15 through 0.1.22, and the supported range in Agno stays the same. Install or upgrade with the agui extra to get the latest protocol package:

uv pip install -U 'agno[os,agui]'

ag-ui-protocol 1.0 removed the legacy binary content part, so AgentOS answers a request that still sends one with 422.

See the cookbook, and learn more about the AG-UI interface in the documentation.

Frequently asked questions

Yes. The AgentOS AG-UI interface works with ag-ui-protocol 1.0 and with 0.1.15 through 0.1.22. Install it with uv pip install -U 'agno[os,agui]'.

In ag-ui-protocol 1.0, a tool result can arrive as a list of content parts. The Agno AG-UI resume code expected a string, so a confirmation ended in RUN_ERROR and an external tool result reached the model as raw objects. The AG-UI interface now joins the text parts into one string before it resolves the pause.

The Agno AG-UI interface uses only the text parts of a tool result to answer a pause. It drops other parts, such as images, and logs a warning that names the tool call and the part types it ignored.

Shipped around the same time