Skip to main content
Replace the single overwritten tool line with a bounded, multi-line rolling status feed.
The compositor is a pure transform: running, done, error.

Quick Start

1

Turn it on for a bot

Set progress_style: feed under a channel’s streaming block in your bot YAML:
2

Tune the window

Cap how many lines and characters the feed shows:
3

Build your own renderer

The core compositor is pure and reusable — fold events, then render:

How It Works

Events fold by correlation id, so the same tool’s line advances in place from running to done or error. The same correlation id updates the same line in place. Terminal states are sticky: once a line is error (or done), a late running event never downgrades it back.

Configuration Options

The streaming block accepts these keys per channel. Defaults preserve today’s single-line behaviour exactly. The core render_progress function takes the same limits as keyword arguments max_lines and max_line_chars.

State Semantics

Each event type maps a line to a state and glyph. A ProgressLine carries id, kind (tool, plan, approval, or command-output), text, and state (running, done, or error).
The default progress_style="line" is byte-identical to today’s behaviour. The feed is fully opt-in — nothing changes until you set progress_style: feed.

Best Practices

The rolling feed shines when a turn calls several tools. Short single-tool turns are fine with the default line style.
Chat platforms rate-limit message edits. A small progress_max_lines keeps the rendered feed compact and edit-friendly.
The feed renders for errors, but keep your own error logging — the feed is a bounded rolling view, not a durable audit trail.
merge_progress_line and render_progress are pure and dependency-free, so you can render progress in a TUI, web UI, or tests without any transport.

Streaming

Streaming responses from agents

Streaming Tool Events

Typed tool-call events during streaming

Tool Progress Streaming

Emit mid-tool progress updates

Run Stream Events

Consuming the run event stream