# Host a game, app or website on guisesAi (free)

guisesAi hosts static sites at **https://NAME.guises.site**: HTML5 games, web apps built to static files,
Claude artifacts saved as HTML, portfolios, landing pages and docs. Every account hosts **one site free**,
for as long as it likes. Pro ($12 a year) hosts up to three.

The shorter **https://NAME.guises.ai** leads to the same site, unless its owner has published a page under that name.
A live example: https://games.guises.ai (seven small games for your phone, in one site of 37 files and about 90 KB, built and uploaded by Claude Code).

Good for: games made with canvas, Phaser, Three.js, PixiJS, Kaboom or p5.js; React, Vue, Svelte or Solid
apps built with Vite; Next.js with `output: "export"`; Astro, Eleventy, Hugo or Jekyll output; a single
index.html from a Claude artifact or a ChatGPT canvas.

Not for: anything that needs its own server at runtime (API routes, server actions, server-side database
calls, its own logins). Browser code may call public APIs and use browser storage.

## MCP server (Claude, ChatGPT, Claude Code, Cursor, Windsurf, VS Code and other MCP tools)

guisesAi is an MCP server at **https://guises.ai/mcp** (Streamable HTTP). It signs people in with OAuth: the app
sends the person to guisesAi to approve, then gets its token by itself.

- Claude and ChatGPT: add a custom connector with the address https://guises.ai/mcp, then sign in when asked.
- Claude Code: `claude mcp add --scope user --transport http guises https://guises.ai/mcp`, then `/mcp` and Authenticate.
- Tools that take a header instead: the person makes a token on https://guises.ai/app/host under AI agents, and it is
  sent as `Authorization: Bearer gsa_…`, for example
  `{"mcpServers":{"guises":{"url":"https://guises.ai/mcp","headers":{"Authorization":"Bearer gsa_…"}}}}`

Tools: `whoami`, `list_sites`, `create_site`, `deploy_files` (the files themselves, text or base64),
`upload_command` (a curl command to upload a zip of a built project) and `rollback_site`.
For app builders: OAuth 2.1 with PKCE and dynamic client registration; discovery at
https://guises.ai/.well-known/oauth-protected-resource and https://guises.ai/.well-known/oauth-authorization-server.
The server's card is at https://guises.ai/mcp/server-card, listed in https://guises.ai/.well-known/ai-catalog.json.

## Without MCP: sign in once, then deploy by yourself

Works for Claude Code, Codex, Cursor, other coding agents and any assistant that can make HTTP requests.
Full API description: https://guises.ai/openapi.json

1. Start a sign-in and show the person the link:

```
curl -sS -X POST https://guises.ai/api/agent/login -H "Content-Type: application/json" -d '{"client":"Claude Code"}'
```

   The reply has `verification_uri_complete` (like https://guises.ai/connect?code=ABCD-EFGH) and a `device_code`.
   Ask the person to open the link, sign in with Google and press Approve.

2. Every 5 seconds, ask for the token until it arrives (`authorization_pending` means keep waiting):

```
curl -sS -X POST https://guises.ai/api/agent/token -H "Content-Type: application/json" -d '{"device_code":"gsd_…"}'
```

   Keep the `access_token` (gsa_…) private, for example in an environment variable, never in the project.
   It lasts 90 days and only manages this person's hosted sites; they can disconnect it on https://guises.ai/app/host.

3. Create a site (skip if it exists: `GET https://guises.ai/api/agent/sites` lists them):

```
curl -sS -X POST https://guises.ai/api/agent/sites -H "Authorization: Bearer $GUISES_TOKEN" -H "Content-Type: application/json" -d '{"name":"space-run"}'
```

4. Build, zip the output folder's contents, and upload:

```
cd dist && zip -r /tmp/guises-site.zip . && curl --fail-with-body -sS -X POST https://guises.ai/api/agent/sites/space-run/deploy \
  -H "Authorization: Bearer $GUISES_TOKEN" -H "Content-Type: application/zip" --data-binary @/tmp/guises-site.zip
```

   No zip tool? Send JSON instead: `{"files":[{"path":"index.html","content":"<!doctype html>…"},{"path":"logo.png","content":"<base64>","encoding":"base64"}]}`
   with `Content-Type: application/json`.

5. The reply has the live address. To update, upload again; each upload replaces the live site.

## The other way: a prompt from the Host page

1. The person signs in at https://guises.ai/app/host and chooses a name: it becomes NAME.guises.site.
2. They copy the prompt shown and paste it to their agent. It holds a private deploy key for that one site,
   valid for 30 days, and the exact upload command.

## As a skill, for agents that keep skills

These steps as one SKILL.md file: https://guises.ai/.well-known/agent-skills/host-on-guises/SKILL.md
In Claude Code, this keeps it for every project:

```
mkdir -p ~/.claude/skills/host-on-guises && curl -fsSL https://guises.ai/.well-known/agent-skills/host-on-guises/SKILL.md -o ~/.claude/skills/host-on-guises/SKILL.md
```

## Building the files

1. Build static files with `index.html` at the top of the output folder (Vite: `dist`; Next.js export: `out`;
   Astro: `dist`; a plain project: the folder itself). Pages without their own file fall back to index.html.
2. Leave out `.env` files, private keys and secret API keys: everything uploaded is public.
3. Zip the **contents** of the output folder, not the folder itself.
4. Every reply says the live address, or exactly what to change. Fix, rebuild and upload again on an error.

## Limits

- 25 MB zipped, 900 files, 25 MB per file
- Files sent as JSON (deploy_files, or the JSON body of the deploy endpoint): 8 MB in total; send a zip for more
- Web files only (HTML, CSS, JavaScript, JSON, images, fonts, audio, video, WebAssembly and similar)
- Uploads are checked for secret keys, and pages asking for passwords or card details are reviewed
- 30 uploads a day per site
- Your own domain (like www.example.com) for a hosted site: with Pro, from https://guises.ai/app/host

## Links

- Hosting, in brief: https://guises.ai/host
- Step-by-step guides: https://guises.ai/guides/host-a-game, https://guises.ai/guides/publish-a-claude-artifact,
  https://guises.ai/guides/host-a-react-app, https://guises.ai/guides/host-with-claude-code
- Everything guisesAi does: https://guises.ai/llms.txt, and in one file: https://guises.ai/llms-full.txt
- Questions: ping@guises.ai
