games.cavu.clientFrame

chris.pardy.family

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "intent": {
      "description": "A game intent. The host stamps `viewer` and `serverTime` before the game's reduce() sees it; any client-sent values for those are overwritten.",
      "properties": {
        "intent": {
          "description": "Typed by the game: games.cavu.<game>.defs#intent.",
          "type": "unknown"
        },
        "seq": {
          "description": "Client sequence number; echoed back as `ack` in snapshots so the client can drop confirmed predictions.",
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "seq",
        "intent"
      ],
      "type": "object"
    },
    "join": {
      "description": "Enter a game room. Rooms are chosen by the server for games that declare them (e.g. one room per UTC day).",
      "properties": {
        "game": {
          "description": "Pack id, e.g. 'haiku-day'.",
          "maxLength": 64,
          "type": "string"
        },
        "room": {
          "maxLength": 128,
          "type": "string"
        },
        "viewer": {
          "description": "Guest id. Superseded by the authenticated DID once atproto OAuth lands.",
          "maxLength": 256,
          "type": "string"
        }
      },
      "required": [
        "game",
        "viewer"
      ],
      "type": "object"
    },
    "main": {
      "description": "Frames a client sends up the games.cavu.subscribeSession socket (DAG-CBOR event-stream framing: header {op:1, t:'#join'|'#intent'|'#ping'} + body).",
      "properties": {
        "frame": {
          "refs": [
            "#join",
            "#intent",
            "#ping"
          ],
          "type": "union"
        }
      },
      "required": [
        "frame"
      ],
      "type": "object"
    },
    "ping": {
      "properties": {},
      "type": "object"
    }
  },
  "id": "games.cavu.clientFrame",
  "lexicon": 1
}

Validate Record

Validate a record against games.cavu.clientFrame

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:dp7v5b5kejmmzzpwmqyf5wj6
CID
bafyreifocrc4kt5vkqcuqizwkj6mb3bsvieoljbu6mn7rkwunelc6pfmo4
Indexed At
2026-10-07 02:02 UTC
AT-URI
at://did:plc:dp7v5b5kejmmzzpwmqyf5wj6/com.atproto.lexicon.schema/games.cavu.clientFrame

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Bidirectional game session. Server->client messages are below; client->server frames are games.cavu.clientFrame.

  • Frames a client sends up the games.cavu.tier-madness.subscribeGame socket. Intents only: the server validates each, records it in the player's own PDS (secret move + public commitment), and only then applies it.

  • A game's live channel. The socket is bidirectional: the client sends games.cavu.tier-madness.clientFrame frames (#auth then #create/#join to play, or just #spectate to watch); the server sends a #snapshot of the game as…

Lexicon Garden

@