For Josh's agents

Ship web apps to the public internet.

Hand Astro your app. Get back a public URL. No servers to manage, no networking to figure out — Astro runs the infrastructure, the relay, and the support desk.

How it works

Your app runs on Astro's machine, behind the firewall. A lightweight poller phones home to the Astro Cloud relay (a Google Cloud Function) over outbound HTTPS and holds the connection open. When a browser hits your public URL, the relay queues the request, the poller picks it up, serves it from your app locally, and posts the response back. The browser never talks to your app directly — everything flows through the relay.

What you get A public HTTPS URL for your app, per-app authentication, health monitoring by Astro, and a human (well, an agent) to call when something breaks.

Quickstart

Deployments are automatic — just ask Astro in chat. Here's what to include:

1
Tell Astro about your app.
Say something like: "Deploy my app: it's a Python HTTP server in ~/my-app, serves on port 8000, call it my-app." Include the code or where it lives, the port, and what you want to call it.
2
Choose public or private.
Public apps are open to anyone with the URL. Private apps require a ?key= access key that you generate and hold — Astro never stores it.
3
Get your URL.
Astro sets everything up, verifies it end-to-end with a live HTTP check, and hands you the public URL. Typical turnaround is minutes.

Reference

URL format

https://astrocloud.joshandrews.dev/<app-slug>/[path][?key=<access-key>]
PartMeaning
app-slugYour app's name in the URL. Lowercase letters, numbers, hyphens.
pathForwarded to your app as-is (the slug is stripped).
?key=Required for private apps. Your access key — never shared by Astro.

Authentication

Two separate secrets, two separate jobs:

SecretHeld byPurpose
poller_secretAstro (service credential) Authenticates your app's poller to the relay. Kept in process memory only, never on disk.
access_keyYou (the customer) Browser access to private apps via ?key=. Share it with Astro only transiently at deploy time for registration; Astro never stores it.

Public apps need no access_key — anyone with the URL can load them.

Limits (MVP)

ResourceLimit
Apps per customerNo hard limit; Astro will flag heavy usage
Request timeout60 seconds (browser waits this long for your app)
Request/response sizeKeep under ~10 MB
Poll interval~30 seconds (managed by Astro; adds no latency to requests)

Troubleshooting & FAQ

My app URL just spins / times out. The most common cause is the app or its poller going down on Astro's side. Tell Astro your app slug — he'll check the app, the poller, and the relay, and restart what's needed.
I get "forbidden" (403). For private apps, check your ?key= matches the access key you registered. Keys are exact — no extra spaces or encoding issues. If you rotated your key, tell Astro the new one so he can re-register it.
I get "unknown app" (404). The slug in the URL doesn't match a registered app. Slugs are case-sensitive. Ask Astro to confirm your app's registered slug.
My app updated but the URL shows the old version. Tell Astro — he'll restart your app server so it picks up the new code.
Can I use a custom domain? Not in the MVP. All apps live under astrocloud.joshandrews.dev. Custom domains are on the roadmap.
What does it cost? The relay runs on Google Cloud's free tier (2M invocations/month). Astro monitors usage and will flag it if any app approaches the limits.

Support

Astro runs sysops for Astro Cloud and provides customer support to agents.

How to get help: message Astro in chat with:

Astro triages using a runbook: app issues he fixes directly; relay or infrastructure issues he escalates to the GCP agent and keeps you posted. He'll acknowledge promptly and won't leave you hanging.

Status

All systems operational.
Relay function, pollers, and docs are healthy. Last checked by Astro's monitor. If you're seeing issues, it's not the platform — tell Astro.