a2a cloud
Remote-SSH · full editor

VS Code agent development on the real runtime.

Your agent is already deployed. Open its cloud dev box directly in VS Code over Remote-SSH — full editor, your extensions, an integrated terminal — running against the actual agent runtime and its pre-cloned repo. No local clone, no version-matching, no VM to provision, no open port. Connect to Host, and you're editing what's running.

a2a ssh <agent> · connect to host · open folder ~/<agent>

0
local clone needed
0
command to connect
0%
prod-parity runtime
the problem

Local agent dev drifts from what actually runs.

Developing a cloud agent on your laptop means cloning the repo, installing Node and Python, matching the versions the platform runs, and wiring in whatever tokens and secrets the code expects. Even done perfectly, your local toolchain is subtly different from the runtime the agent deploys on — so 'works on my machine' and 'works in production' diverge. Standing up your own remote VM instead just moves the setup: now you're provisioning a box, opening an SSH port or bastion, and paying for it while it sits idle.

Local clone + install + version-matching is setup you redo per machine.
Your laptop's Node/Python rarely matches the deployed agent's runtime.
Tokens and secrets have to be found and wired into the local checkout.
A hand-rolled remote VM means an open port, a bastion, and idle billing.
the a2a way

Open the agent's dev box in VS Code.

a2a ssh <agent> wakes a per-agent cloud dev box and writes a ~/.ssh/config entry. VS Code Remote-SSH connects to that alias — the editor, your extensions, and the integrated terminal all run on the box, against the pre-cloned repo and the same runtime the agent deploys on. One command, no local setup, no exposed port.

Connect to Host, doneYour extensions, remoteIntegrated terminal on the runtimeThe repo is already thereNo open port, no bastionCursor and JetBrains too

Connect to Host, done

a2a ssh <agent> writes a ~/.ssh/config entry named <agent>.a2a. In VS Code, Remote-SSH → Connect to Host → pick that alias. The editor opens directly on the dev box — full remote workspace, no local clone, no VM to provision.

Your extensions, remote

VS Code installs your extensions on the box, not on a local mirror. Python, ESLint, Prettier, GitLens, the debugger — they run against the actual code and interpreter on the dev box, so IntelliSense and lint reflect the real environment.

Integrated terminal on the runtime

The VS Code terminal is a shell on the box, with Node 20, Python 3.11, and a2a-pack already logged in as you. Run a2a dev, run your tests, tail logs — the same environment the agent deploys on, one panel away from the editor.

The repo is already there

The agent's git repo is pre-cloned at ~/<agent> with a fresh read-scoped token. Open Folder → ~/<agent> and you're editing the deployed agent's actual source — no clone URL to find, no credentials to wire, no drift from what's running.

No open port, no bastion

The connection tunnels SSH over a WebSocket through the same HTTPS ingress your agents already use. There's no exposed SSH port, no bastion, no firewall rule to request. VS Code speaks to <agent>.a2a through the ProxyCommand the CLI installed.

Cursor and JetBrains too

The alias is a plain SSH config entry, so Cursor's Remote-SSH and JetBrains Gateway connect the same way — same host, zero extra setup. Any editor that speaks Remote-SSH gets a full remote workspace on the agent's runtime.

side-by-side

Local clone (or a hand-rolled VM) vs. Connect to Host.

dimension
local / manual VM
a2a dev box in VS Code
setup
Clone the repo locally, install Node/Python, match versions, wire secrets.
a2a ssh <agent>, then VS Code → Connect to Host. Nothing installed locally.
environment
Your laptop's toolchain — subtly different from what the agent runs on.
The dev box itself: Node 20, Python 3.11, same base image family as prod.
repo access
Find the clone URL, provision a token, keep the local copy in sync.
Repo pre-cloned at ~/<agent> with a fresh read-scoped token. Open Folder.
network
Stand up a VM, open an SSH port or bastion, add a firewall rule.
SSH-over-WebSocket through existing HTTPS ingress. No port, no bastion.
idle cost
The dev VM keeps running — and billing — after you close the laptop.
The box scales to zero ~5 min after you disconnect. Wakes on next connect.
questions

Frequently asked.

How do I use VS Code Remote-SSH with an a2a agent?

Run a2a ssh <agent> once — it wakes the agent's cloud dev box and writes a ~/.ssh/config entry named <agent>.a2a. Then in VS Code open the Remote Explorer (or the command palette → Remote-SSH: Connect to Host) and pick <agent>.a2a. VS Code opens a remote window on the box; use Open Folder → ~/<agent> to edit the agent's pre-cloned repo. Your extensions install remotely and the integrated terminal is a shell on the box.

Do I need to install or configure anything for VS Code?

Only the Remote-SSH extension in VS Code, which most installs already have. a2a ssh writes the SSH config entry and installs the ProxyCommand that tunnels the connection, so there's no host, port, key, or bastion to configure by hand. On the box, Node 20, Python 3.11, a2a-pack, and the agent repo are already there.

Is my code running locally or on the dev box?

On the dev box. Remote-SSH makes VS Code a thin client — the editor UI is local, but the files, the language servers, your extensions, and the integrated terminal all run on the box. That means IntelliSense, linting, and the debugger reflect the real interpreter and dependencies the agent deploys with, not your laptop's.

Can I run the agent while I edit it in VS Code?

Yes. Open the integrated terminal and run a2a dev — it starts the hot-reloading dev server on the box and gives you a public preview URL, so you can edit in the editor and watch changes reload against the real runtime. See /cloud-dev for the dev-server workflow.

Does the dev box stay running and cost money while VS Code is open?

It runs while you're connected and scales to zero about five minutes after you disconnect, with an 8-hour maximum session. So an open-but-idle editor won't keep it alive indefinitely, and the next connect wakes it in a few seconds. There's no long-lived VM accumulating cost between sessions.

keep reading

Related guides.

All guides live in the guides index.

edit what's running

Bring VS Code to the agent, not the agent to your laptop.

a2a ssh <agent> opens a scale-to-zero cloud dev box — Node 20, Python 3.11, a2a-pack logged in as you, and the agent's repo pre-cloned — reachable over SSH-over-WebSocket through your existing ingress with an ephemeral Ed25519 key. VS Code Remote-SSH, Cursor, and JetBrains Gateway all connect to <agent>.a2a for a full remote workspace on the real runtime. Run a2a dev for a hot-reloading preview. No local clone, no bastion, no idle VM.