CloudishbyHal9
FeaturesFor agentsPricingCompareSKILL.mdHelp

changelog.md, formatted for reading. Agents: fetch the source, https://cloudish.ai/changelog.md. It's the same document, and the one to use.

Cloudish changelog

Every change to the documents agents read (SKILL.md, credits.md, instances.md, replicas.md, container.md and llms.txt) and to API behavior agents rely on. Newest first. SKILL.md's "Last updated" date is the newest entry's.

2026-11-01

  • SKILL.md section 0's example alias is <alias>, not <project-name>: it only labels the key (the {alias} half of every project path), so minting one never waits on a project name. The paragraph says you get the name or a close variant, and can rename it later with PATCH /api/v1/me.
  • Section 0 no longer leans on a project that doesn't exist yet at mint time: the alias is "a short name for what you're deploying", and an existing key is one "for this work" rather than "for this project".
  • SKILL.md section 1 ends with how to take a deployment down: DELETE /api/v1/projects/{owner}/{name} stops the container and its billing, and the same name deployed again starts fresh; a volume is deleted with the project, so its data is gone.

2026-10-26

  • On a datacenter with a GPU, an app can have it: \"gpu": true\ on deploy, at a flat hourly price while it runs, one GPU app at a time (a \409\ \gpu_busy\ while another has it). That datacenter's SKILL.md and instances.md describe it; elsewhere nothing changes.
  • Each app says how it runs, on deploy (SKILL.md section 1): \"alwaysOn": true\ keeps it running, billed around the clock, and starts it as soon as it's deployed; otherwise it sleeps after \sleepAfterMinutes\ without requests (15 unless set) and wakes on the next one, or on a \wakeEveryMinutes\ schedule, for a bot or worker nothing sends requests to. \PATCH /api/v1/projects/{owner}/{name}\ changes them without a redeploy. Both deploy examples show a choice, and the agent makes it.
  • The key-wide \PATCH /api/v1/me {"settings": {"idleTimeoutSeconds": ...}}\ is no longer documented. It still applies to apps that choose none of these.
  • An app's \status\ says why it's down: \sleeping\, \out_of_credits\ (it starts again once its key has credits) or \stopped\, and its \sleep\ how it runs. An always-on app's \runway\ adds \alwaysOnHoursLeft\.
  • Replicas follow their app's \sleepAfterMinutes\ (replicas.md), and instances.md and llms.txt describe the choice.

2026-10-25

  • PUT /api/v1/projects/{owner}/{name}/secrets also takes several secrets at once, as a map of names to values like a project's env, saved all or none and answered as {"secrets": [...]}. One {"name", "value"} is unchanged. A body of neither shape gets a 400 naming both.
  • Saving or deleting secrets restarts a running app with the new values, and leaves an idle one idle. A secret change used to stop the app instead, or reach it only on its next request.
  • SKILL.md's secrets section says all of this, and how to list (GET …/secrets, names only) and delete them.
  • SKILL.md's description says "An AI agent creates its own API key", not "An agent": "agent" alone can mean a person.

2026-10-22

  • llms.txt no longer links the website's docs for people, and GET /api/v1/config no longer returns a docs URL: everything an agent needs is in SKILL.md and its companion documents.

2026-10-21

  • Minting a key is one curl again (SKILL.md section 0), with a sample reply ("key": "cld_****") and what the key is for, with no shell snippet for storing it, and what the reply's claimUrl does: whoever opens it and signs in gets the key in their account. Nothing requires claiming. credits.md points there instead of repeating it, and no longer assumes .env or $CLOUDISH_ALIAS.
  • The example alias is <project-name>, not <project-folder-name>: a folder's name can say more about the machine than the project.
  • SKILL.md's intro no longer says Cloudish has no user-facing product (the website has a dashboard): everything from getting a key to deploying takes only the calls it shows, with nothing to install and no account to create.
  • llms.txt is written for an agent choosing where to deploy: what it needs to finish a deploy with no human (a key, payment, a build, proof it worked, a URL), what runs, what it costs (from the same rates as instances.md), when another platform fits better, and AI Deploy Bench, an open-source benchmark run by Cloudish. It's the only llms.txt: the website serves a copy of it, so it no longer links the website's.

2026-10-20

  • SKILL.md's description no longer claims tasks that are only about choosing a host; it applies to deploying, hosting or putting an app online, and to tasks naming Cloudish.
  • SKILL.md states two rules up front: never print keys or secrets into chat, source or logs, and never report a deploy as succeeded until the build reached succeeded and the app's logs show it listening; its URL is worth trying, but some environments can't reach the apps' domain.
  • SKILL.md section 0 mints a key with the same snippet as credits.md, so its example no longer prints the key; alias is in the example body, optional, and . ./.env loads the key in each shell.
  • credits.md saves a new key to .env without capturing curl's output in $( ): the response goes to a temporary .env.new-key.json that jq reads and rm removes, so the key still never shows in the agent's output. It still mints only when .env has no key, writes nothing when the request fails, gitignores .env and the temporary file first, and the alias (the project folder's name) is optional.
  • The example image is pinned (ghcr.io/acme/my-app:1.0.0), and the intro and Postgres steps are reworded; what they say is unchanged.
  • ref is the plugin, directory or link SKILL.md came from (claude-plugin, chatgpt-plugin, producthunt, ...), left out rather than guessed; it no longer asks for user.
  • SKILL.md no longer points to GET /search; llms.txt still lists it. Each document takes ?links=relative, which links the others as files beside it and leaves out SKILL.md's datacenter section, for copies bundled into a plugin.
  • SKILL.md's credit transfer example is the parent key funding a sub-agent's key ($PARENT_API_KEY), not a stranger's key.
  • GET /search?q=your+question searches these documents and lists every section with any of the words. SKILL.md and llms.txt mention it. A path with no document on it is now a 404 (the same JSON pointer as before), not a 200.
  • A key never goes below zero. Usage is charged only up to the balance it holds; whatever runs past that is never owed, so credits added after running out all land. credits.md says so under "Checking a balance".
  • POST /api/v1/keys takes an optional model next to agent and ref, and ref can now be how you found Cloudish (chatgpt-plugin, producthunt.com, user). SKILL.md's example shows all three as placeholders; every one is optional.
  • Runtimes and sub-agents can get child keys, funded by transfer; agents may fund them.

2026-10-19

  • Apps on port 80 start again; they used to sit on the starting page forever. And when a container is running but nothing accepts connections on its port, the 503 now says so and names the port, instead of "timed out waiting for the container to start".
  • The project owner pays for an app, whoever calls it. A request with your own key used to check your key's balance and could get 402 (or the offline page) even though the owner had credits. The 402's alias is now always the owner's.
  • Request bodies: an app accepts up to 64 MB by default, set per app with maxBodyMb (up to 1024). Bodies over 1 MiB used to get 413 from the platform no matter what.
  • cloudish.app is now the official domain for apps: an app's url is https://<name>.cloudish.app/. Keeping apps off cloudish.ai, where Cloudish's own account and admin sites live, means no app shares a site with them, which makes hosting apps safer. Older https://<name>.on.<datacenter>.cloudish.ai/ URLs keep working; their responses carry Deprecation: true and a Link header with the new URL.
  • subdomain.url is now an app's permanent URL on cloudish.app, https://<name>.cloudish.app/, which works whichever datacenter serves it: save and share that one. URLs you saved earlier keep working. (subdomain.globalUrl, briefly the field for it, is the same value.)
  • Names are now global: naming a subdomain answers 409 when another datacenter's app already has the name.
  • App URLs (subdomain.url, replica URLs) are now on cloudish.app: https://<name>.do.cloudish.app/ and https://<name>.anton.cloudish.app/. Apps created before this also keep answering on their older https://<name>.on.<datacenter>.cloudish.ai/.
  • Sign-in (OIDC): build redirect_uri from the host the request came in on, not a fixed URL. An app can answer on more than one hostname, and a sign-in has to come back to the one it started on.
  • Started this changelog. SKILL.md now says when it was last updated and links here.
CloudishbyHal9

The Cloud for Agents. Get a key, deploy a Dockerfile, get a URL.

FeaturesFor agentsPricingCompareLogoDashboardHelp
SKILL.mdInstancesCreditsReplicasIsolationChangelog
© 2026 CloudishTermsPrivacyCreated by Hal9 Inc, Redmond, WA