GamesConnect AI

Publish from wherever you make games

Your AI tool writes the game; Sentinel gives it a URL. Connect once and say “publish it”. Everything goes through the same checks and the same incremental upload, whichever way you come in.

Connect your AI tool

Adds Sentinel's tools to every Claude Code session, including playtest_game, so Claude can see and play what it built.

1Add the MCP server (once, for all projects)
terminal
claude mcp add --scope user -e SENTINEL_API_URL=https://sentinel.cybercorpresearch.com sentinel -- npx -y https://sentinel.cybercorpresearch.com/cli/sentinel.tgz mcp
2Then just ask

“Make a small arcade game in this folder and publish it to Sentinel.” Claude calls deploy_game and gives you the link. The first time, it asks you to approve a sign-in link.

Try asking: “Make a small arcade game in this folder and publish it to Sentinel.”

Terminal

Run it in your game folder. No config needed. It finds your build output (and runs your build if needed), skips secrets, and prints a live link.

terminal
npx -y https://sentinel.cybercorpresearch.com/cli/sentinel.tgz
sentineldeploy the current folder (builds if needed)
sentinel game.zipdeploy a zip, an .html file, or an .apk
sentinel checkrun every check without uploading
sentinel devpreview in a local player with the SDK mocked, live reload
sentinel --previewnew URL without going live
sentinel rollbackmake the previous version live
sentinel --jsonmachine-readable output for agents and CI

HTTP API

One request for quick jobs (up to 100 MB), or the incremental protocol for big builds. Get a token at Settings › Tokens.

one request
curl -H "Authorization: Bearer $SENTINEL_TOKEN" \
  -F file=@game.zip -F name=my-game \
  https://sentinel.cybercorpresearch.com/api/v1/publish
incremental (what the CLI does)
POST https://sentinel.cybercorpresearch.com/api/v1/deployments  { game, files: [{ path, sha, size }], meta }
  → 409 missing_files { missing: [sha…] }
PUT  https://sentinel.cybercorpresearch.com/api/v1/files/<sha>   (raw bytes, for each missing sha)
POST https://sentinel.cybercorpresearch.com/api/v1/deployments  (same body) → 201 { game, deployment }

Full reference for agents: /llms.txt

Game SDK (optional)

Games work without it. Add one script tag for leaderboards, cloud saves, purchases and player identity. It's served from your game's own origin, so it works with every engine. Opened outside Sentinel, it falls back to local storage instead of breaking.

index.html
<script src="/__sentinel/sdk.js"></script>
<script>
  const { user } = await Sentinel.init();          // { handle } or null
  Sentinel.gameplayStart();                         // engagement + pause hooks
  const { rank } = await Sentinel.submitScore(1200);
  const top = await Sentinel.leaderboard({ limit: 10 });
  await Sentinel.save("progress", { level: 3 });    // cloud save, falls back to localStorage
  const r = await Sentinel.purchase("gold-skin");   // player confirms in a Sentinel dialog
  if (r.ok) unlockGoldSkin();
  Sentinel.on("pause", pauseGame);
</script>

Sell things by declaring products next to your game. They're created on deploy:

sentinel.json
{
  "products": [
    { "sku": "gold-skin", "title": "Gold skin", "price": 0.99, "kind": "unlock" },
    { "sku": "coins-100", "title": "100 coins", "price": 1.99, "kind": "consumable" }
  ]
}

Payments run in sandbox mode in this prototype (test card 4242 4242 4242 4242). Creators keep 90%. The payment network is a pluggable provider.

How uploads work

  • Static output only. Builds run on your machine or in your agent's sandbox. Sentinel hosts the result. What you tested is what ships.
  • Every deploy is permanent. It gets its own URL forever. Your game's main URL points at the live one; rollback is instant.
  • Only changes upload. Files are identified by their SHA-256. Re-deploying a 200 MB Unity build after a code change sends kilobytes.
  • Secrets never leave your machine. .env and key files are skipped, and API keys found in game code stop the deploy.
  • Engines just work. Unity, Godot, Construct, GameMaker, PICO-8, Phaser, Three.js and more are detected and served with the headers they need.
  • Optional sentinel.json sets title, description, tags, orientation, build command and output folder.