juicyjuicy
Publish browser games you make with AI to juicyjuicy.games, and get a link your friends can play.
In your AI coding agent (Claude Code, Codex, GitHub Copilot, Cursor, Gemini CLI, Antigravity, or any agent that can run commands), open your game's folder and paste:
Run npx juicyjuicy setup, then publish this game to JuicyJuicy
setup installs the JuicyJuicy skill for the agents on your machine (in ~/.agents/skills, plus ~/.claude/skills and Antigravity's folders when you have them) and logs you in (approve in the browser). It replaces only copies of the skill it wrote; a copy you changed or linked stays unless you pass --force (a changed copy is backed up to ~/.juicyjuicy/skill-backups). After that, just say "publish this game to JuicyJuicy". Or do it yourself:
npx juicyjuicy publish # upload and print the link (first time: logs in, writes juicy.json)
npx juicyjuicy init # create or edit juicy.json
npx juicyjuicy check # validate without uploading
npx juicyjuicy list # your games and their versions
npx juicyjuicy publish --draft # upload without making it live
npx juicyjuicy rollback # make an earlier version or a draft live
npx juicyjuicy open # open the game page
npx juicyjuicy pull <slug> # download your game's live version, to change it on another computer
Every command takes --json (one JSON object per line, the last one is the result) and --yes (never prompt). Exit codes: 0 ok, 1 fix the game or juicy.json, 2 log in, 3 network or server.
No thumbnail in juicy.json? publish takes a screenshot of your game with the Chrome, Edge, Chromium or Brave on your machine (headless, at the game's aspectRatio) and uses that; a page that stays one colour counts as no screenshot. Turn it off with --no-auto-thumbnail; if it can't, the game's tile shows its title on a gradient.
Environment: JUICY_TOKEN (a token from juicyjuicy.games/settings/tokens, for CI), JUICY_API_URL (another server, e.g. http://localhost:3000; https only, plain http only for localhost) and JUICY_BROWSER (the browser for the screenshot, if it isn't found).
In a sandbox that reaches only allowed domains (Claude Cowork, claude.ai), allow juicyjuicy.games and *.r2.cloudflarestorage.com and use a JUICY_TOKEN; otherwise the CLI stops with NETWORK_BLOCKED and names the blocked host.
Full guide: https://juicyjuicy.games/docs/publish