Skip to main content
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 with hiloop run — it announces the run id on stderr as the run registers:
In a second terminal, follow that run:
Each event renders as one line, newest last, and the tail keeps running — reconnecting automatically without a fixed attempt limit if the connection drops — until you stop it with 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 into jq 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:
Every line the command prints becomes a log event tagged with the run’s lineage, and it streams straight to your tail.

Live tail vs. query