PUSHPLAY

Make games

Ask an AI for a game. It shows up on your Deck.

The games template is a GitHub repo set up so coding agents know exactly what to do: scaffold a game, make it work with a controller, check it at Steam Deck size, draw its art and push. GitHub Actions builds it, and PushPlay installs it.

Use the games template

Set up in three steps

1. Make your repo

Click Use this template → Create a new repository. Private is fine. Use the template rather than forking: forks have Actions turned off.

2. Watch it from your Deck

In PushPlay: Add game → GitHub, sign in with your phone, and pick the repo. The sample game appears after the first build.

3. Ask for a game

Open the repo in your coding agent and describe what you want. Every push builds, and the Deck gets the newest version.

Use whatever agent you like

The rules live in AGENTS.md, which Codex, Copilot, Cursor, Gemini and others read automatically. Claude Code reads it through CLAUDE.md. Then just ask:

Make a game where you defend a breakroom from paper airplanes.

From your phone

Claude Code: the Claude app → Code, or claude.ai/code, and pick your repo. Codex: chatgpt.com/codex. Copilot: open an issue describing the game and assign it to Copilot.

From a computer

Clone the repo and use any agent CLI or IDE. To work by hand instead:

npm run setup
npm run new-game my-game
npm run dev my-game      # localhost:5173
npm run check my-game    # what CI runs

Cloud agents often push to a branch or open a pull request. That’s fine: every branch builds, and the Deck gets the newest build.

Already have a game?

You don’t need the template. Any GitHub repo can be watched:

Plain HTMLindex.html at the root, or in dist/ or docs/. Plays straight from the latest commit.
Release zipsAttach pushplay-web.zip or pushplay-linux-x64.zip to a GitHub release, for Godot and other native builds.
Anything elseSet up auto-builds in PushPlay opens a pull request adding the build kit and a starter manifest. If there’s a build script, the kit runs it.

The manifest

A pushplay.json at the game’s root gives it a proper name, art and details. Only id, name and entry are required.

{
  "id": "breakroom-resort",
  "name": "Breakroom Resort",
  "description": "Office-party minigames with real physics.",
  "version": "0.3.3",
  "entry": { "web": "index.html", "linux-x64": "Game.x86_64" },
  "art": { "cover": "art/cover.png", "hero": "art/hero.png" },
  "controls": "gamepad",
  "players": "1-4",
  "online": true
}

Full reference: AGENTS.md in the games template.