---
name: screenrig-prerelease
description: Operate the verified ScreenRig localhost prerelease and preserve its agent, protected-content, publication, and future-phase boundaries without claiming public service uptime.
---

# ScreenRig prerelease skill

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.

## Status gate

This is a prerelease localhost operations skill. The source checkout currently has:

- a TypeScript CLI, JSON envelope, secure config handling, and deterministic application packer;
- a browser SDK and responsive Player PWA;
- optional Android `standard`, `managed`, and `amazon` source flavors with a manifest-authorized native content cache;
- a complete OpenAPI v0.2.0 contract and three-replica Go localhost backend;
- private storage, durable workers, operations, and cursor events; and
- the static discovery site.

The full account, upload, playlist, pairing, protected playback, K/V, and event workflow is verified on localhost. The public ScreenRig 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; the `screenrig` npm package remains unpublished. The live site is not evidence of service availability, uptime, SLA, customers, or traffic.

## Safe local verification

Only from the ScreenRig source checkout:

```sh
node packages/cli/dist/bin.js --help
node packages/cli/dist/bin.js app pack packages/cli/fixtures/pack/ok-app --json
```

The first inspects the implemented command tree. The second packages a fixture locally and contacts no backend. Do not install an unrelated npm package named `screenrig`.

Start the full local environment with `make local-up`. The local API origin is `http://api.screenrig.localhost:8088`.

## Implemented localhost v1 workflow

These command names are implemented against the supported local stack:

```text
screenrig account create --email ADDRESS
screenrig app upload <directory>
screenrig playlist create <file>
screenrig playlist update <id> <file> --if-match REVISION
screenrig screen pair --code CODE
screenrig events follow [--after CURSOR]
```

Use `--json` for agent automation. A successful command returns `{ "ok": true, "data": ... }`. A failure returns `{ "ok": false, "error": ... }`. Branch on HTTP-style `status` and stable `error.code`, never on prose in `error.detail`.

Mutations carry request and idempotency identifiers. If a response is ambiguous, retry with the same idempotency key unless the intended request body changed. Mutable resource changes use revisions and `If-Match`; a conflict returns `revision_conflict` with a corrective next action.

Application uploads may begin in `receiving`; long operations are observed by operation ID. Events use opaque cursors. Do not decode cursors; resume with the last cursor or `Last-Event-ID`. On `stream.resync_required`, refetch authoritative state and resume at the supplied head cursor.

## Content and security boundaries

- Upload already-built static application directories. ScreenRig does not build or execute uploaded source on the server.
- Intended player content types are application releases, private images, private videos, and external HTTPS iframes arranged in looping responsive CSS Grid pages.
- An account bearer token belongs only on the account API. It must never enter the player, uploaded application, URL, logs, or event payloads.
- Protected application releases, media, and K/V use screen-manifest grants. They are not public file hosting, a public CDN, or an arbitrary download service.
- A public screen URL grants unlisted read-only playback. It is not confidential; an authorized viewer can inspect bytes delivered to the browser.
- K/V values visible to a browser application are not secrets.
- Never add random or timestamp cache-busting query parameters. Correct cache headers or invalidation instead.

## Design limits

The server publishes limits of 50 screen records and 1 GiB of retained uploaded content per account. These are not a published price or commercial promise.

## Do not claim in v1

- MCP
- billing, payments, x402, or Stripe
- screenshot or screen-capture APIs
- email recovery
- a management dashboard
- Android instrumentation or validation on a personal Pixel, managed physical device, or Amazon Signage Stick
- Android app-store publication or guaranteed unattended boot for an ordinary install
- an offline-playback guarantee

## Current response to an operation request

Explain that ScreenRig is prerelease and the complete workflow is verified only on the supported localhost stack. Offer to run that local lifecycle when the source checkout is available. Do not treat the marketing URL as a service API, Player, release, or protected-content endpoint. Do not fabricate package publication, token, customer, download, service production deployment, metric, uptime result, or deferred capability.
