Follow the action log live
GET
/log/stream
const url = 'http://127.0.0.1:7700/api/log/stream?after=0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://127.0.0.1:7700/api/log/stream?after=0' \ --header 'Authorization: Bearer <token>'Server-Sent Events. The box replays every event after the cursor, then sends new events as they are
written. Each event is id: <seq> and data: <event as JSON>. A comment line : beat arrives
every 25 seconds to keep the connection open.
To resume after a disconnect, send the Last-Event-ID header (browsers do this for you) or
?after=<seq>. The header wins when both are present. From outside the box, a browser’s
EventSource cannot send headers, so pass the token as ?access_token=<token>.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”after
integer
Replay events with a seq greater than this. Default 0.
task
string
Only events of this task.
Header Parameters
Section titled “Header Parameters”Last-Event-ID
integer
The last seq you received. Takes precedence over after.
Responses
Section titled “Responses”An event stream that stays open.
Media typetext/event-stream
string
Example
id: 41data: {"seq":41,"at":"2026-10-24T09:13:40.902Z","type":"task.state","task":"t3k9x2a1b2","state":"done"}GurtOS is open source under the Apache License 2.0.Source code on GitHub.