← BasicDeployCONTENT HISTORY

Update to BasicDeploy

Snapshot Sep 30, 2026 · 22:58 UTC · version 2.0.2

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "deploy-on-basicdeploy",
  "description": "Deploy and host a web app, API, or site on BasicDeploy and get a live HTTPS URL. Trigger when the user asks to deploy, host, ship, or \"put online\" an app on BasicDeploy (with the BasicDeploy connector available). Covers creating a container, deploying code over the chat connector, the REQUIRED 0.0.0.0:8080 port, the preset DATABASE_URL / S3 env vars, logs, and always-on. Do not use for other hosting providers.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 394
    },
    {
      "relative_path": "references/troubleshooting.md",
      "size_in_bytes": 884
    }
  ],
  "skill_md_contents": "---\nname: deploy-on-basicdeploy\ndescription: Deploy and host a web app, API, or site on BasicDeploy and get a live HTTPS URL. Trigger when the user asks to deploy, host, ship, or \"put online\" an app on BasicDeploy (with the BasicDeploy connector available). Covers creating a container, deploying code over the chat connector, the REQUIRED 0.0.0.0:8080 port, the preset DATABASE_URL / S3 env vars, logs, and always-on. Do not use for other hosting providers.\n---\n\n# Deploy on BasicDeploy\n\nBasicDeploy gives each app a live container with a PostgreSQL database, S3-compatible\nobject storage, and a public HTTPS URL, all wired in. Follow these steps to deploy reliably.\n\n## The one rule that breaks deploys\nThe container's public URL is **always routed to port 8080**. Your app **MUST listen on\n`0.0.0.0:8080`** — not `localhost`/`127.0.0.1`, and not 3000/5000/8000. Any other port, or a\nloopback bind, returns HTTP 503 at the public URL even though the process is running. If the\nframework reads a `PORT` env var, set it to 8080.\n\n## Steps\n1. **(Optional) Check the account:** call `get_account` for plan limits and selectable memory sizes.\n2. **Create a container:** call `create_container` (optionally `memoryMb`). It returns the\n   container id + public URL and auto-provisions a Postgres database and an S3 bucket.\n3. **Put the app in the container — two ways:**\n   - **Chat / remote connector (ChatGPT, Claude, Gemini): use `exec_command`.** There is no\n     shared filesystem, so `deploy_app`'s tarball path will NOT work here. Write the app files\n     into the container with `exec_command` (heredoc/echo, or `git clone`), install deps, then\n     start the server bound to `0.0.0.0:8080`.\n   - **Local stdio server: use `deploy_app`** with a tarball path on your own machine\n     (Dockerfile / package.json / requirements.txt / go.mod at the archive root).\n4. **Use the preset env vars — do not hardcode:** `DATABASE_URL` (Postgres) and\n   `S3_ENDPOINT` / `S3_ACCESS_KEY` / `S3_SECRET_KEY` / `S3_BUCKET` are already set in the\n   container environment. Read them from the environment.\n5. **Keep it running:** there is no init/supervisor — a process started via `exec_command`\n   runs only until the container sleeps or restarts and is NOT relaunched. For a long-running\n   web server, run it as the container's main process and enable always-on with `set_always_on`\n   (free on Pro/Scale; a paid add-on on Free). For a one-shot job, re-run the start command after each wake.\n6. **Verify:** open the public URL from step 2. A 503 means the app is on the wrong port or bound\n   to localhost — fix it to `0.0.0.0:8080`. Use `get_logs` to debug.\n\n## Notes\n- `get_logs` shows the container's **main process** output. A process started as a child of\n  `exec_command` won't appear there — run the app as the main process to get logs.\n- `S3_ENDPOINT` and `DATABASE_URL` are cluster-internal, reachable only from inside the container.\n  To serve user-uploaded media, read it from S3 in your backend and stream it to the client — do\n  NOT hand browsers direct S3 or presigned URLs.\n- Optional: add hosted sign-up/login to the app you build via BasicDeploy's auth-as-a-service\n  (standard OpenID Connect) — see the docs.\n- Pricing is flat: database, storage, bandwidth and URL are included; no usage bills.\n- Full documentation: call the `get_docs` tool, or see https://basicdeploy.com/docs.\n"
}

SHA-256: 29515faf18985ebd7e9babda4505da95bd03ccedb3f78f5b949aeb1f73b3ad24