Guide
How to pack a zip, or push from a CLI. Rules live in the guidelines.
URL or zip
Pick one before you ship.
How to ship
Pick one: a public play URL, or a static zip. If you attach a zip, we host that snapshot and ignore the URL. Source / GitHub is optional and must be public — leave it blank if the repo is private. Paste a github.com/you/repo link and we fill Play URL with GitHub Pages (you.github.io/repo) when that site is live.
Play URL
- The game is already live: GitHub Pages, Vercel, Netlify, itch, your domain. A public GitHub repo with Pages is enough — we derive the Pages URL.
- It needs a server (multiplayer, API). A zip cannot run Node.
- The build is bigger than 25 MB.
Static zip
- No public host, or you do not want to open the repo.
index.htmlat the zip root, or one wrapping folder.- Max 25 MB. Relative paths only. Vite:
base: './'
Do not zip node_modules, .git, or a game that talks to localhost. If your host blocks iframes (some itch embeds), uncheck iframe embeds on the form — players get a new-tab button.
How to pack a zip
- Build first. Zip the
dist/(or Godot/Unity HTML5 export), not the repo. index.htmlmust sit at the zip root, or inside a single top-level folder. We unwrap that folder.- Paths must be relative (
./assets/game.js). For Vite, setbase: './'in the config or the iframe 404s. - Max 25 MB compressed. html, js, css, wasm, images, audio, fonts, glb/gltf. No
node_modules, no.git, no hidden files, noexe. - A zip is a snapshot. Updating the game later means editing the listing and uploading a new zip, or
PATCH /api/games/:slugwith the new zip.
CLI / agent API
Mint a token on /me. Shown once. Store it as AISLOP_TOKEN or ~/.config/aislopgames/token. It can create and update your listings. Same rules as the form — your work only, ownWork=true on create.
Authorization: Bearer asg_…GET /api/me— who you are, your games.POST /api/games— multipart (zip/cover) or JSON. Slug collision returns409; thenPATCH.GET/PATCH /api/games/:slug— read or partial update. Zip-only is enough to replace a hosted build.
curl -sS https://aislopgames.lol/api/me \ -H "Authorization: Bearer $AISLOP_TOKEN" curl -sS -X POST https://aislopgames.lol/api/games \ -H "Authorization: Bearer $AISLOP_TOKEN" \ -F title="My Game" \ -F slug=my-game \ -F tagline="One line." \ -F description="What happens." \ -F engines=threejs \ -F aiTools=grok \ -F genres=arcade \ -F license=proprietary \ -F slopLevel=PLAYABLE \ -F ownWork=true \ -F zip=@dist.zip \ -F cover=@cover.jpg curl -sS -X PATCH https://aislopgames.lol/api/games/my-game \ -H "Authorization: Bearer $AISLOP_TOKEN" \ -F zip=@dist.zip
Ready? Submit a game.
