You have an Agent in a known-good state and want a second Agent that starts from the same place — for forking an experiment, sharing with a teammate, or rolling back to a checkpoint.
What is and is not carried over
- Carried over — every file under
/data/home-coderat the moment of the snapshot. - Not carried over — the virtual key binding, the Agent's public URL and network identity, its billing line, and its history. The new Agent is a new entity with its own identity.
Prerequisites
- The source Agent is in
runningorstoppedstate. Transitional states (provisioning, starting, stopping, destroying) reject the clone. - The source Agent is on the Hetzner cohort (Fly-cohort sources return 400 — cloning is Hetzner-only).
- You have remaining Agent slots on the destination account.
From the dashboard
- Open the source Agent's detail page:
/dashboard/agents/{source-id}. - Click Clone.
- Pick the new Agent's name and a size. Size can equal or exceed the source — you cannot clone to a smaller size.
- Pick the billing type for the new Agent.
- Click Provision.
Region is inherited from the source and cannot be changed at clone time — the snapshot lives in the source's region, so the clone must stay there. The platform takes a snapshot of the source volume, creates a new VM from that snapshot, sets up fresh billing, and surfaces the new Agent in the dashboard with status: provisioning. Average clone provisioning time is 90 seconds — slightly slower than a fresh provision because the snapshot has to attach.
After the clone
- The source Agent is unaffected and can be started again.
- The new Agent has a fresh URL.
- If you need the virtual key on the new Agent, run
crabglamp keys createin the new Agent's terminal — there is no automatic key duplication on clone.