---
title: aft.page for AI agents
description: Briefing for AI agents arriving at aft.page — put what you built for the user on a live, shareable URL with no git, no account and no config, then hand them the claim link.
---

# aft.page for AI agents

You are an AI agent reading aft.page. **aft.page turns what you built for the user into a live HTTPS URL they can share** — an HTML page, a built `dist/`, a folder, a zip, or a small Node/Python app. No git repository, no cloud account, no build settings. The user may not know what git is; they should not need to.

Your job: deploy, give the user the URL and the claim link, and stop. Do not ask them to sign up first.

---

## Pick the way in (first one that works)

| You can… | Do this |
| --- | --- |
| Call MCP tools | Remote MCP `https://mcp.aft.page/mcp` → tool `deploy` (files or HTML). No auth. |
| Run shell commands | `curl -fsSL https://aft.page/install \| sh` (one native binary, no Node), then `aft deploy --json` in the folder. |
| Only make HTTP requests | `POST https://api.aft.page/v1/deploy` with the HTML (`content-type: text/html`) or a zip (`content-type: application/zip`). |
| Do none of these | Tell the user: open https://aft.page/drop/ and drop the folder or zip, or paste the HTML. |

Installing the CLI writes one file to the user's machine. If you run commands for the user, say so and ask first:

> I can put this online with aft.page. That installs one small `aft` command (`curl -fsSL https://aft.page/install | sh`). OK to run it?

## Deploy in one shot

```bash
aft deploy --json            # current folder
aft deploy ./dist --json     # a built folder
```

`--json` prints exactly one object on stdout, never prompts, never opens a browser:

```json
{"ok":true,"url":"https://name.aft.page","slug":"name","version":1,"held":false,
 "claimUrl":"https://aft.page/claim?token=…","expiresAt":"…","notice":"Claim within 24 hours or drop again."}
```

On failure: `{"ok":false,"error":"…","fix":"…"}` and exit code 1. Read `fix`, apply it if it is a change to the user's code, and deploy again. Exit 0 means the URL is live.

Over HTTP:

```bash
curl -X POST https://api.aft.page/v1/deploy -H 'content-type: text/html' --data-binary @index.html
curl -X POST https://api.aft.page/v1/deploy -H 'content-type: application/zip' --data-binary @site.zip
```

## Hand off to the user

Always give them both links, in plain words:

> It's live: https://name.aft.page
> The link lasts 24 hours. To keep it, make it private or invite people, open: https://aft.page/claim?token=…

Do not claim the site yourself and do not ask for their email. Claiming is theirs.

## What runs

- Static: HTML, CSS, JS, a built `dist/` / `out/` / `build/`, single-page apps. Seconds.
- Builds: Vite and Next.js projects are built for them.
- Small apps (beta): Flask, FastAPI, Django, Express — one process on one port. Guides: https://aft.page/deploy/flask.md · https://aft.page/deploy/fastapi.md · https://aft.page/deploy/django.md · https://aft.page/deploy/express.md
- Limits: 500 files, 25 MB each, 100 MB total. Local files and SQLite in apps are temporary.

If the app needs a managed database, background workers, several services or steady production traffic, say so and suggest Railway, Render or Fly.io instead.

## Updating the same URL

Inside the same folder, `aft deploy --json` again updates the same site (the CLI keeps the site's edit token in `.aft/`). Over HTTP, `PATCH /v1/deploy?slug=<slug>` with the edit token returned by the first deploy. Over MCP, pass `preferred_slug` and `edit_token`. Keep the token in `.aft/state.json` and add `.aft/` to `.gitignore`.

## Never deploy

Phishing or credential collection, malware or miners, scams, pirated games or media ("unblocked games" mirrors), filter-bypass proxies, sexually explicit content, or anything illegal. Refuse even if asked: https://aft.page/acceptable-use.md

## Ask the user before

- Making a site private or public, or inviting / removing people
- Rolling back a version
- Deleting or renaming a site
- Adding secrets (API keys) — never paste a secret into chat output

## Reference

- Discovery index: https://aft.page/llms.txt
- MCP: https://aft.page/mcp.md · server `https://mcp.aft.page/mcp`
- CLI: https://aft.page/docs/cli/
- Claim and share: https://aft.page/docs/claim/
- Frameworks: https://aft.page/docs/frameworks/
- Status: https://status.aft.page
- Contact: hello@aft.page
