Insert folder   Press build

Ship your
web game

Gameshipper turns a web game folder into Windows, Mac and Linux builds you can upload to Steam, plus Xcode and Android Studio projects for the App Store and Google Play.

Read the docs

FREE PLAY · open source, MITNode.js 22.12+CLI + MCP server

  • Windows
  • Mac
  • Linux
  • Steam
  • iOS
  • Android

Stage select

Five commands from folder to store

Each one does a single job, and every error comes with a fix. Run them by hand or let an agent run the loop.

  1. STAGE 1

    Init

    Detects your game, its icon and its art, and writes gameshipper.json.

    npx gameshipper init
  2. STAGE 2

    Play

    Runs it in the same shell the builds use. A smoke run reports errors, missing files and crashes.

    npx gameshipper play --smoke
  3. STAGE 3

    Build

    Windows, Mac and Linux apps, plus all eight Steam store images.

    npx gameshipper build
  4. STAGE 4

    Check

    Launches the build offline at Steam Deck size and reports 18 checks.

    npx gameshipper check
  5. STAGE 5

    Publish

    Uploads the builds to Steam, itch.io and GitHub Releases.

    npx gameshipper publish

No build step required

A folder with an index.html is enough

  • Works with what you have. three.js, Phaser, PixiJS, Babylon.js or plain canvas. Your game doesn't need npm.
  • Runs offline. Files your game loads from CDNs are downloaded into the build and pinned in gameshipper.lock, so builds are reproducible.
  • Has a bundler? If package.json has a build script (Vite, Parcel, webpack, esbuild, Rollup), Gameshipper runs it and packages dist/.
OUT/LOOT DROP
out/
windows/  Spinning Cube.exe
mac/      Spinning Cube.app  signed on a Mac
linux/    spinning-cube
ios/      App/App.xcodeproj  Xcode project
android/                     Android Studio project
store/    8 Steam images, screenshots/

Player 2 has entered the game

Built so an AI agent can run it end to end

  • One JSON object per command. Add --json and stdout is exactly { ok, data, errors, warnings, logPath }.
  • Every error says how to fix it. Stable codes, plain-English messages, and a fix on every error.
  • Nothing prompts an agent. With --json or --yes, missing input comes back as INPUT_REQUIRED, naming the flag to pass.
  • MCP server included. claude mcp add gameshipper -- npx -y gameshipper mcp
  • gameshipper_status
  • gameshipper_init
  • gameshipper_play
  • gameshipper_build
  • gameshipper_check
  • gameshipper_publish
  • gameshipper_ci_init

How agents use it

PLAY --SMOKE --JSONEXIT 1 · "data" omitted
{
  "ok": false,
  "errors": [
    {
      "code": "GAME_FILE_MISSING",
      "message": "The game requested Style.css, which isn't in the build.",
      "fix": "The file is named style.css: use exactly that letter case in your code."
    },
    {
      "code": "GAME_FILE_MISSING",
      "message": "The game requested missing.png, which isn't in the build.",
      "fix": "Check the path's spelling and letter case, and that the file is inside your game folder."
    }
  ],
  "warnings": [
    {
      "code": "ICON_MISSING",
      "message": "No icon set, so builds use the default Electron icon."
    }
  ],
  "logPath": ".gameshipper/logs/play-2026-10-01T02-33-30-008Z.log"
}

Power-ups

Steam features built in

Your game gets window.steam and window.gameshipper.saves in every desktop build. Every Steam call resolves to a harmless value when Steam isn't running, so the game never needs to guard each call.

  • Achievements, stats, leaderboards

    Plus rich presence and the Shift+Tab overlay, through window.steam and your own copy of the Steamworks SDK.

  • Steam Deck

    Builds start fullscreen on Deck, the on-screen keyboard opens for text fields, and check tests the 1280x800 layout.

  • Saves

    One JSON file per slot, a format Steam Auto-Cloud can sync. The same API works on iOS and Android.

  • Eight store images

    Every Steam capsule, header and hero at its exact size, cut from one key art and one logo.

  • Signed Mac builds

    Built on a Mac: universal apps, signed and notarized with your Apple Developer ID when your credentials are set.

  • CI in one command

    ci init writes a GitHub Actions workflow that builds and runs the game on each OS.

Co-op mode

Cross-build from the OS you have

Which targets each host operating system can build
You're onWindowsLinuxMaciOS + Android projects
macOS yes yes yes universal with Apple's command-line tools, signed yes
Linux yes yesApple Silicon only, unsigned yes archiving for iOS needs a Mac
Windows yes yes no yes archiving for iOS needs a Mac

Building from each OS

Free play

Press start

Free and open source under the MIT license.

Read the docsGitHub