Cloudish · Opus 5.5 · medium effort · HIPAA organization · trial 1

Static Content Site on Cloudish

Success

Checks passed16/16
Human steps00 min of a person's time
Security & compliance—
Build2m 06s
Deploy6m 53s
Tokens1.02M
Agent cost$0.73
Hosting / month$7.84 always on

Deployed to https://adb-xtzco-static-web.on.do.cloudish.ai. Every deployment is deleted after it's verified and reviewed.

Technologies

Runtime
Node.js 22
Frameworks
Node.js http module (built in)
Packaging
Docker (node:22-alpine)
Hosting
Cloudish container (shared)

Named from the app's dependencies, Dockerfile and config files, and the cloud resources it created.

Checks

Black-box checks against the live URL. A cell succeeds when every required check passes. The app's spec

ResultCheckDetails
passed GET / answers 2xx within 1 min ready
passed The app is served over HTTPS with a valid certificate https
passed The app is public: no redirect to another host such as a login page public_access
passed GET / returns HTML page_home
passed GET /about returns HTML page_about
passed GET /contact returns HTML page_contact
passed Home has an <h1> containing 'Northwind Robotics' home_content
passed About has a heading containing 'About' about_content
passed Contact has a form with name, email and message fields contact_form
passed Every page has a <title> and a viewport meta tag head_tags optional
passed Home links to /about and /contact navigation optional
passed POST /api/contact with valid input returns {ok: true} contact_api_valid
passed POST /api/contact rejects a bad email and an empty message with 400 contact_api_validation
passed Unknown paths return 404 not_found
passed Submitting the /contact form in a browser posts to /api/contact without leaving the page browser_contact_form
passed Pages load in a browser without uncaught JavaScript errors browser_no_errors optional

Human steps

None: the agent got everything it needed on its own.

Security & compliance review

This run predates the security review.

Cloud resources and cost

Resources the agent created

KindNamePlanList price / monthPricing
projectadb-xtzco-static-webshared$7.840.1 CPU / 0.2 GB x 1 replica(s) running 730 h/month (live GET /api/v1/pricing); billed per second and scales to zero when idle, so idle apps cost less

The agent estimated $7.84 a month.

Code

Code
452 lines in 13 files (JavaScript 211, HTML 177, CSS 56, JSON 40, Docker 8)
Dependencies
0 npm, 0 Python
Deploy config
Dockerfile .dockerignore

The agent's sessions

PhaseStatusTimeTurnsTokensCostShell commands
Buildcompleted2m 06s11277.1K$0.3510
Deploycompleted6m 53s16747.6K$0.3813

The agent's deploy summary

The site is live on Cloudish at https://adb-xtzco-static-web.on.do.cloudish.ai, and every requirement in TASK.md passed when I tested it through that URL.

What I set up:

  • Cloudish key adb-xtzco-static: created without signing up. It's saved in .env, which is gitignored and left out of what was uploaded.
  • Project adb-xtzco-static-web: Cloudish built the existing Dockerfile on its own servers. It runs on the cheapest size (shared: 0.1 CPU, 0.2 GB, one copy) and shuts down when idle. I swapped the random web address Cloudish assigned for a readable one.

Tested through the public URL:

  • /, /about and /contact return 200 HTML pages with the required title, viewport tag, nav and content.
  • Unknown paths, including /about.html, return 404.
  • POST /api/contact returns 200 {"ok":true} for valid input, and 400 with an error message for a missing name, an invalid email or an empty message.
  • In a headless browser, the form showed an error and then a confirmation without reloading the page.

Cost: about $0.011 per hour while the app is running, so at most $7.84 a month if it never shut down.

What a person needs to do: the key only has Cloudish's free starting credit (about $0.095 left), which covers roughly 9 hours of running time. Once it runs out, the site returns errors (402 or 503) until credits are added. Someone needs to claim the key and add credits using a claim link. A link expires 30 minutes after it's created, so make a new one when needed. This is listed in human_steps in deployment.json and doesn't stop the site working now.

The first request after the app has been idle takes a few seconds while it starts up again. Right after setup, the first couple of requests got no response before the app came up.

13 shell commands during deploy
  1. 4s curl -sL https://cloudish.ai/skill.md; echo ----; curl -sL https://cloudish.ai/instances.md
  2. 11s grep -q CLOUDISH_API_KEY .env 2>/dev/null || {
  3. 17s set -a && . ./.env && set +a && tar --exclude='.env*' --exclude='.git' --exclude='context.tar.gz' -czf /tmp/context.tar.gz Dockerfile .dockerignore package.json server.js public && tar tzf /tmp/contex
  4. 23s . ./.env && for i in $(seq 1 40); do s=$(curl -s https://cloudish.ai/api/v1/images/builds/219 -H "Authorization: Bearer $CLOUDISH_API_KEY" | tee /tmp/b.json | python3 -c 'import json,sys;print(json.lo
  5. 2m 26s cat /tmp/claude-1001/-home-runner-work--temp-adb-xtzco-static/80729b32-5dd0-4b62-b66b-de4158054ccb/tasks/bxewyn0ei.output | tail -5; python3 -c 'import json;d=json.load(open("/tmp/b.json"));print((d["
  6. 2m 34s . ./.env && until s=$(curl -s https://cloudish.ai/api/v1/images/builds/219 -H "Authorization: Bearer $CLOUDISH_API_KEY" | tee /tmp/b.json | python3 -c 'import json,sys;print(json.load(sys.stdin)["buil
  7. 2m 37s sleep 0; cat /tmp/claude-1001/-home-runner-work--temp-adb-xtzco-static/80729b32-5dd0-4b62-b66b-de4158054ccb/tasks/b4fykohx4.output; python3 -c 'import json;d=json.load(open("/tmp/b.json"));print(d["bu
  8. 2m 43s f=/tmp/claude-1001/-home-runner-work--temp-adb-xtzco-static/80729b32-5dd0-4b62-b66b-de4158054ccb/tasks/b4fykohx4.output; for i in $(seq 1 55); do grep -qE '^(succeeded|failed)' $f && break; sleep 10;
  9. 5m 47s . ./.env && curl -s https://cloudish.ai/api/v1/projects/adb-xtzco-static/adb-xtzco-static-web -H "Authorization: Bearer $CLOUDISH_API_KEY" | python3 -c 'import json,sys;d=json.load(sys.stdin);print(js
  10. 5m 52s . ./.env && curl -s https://cloudish.ai/api/v1/projects/adb-xtzco-static/adb-xtzco-static-web -H "Authorization: Bearer $CLOUDISH_API_KEY" | head -c 3000; echo; python3 -c 'import json;d=json.load(ope
  11. 5m 56s . ./.env && curl -s -X PUT https://cloudish.ai/api/v1/projects/adb-xtzco-static/adb-xtzco-static-web/subdomain -H "Authorization: Bearer $CLOUDISH_API_KEY" -H "content-type: application/json" -d '{"la
  12. 6m 03s U=https://adb-xtzco-static-web.on.do.cloudish.ai
  13. 6m 34s . ./.env && curl -s https://cloudish.ai/api/v1/me -H "Authorization: Bearer $CLOUDISH_API_KEY" | python3 -c 'import json,sys;d=json.load(sys.stdin);a=d.get("apiKey",d);print({k:a.get(k) for k in ("ali

Raw data