tabletop
with friends
THE BUILDER’S HANDBOOK
Ship & maintainSDK 0.1.0

Publish once. Start many games.

Upload game code and artwork through the CLI; keep each room on its original release.

Read Markdown ↗

The deployment client is available in this package. The production platform must have its deployment database, R2 bucket, and Worker loader configured before accepting uploads.

npx twf init --project my-game --entry src/game.ts
npx twf login
npx twf deploy --dry-run
git add .
git commit -m "Prepare deployment"
npx twf deploy

Repository policy

{
  "schemaVersion": 1,
  "project": "my-game",
  "entry": "src/game.ts",
  "visibility": "private",
  "assets": "public",
  "compatibilityDate": "2026-08-21"
}

visibility must be explicit. Private projects are discoverable and startable by their owner; invited players can join a room. Public projects can be discovered and started by others. Changing publication visibility does not revoke existing rooms.

What gets uploaded

The CLI builds the game with the SDK installed in this repository. Rules, SDK, engine, and the matching worker adapter form one immutable executor. The catalog and declared artwork are separate artifacts in R2. The website does not import your game into its own bundle.

Artwork paths refer to files under public, such as /assets/card.png. Generation scripts and original download URLs stay in your repository. They do not run in a player’s browser.

A release belongs to a room

A manifest digest identifies the exact release. Publishing an update changes the choice for new rooms; existing rooms retain their original code and artwork. Worker compatibility settings are pinned too. Keep old artifacts while any room depends on them.

Use --server http://localhost:5198 for an authenticated local platform. --allow-dirty creates an explicitly marked development build. Platform AI seats are not connected to external source provisioning in this release.

Tabletop with Friends Make something worth playing.