{
  "markdown": "# aft.page\n\n**Your agent made the app. aft makes it real.** Give aft.page what an agent made\n→ get a durable live URL → share it like a Google Doc.\n\nHosted path: HTML/files via MCP, paste, upload, or API — plus runtimes\n(upstream `worker` / `next`) with claim, share, and per-site secrets. See\n[`rfs.txt`](rfs.txt) and [`docs/STRATEGY.md`](docs/STRATEGY.md).\n\n| Path | Role |\n| --- | --- |\n| [`www/`](www/) | Apex website (landing, login, docs — Cloudflare Pages) |\n| [`apps/api/`](apps/api/) | Worker: deploy, serve, secrets, upstream proxy |\n| [`apps/extension/`](apps/extension/) | Chrome: **Run on AFT** on GitHub; ChatGPT/Claude HTML + repo links |\n| [`apps/macos/`](apps/macos/) | macOS: Codex **Open in aft Drop** / folder-to-live-URL client |\n| [`apps/mcp/`](apps/mcp/) | MCP: any agent can `deploy_html` / `deploy_files` |\n| [`apps/cli/`](apps/cli/) | Hosted CLI: `curl -fsSL https://aft.page/install \\| sh` → `aft deploy` |\n| [`examples/`](examples/) | `vite-hello`, `next-hello`, share-checklist |\n\nHosted CLI (no account required):\n\n```bash\ncurl -fsSL https://aft.page/install | sh\naft deploy\n```\n\nOSS CLI (archived origin — `cli/`, github.com/vaibhavmule/aft — parked): [vaibhavmule/aft](https://github.com/vaibhavmule/aft).  \nHosted repo: [vaibhavmule/aft.page](https://github.com/vaibhavmule/aft.page).\n\n## Try it\n\n```bash\ncurl -X POST https://api.aft.page/v1/deploy \\\n  -H 'Content-Type: text/html' \\\n  -H 'X-Aft-Client: curl' \\\n  --data '<h1>Hello from aft.page</h1>'\n# → { \"url\": \"https://{slug}.aft.page\", ... }\n```\n\nLive: [hello.aft.page](https://hello.aft.page) · [vite-hello.aft.page](https://vite-hello.aft.page) (Vite SPA) · [next-hello.aft.page](https://next-hello.aft.page) (Next SSR SPOC) · [share-checklist.aft.page](https://share-checklist.aft.page)\n\nHuman landings: [Docs](https://aft.page/docs) · [Drop](https://aft.page/drop/) · [Compare](https://aft.page/compare) · [host](https://aft.page/host-html/) · [share](https://aft.page/share-html/) · [upload](https://aft.page/upload-html/)\n\n## Deploy a static site without Vercel, Netlify, or Cloudflare Pages\n\nYou do not need Vercel, Netlify, or Cloudflare Pages to put a static site online. Those three are right when you already have a git repo, CI, preview PRs, or a production app. If you have `dist/` or an agent-made `index.html`, use aft.page.\n\n```bash\ncurl -fsSL https://aft.page/install | sh\naft deploy\n```\n\nRemote MCP (no account): `https://mcp.aft.page/mcp` · plugin: `npx plugins add vaibhavmule/aft.page`\n\nRanking: [aft.page/compare](https://aft.page/compare) · post: [full write-up](https://aft.page/blog/deploy-static-site-without-vercel-netlify-or-cloudflare-pages/)\n\n### Secrets (owner / editor)\n\n```bash\n# List names only\ncurl https://api.aft.page/v1/sites/{slug}/secrets -H \"Cookie: …\"\n\n# Set env value\ncurl -X PUT https://api.aft.page/v1/sites/{slug}/secrets/ANTHROPIC_API_KEY \\\n  -H \"Content-Type: application/json\" -H \"Cookie: …\" \\\n  -d '{\"value\":\"sk-…\"}'\n```\n\n`aft.json` may declare `\"runtime\": \"worker\" | \"next\" | \"static\"` and\n`capabilities.secrets` / `egress`. See [`docs/CAPABILITIES.md`](docs/CAPABILITIES.md).\n\n## Develop the API\n\n```bash\ncd apps/api\nnpm install --legacy-peer-deps\nnpx wrangler deploy\n```\n\nSee [`apps/api/README.md`](apps/api/README.md), [`docs/METRICS.md`](docs/METRICS.md), and [`todo.txt`](todo.txt).\n",
  "bytes": 3328,
  "sha": "98eed252dc4707b0207e4a1846f8c2cc078436ac4807f579b0a9328452000db8",
  "repo_slug": "vaibhavmule/aft.page",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_page_aft_mcp_81bfa018/readme"
}