--- name: goclawgo description: goclawgo is a PaaS where users buy resource "slots" and AI agents deploy websites by POSTing source code to a per-slot token URL. goclawgo builds the source in a throwaway pinned container, pushes an OCI image to a local registry, and serves it on a subdomain via Dokploy + Traefik with automatic TLS. Like Netlify, but agent-driven and billed per slot. Use this file as the index; follow the Guides for decisions. --- # goclawgo goclawgo is a PaaS where users buy resource **slots** and AI agents deploy websites by POSTing **source code** to a per-slot deploy URL. goclawgo builds the source in a throwaway pinned container, pushes an OCI image to a local registry, and serves it on a subdomain (`{slug}.goclawgo.com`) via Dokploy + Traefik with automatic TLS. Think Netlify, but deploys are agent-driven and billed per slot. You (the agent) do not build, do not need Docker, and never upload images. You POST source; goclawgo does the rest. ## Deploy (the whole product, in one request) `POST https://goclawgo.com/d/{token}` - `Content-Type: multipart/form-data` - field `tarball` = a `.zip` or `.tar.gz` of **source code** (archive root = project root) - optional field `type` = `static` | `nodejs` | `nextjs` ```bash curl -X POST https://goclawgo.com/d/$TOKEN \ -F "tarball=@site.zip" \ -F "type=nextjs" ``` - On accept: `202 { deployment }` — `{ id, status: "queued", stack, ... }`. - Poll `GET https://goclawgo.com/d/{token}/deployments/{deployment.id}` until `status` is `live` (success) or `failed` (read `errorMessage`; `logUrl` may be null). Also: `GET /d/{token}/deployments` lists recent deploys. - The live URL is the project's fixed primary subdomain `https://{slug}.goclawgo.com` (there is no per-deploy `url` field). The token is a per-slot secret, format `go…claw…go` (e.g. `go7b23eadc-1073-claw-9657-b57060ago`). It maps to exactly one slot. ## Rules (non-negotiable) - **Source only.** No git, no prebuilt images, no user-supplied OCI. - **Stripped & ignored** (never executed): `Dockerfile`, `nixpacks.toml`, `Procfile`, `*.env`. Do not rely on them. See [secrets-and-env](recipes/secrets-and-env.md). - **Pinned build env.** goclawgo builds in its own throwaway containers (`node:24` / caddy). You cannot change the build environment or its versions. - **Serialized builds.** 1 at a time, FIFO. A concurrent deploy is enqueued, not rejected. - **Hard caps per slot:** 1 GB RAM / 1 vCPU. See [resource-limits](recipes/resource-limits.md). - **v1 stacks only:** `static` | `nodejs` | `nextjs`. No php/python. - **No managed database in v1.** goclawgo's Postgres is internal only. See [do-i-need-a-database](recipes/do-i-need-a-database.md). ## Stack sniffing (when `type` is omitted) - `next.config.*` present → `nextjs` - `package.json` without next → `nodejs` - only html/css/js → `static` - anything else → `400 { error: "unsupported stack" }` ## Guides / Recipes (read before you build) Decision-first, bite-size. Pick by the question you are answering. - [pick-a-stack](recipes/pick-a-stack.md): static vs nodejs vs nextjs — which one, and when nextjs is worth it. - [do-i-need-a-database](recipes/do-i-need-a-database.md): no managed DB in v1 — stateless, client-side, or external. - [secrets-and-env](recipes/secrets-and-env.md): `.env` is stripped — where config and secrets must live. - [resource-limits](recipes/resource-limits.md): 1 GB / 1 vCPU and serialized builds — how to stay lean. - [custom-domains](recipes/custom-domains.md): primary subdomain (auto TLS) + custom domains. - [deploy-checklist](recipes/deploy-checklist.md): preflight before you POST. - [package-your-app](recipes/package-your-app.md): build the zip/tarball so the root is right per stack. - [ship-a-framework-as-static](recipes/ship-a-framework-as-static.md): put Vite/Astro/Next on the cheap `static` stack. - [nodejs-runtime-contract](recipes/nodejs-runtime-contract.md): what a node app must do to run (PORT/host, start script, no build step). - [deploy-lifecycle-and-polling](recipes/deploy-lifecycle-and-polling.md): status machine, how to poll, when waiting is normal. - [update-and-rollback](recipes/update-and-rollback.md): how updates ship, and how to revert (redeploy old source). - [when-to-use-multiple-slots](recipes/when-to-use-multiple-slots.md): when one slot isn't enough (prod/staging, workers). - [debug-a-failed-build](recipes/debug-a-failed-build.md): read errorMessage, map common failures to fixes. - [anti-patterns](recipes/anti-patterns.md): the hard "no" list — what goclawgo is not. - [auth-for-your-users](recipes/auth-for-your-users.md): platform login ≠ your site's auth; how to authenticate visitors. - [scheduled-and-background-work](recipes/scheduled-and-background-work.md): no cron/daemons in-container — patterns for scheduled jobs. ## Result Once `live`, the site is served at `https://{slug}.goclawgo.com` with automatic TLS.