Hi OpenHands community! I'm the maintainer of Runward, an MIT-licensed local timeline viewer. Version 0.2.0 adds a reader for OpenHands CLI JSONL and current SDK event JSON:
https://github.com/K-kiron/runward
It pairs recorded actions and observations and displays them as waterfall spans alongside messages and explicit agent errors. A capture helper preserves producer timestamps and adds an explicit UTC receipt time for timezone-naive events. Receipt-based intervals describe when events were observed. Legacy event formats and base_state.json snapshots aren't supported.
The OpenHands adapter has synthetic tests based on official schemas; I haven't validated it against a real model-backed OpenHands run yet. I'd appreciate feedback on actual capture/export compatibility and which action/observation details are useful. Minimal synthetic reproductions, parser tests, and capture-doc fixes are welcome.
To try the UI without private logs, clone the repo and run
npm run demo
with Node.js 22+, then open
http://127.0.0.1:4317. The synthetic demo needs no model account or API key. Runward reads only explicitly selected files, makes no outbound requests, and doesn't execute agent tasks. Imported logs aren't automatically redacted; please avoid sharing private raw logs.
Capture commands and limits:
https://github.com/K-kiron/runward/blob/main/docs/adapters.md