hiloop runs tail follows a run’s events live, the streaming companion to
query. Where a query answers a question about a run after the
fact, the tail shows events arriving in real time — point it at a run and watch the model calls, tool
calls, and stdio stream in as the agent works.
Watch a run end to end
You need two things: a command to capture, and the run’s id to follow. In one terminal, wrap your agent withhiloop run — it announces the run id on stderr as
the run registers:
Ctrl-C. Pass
--no-auto-resume to use only the initial connection:
Events appear as hiloop captures and flushes them. A long-running agent streams progressively; a
short command’s events arrive together when it finishes. The tail is read-only and never blocks
the run.
Scope what you follow
Narrow the stream to one signal:JSON output
For piping intojq or another tool, --output json emits each event as one JSON object per
line, exactly as received from the live stream:
Live events carry scalar attribute values only. A nested object or array in an event’s
attributes — for example a structured annotation payload written with
hiloop annotations add --data —
is stored in full but omitted from the live stream. Use
hiloop query to read the complete stored payload,
nested values included.Resuming after a disconnect
The tail is resumable: every event carries an opaque cursor, and on a dropped connection the client reconnects without a fixed attempt limit and resumes from the last event it saw — no gaps and no duplicates. You don’t have to do anything; a long-lived tail survives network blips and the server’s periodic connection refresh on its own. Use--no-auto-resume when an external supervisor owns the
reconnect policy.
Try it without an agent
You can see the whole loop with any command — wrap a shell loop and tail it:log event tagged with the run’s lineage, and it
streams straight to your tail.