Cloud dev with a2a dev
a2a dev runs your agent in the cloud while you edit locally. It syncs your
project to the agent's scale-to-zero dev box, runs the
agent's hot-reloading server there, and serves it on a public URL. Save a file
and the change is live in seconds — on real cloud infrastructure, not your
laptop.
cd my-agent/
a2a devYou get a URL like https://my-agent-devbox.a2acloud.io/ — a live, shareable
endpoint for the agent — and a file watcher that pushes every save up to the
box, which reloads on the change.
Why run dev in the cloud
The inner loop stays local — your editor, your keystrokes — but the agent runs where it deploys:
- Parity — the same base image, the same runtime as production. No "works on
my machine": if it runs in
a2a dev, it runs deployed. - A public URL for free — point a webhook at it, share it in a PR, demo it to a teammate, or connect it to a client. No tunneling tool to run.
- Nothing to install locally — no Docker, no per-agent Python environment. The box already has the toolchain.
The loop
a2a dev
→ wakes the agent's dev box (cold start takes a few seconds)
→ syncs your project to the box
→ runs the agent's dev server there (hot reload)
→ prints https://<agent>-devbox.a2acloud.io/ ← public, shareable
→ watches local files; every save syncs up and the box reloadsEdit agent.py, hit save, and within a couple of seconds the running agent on
the box has your change. The box's dev server watches the synced files, so the
reload is automatic — the CLI only keeps the files in sync.
Run on your machine instead
When you're offline, air-gapped, or just want the agent in your own process, use
--local:
a2a dev --local # run on this machine (the classic local dev server)
a2a dev --local --host-runtime # run directly in your Python, no containera2a dev --local is the old behavior: it serves the agent at
http://127.0.0.1:8000 with hot reload, using .env.local and a local
workspace.
How it works
The dev box exposes a single public origin over the platform's HTTPS ingress. A small bridge on the box fronts two things on that origin:
/ssh— the WebSocket tunnel that carries file sync and shell access (the same channela2a sshuses).- everything else — reverse-proxied to the agent's dev server running inside the box.
So https://<agent>-devbox.a2acloud.io/ reaches your running agent, while the
CLI syncs files over the same ingress. No extra ports, no bastion, no firewall
rules. Files sync with rsync over the tunnel; the box's own dev server handles
hot reload, so a save becomes a reload without any push step of its own.
Requirements
- You must be logged in (
a2a login) — the box runs under your account, with your quota and your CLI credentials injected, exactly likea2a ssh. If you're not logged in,a2a devwill tell you; use--localto run without an account. rsyncon your machine (standard on macOS and Linux).
Reference
a2a dev # cloud: sync + run + public URL (inside an agent repo)
a2a dev --agent <name> # cloud dev for a named agent
a2a dev --local # run on this machine with hot reload
a2a dev --local --host-runtime # local, directly in this Python processThe first a2a dev after an idle period cold-starts the box (a few seconds); the
CLI waits through it. See also SSH dev boxes and
Agents.