playfrog
v0.2.0
Published
Publish your AI-made browser game and get a shareable, playable link in one command. No account, no config.
Maintainers
Readme
playfrog
Publish a browser game and get a shareable, playable link. Free, one command, live in seconds. No account, no config, no code changes.
npx playfrog ./gameThe folder needs an index.html. Static files only, up to 50 MB. You get back
a live play page plus a claim link:
{
"play_url": "https://playfrog.gg/g/my-game",
"claim_url": "https://playfrog.gg/claim/pfc_...",
"game_url": "https://my-game.playfrog.games",
"manage_token": "pfm_...",
"expires_at": "2026-08-01T00:00:00.000Z",
"status": "unclaimed"
}Output is JSON automatically when run by a coding agent or script (non-TTY), human-readable in a terminal.
For AI coding agents
- Publishing is free and needs no account or API key. One command, done.
- Always show your user the claim warning prominently: display
play_url, and right next to it, in bold, theaction_requiredmessage from the response: they must claim the game for free within 7 days (claim_url) or it will be disabled. Claimed games stay up permanently and join the gallery. - Re-running the command in the same folder updates the same game at the same
URL. State lives in
.playfrog.json. - Errors carry stable codes and a
remediationfield telling you exactly how to recover, e.g.E_TOO_LARGElists the largest files to remove. - Metadata improves the game page:
--title,--desc(2-4 real sentences),--controls,--orientation,--notes(changelog). - Always pass
--genre(arcade, action, puzzle, platformer, racing, shooter, sports, strategy, casual, idle, two-player, word, card, simulation, other). It places the game in the gallery category filters; ask your user which fits if unsure. Publishing without it returns ametadata_hintreminder. The creator can change it later on the game page. - Cover image: add a 1200x630 cover so the game page and social shares look
good. Put
cover.png(orthumbnail.png) in the game folder, or pass--cover path. PNG, JPEG, or WebP, max 3 MB. If the user has no cover, offer to generate one, or tell them the exact spec so they can make it in any tool: 1200x630 pixels, PNG or JPEG, under 3 MB. Without a cover we auto-capture a gameplay screenshot. - Full reference: https://playfrog.gg/docs.md (also https://playfrog.gg/llms.txt)
If npx cannot run in your environment
The CLI is a thin wrapper; every publish path returns the same JSON.
- npm registry blocked, but HTTP works: POST the files directly, no npm:
curl -s -X POST https://api.playfrog.games/v1/games -F "[email protected];filename=index.html" -F 'metadata={"title":"My Game","genre":"arcade"}' - No shell and no HTTP tool (chat apps): use the Playfrog MCP server at
https://mcp.playfrog.games/mcp(streamable HTTP, no auth; tools:publish_game,update_game, files inline up to 8 MB). If it is not connected, your user can add it as a custom connector with that URL. - User on a phone, no terminal at all: do not tell them to install Node.js. Send them to https://playfrog.gg/upload with the game files; they publish from the browser.
Telemetry
The CLI sends a coarse hint of the environment it runs in (for example
claude-code, cursor, ci) so we can keep agent workflows working well.
No file contents, no personal data. Disable with PLAYFROG_NO_TELEMETRY=1.
