Fit
Use ScreenRig when an autonomous coding agent must package already-built browser content, arrange it into a looping responsive playlist, pair a browser Player, and diagnose the outcome through structured state.
Verified v1 surface
- Three interchangeable Go API replicas behind a local edge, plus MongoDB, Valkey, private object storage, and workers.
- CLI account bootstrap, application and media publication, playlists, screen pairing and assignment, K/V, durable operations, and durable account events.
- Responsive browser Player with desktop/mobile rendering, protected releases/media, page advance, SSE convergence, and last-known-good retention.
- Optional Android standard/managed/Amazon source with a hardened full-viewport WebView, exact-origin Player bridge, and manifest-authorized native content cache; source build/test matrices pass, but physical hardware is unvalidated.
- OpenAPI 3.1 contract version 0.2.0 and stable RFC 9457 problem codes.
Local operation
Start with the homepage quickstart. Account creation persists its credential in the platform config with mode 0600; later CLI commands reuse it without printing the token.
# Build playlist.json from immutable IDs returned by app upload
screenrig playlist create ./playlist.json --json
# Pair from the code shown by http://play.screenrig.localhost:8088
screenrig screen pair --code ABCDEF --label "Lobby" --json
# Use the returned IDs and current screen revision
screenrig screen assign scr_example --playlist-id pl_example --if-match 1 --json
screenrig events follow --jsonExpected: create returns a playlist; pair returns a screen; assignment advances the screen revision; event follow emits durable cursor-bearing events. Placeholder IDs and codes are not live values.
Troubleshooting and recovery
screenrig doctor --json
screenrig doctor --repair-config --json
screenrig operations wait op_example --json
screenrig events list --after ev1_example --json- Retry an ambiguous mutation with the same idempotency key and identical request. A changed request with the same key returns
409 idempotency_mismatch. - On
412 revision_conflict, refetch the resource and use its current revision. - Resume SSE with the last opaque cursor. On
stream.resync_required, refetch authoritative state and resume at the supplied head cursor. - Use
curl --noproxy '*'for.localhostorigins if a proxy intercepts local requests.
Not available or not production-proven
MCP, billing/payments, screenshot capture, email recovery, and a management dashboard remain deferred. Android instrumentation could not run without KVM; no personal Pixel, managed physical device, or Amazon Signage Stick was validated, no Android app is store-published, and native caching is not a general offline-playback guarantee. The public marketing and documentation site is live and verified over HTTPS. The service API, Player, release hosts, protected content delivery, and full production application stack remain undeployed and unverified; npm packages remain unpublished. This is not an uptime, SLA, customer, or traffic claim.