PUBLIC MARKETING + DOCS · HTTPS VERIFIED. Service API, Player, release hosts, and protected content remain undeployed in production; service workflows below are verified on localhost.

path: /docs/ · reviewed 2026-08-14view as markdown →

docs · operator model

Operate the verified localhost path.

ScreenRig is an agent-operated digital-signage service: an agent uses the CLI and REST API to upload content, assemble a looping playlist, pair a browser screen, and observe the result.

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.

Do not use it as public object storage. ScreenRig intentionally does not expose general file listing or arbitrary download routes.

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.

shell · continue after upload
# 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 --json

Expected: 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.

Authority and origins

Account API
Account bearer, CLI only. Never put it in a URL, Player, uploaded app, log, or event.
Player runtime
Pairing, paired-device, and runtime cookies remain on the trusted Player origin.
Uploaded release
Each immutable release runs in a sandboxed, isolated release origin and receives only placement-scoped capability.
Protected content
Media, release assets, and K/V require a current manifest grant. An object key or resource ID is not authority.

Troubleshooting and recovery

shell · inspect before retrying
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 .localhost origins 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.