Boxes
A Box is a persistent Linux virtual machine in your Lane that you reach over SSH. Use one for development, long-running jobs, or as a home for your coding agent.
Create a Box
Section titled “Create a Box”af box create agent1 --size S --json{ "ok": true, "data": { "created": true, "machine": { "name": "agent1", "kind": "box", "size": "S", "state": "running", "ip": "…", "ssh": "ssh you@…", "hostKeyFingerprint": "SHA256:…", "vcpu": 4, "memoryGiB": 8, "diskGiB": 50, "createdAt": "2026-11-02T09:14:03Z" } }}- Names are lower-case letters, digits and dashes, starting with a letter, 2 to 31 characters.
createwaits until SSH answers, for up to 300 seconds (--timeoutto change it).--no-waitreturns as soon as the machine exists, withstate: starting. If SSH has not answered by the timeout,createstill succeeds with a warning; check later withaf box show agent1 --json.- Creating a name that already exists, with the same size, returns it with
"created": false. That makescreatesafe to retry. - Your Lane needs at least one SSH key first (SSH keys). Without one,
createstops withNO_KEYSrather than make a Box nobody can enter.
Connect
Section titled “Connect”af box ssh agent1 # opens SSHaf box ssh agent1 --json # prints the ssh command insteadaf box ssh-config agent1 # a ready ~/.ssh/config entry with the host key pinnedYour user on the Box is your Lane’s name. af pins each Box’s host key in ~/.config/af/known_hosts; check hostKeyFingerprint before you trust a host. Password login is off: only your Lane’s SSH keys get in.
With the ssh-config entry in ~/.ssh/config, editors such as VS Code Remote-SSH and Cursor connect by the Box’s name.
Resize
Section titled “Resize”af box resize agent1 --size M --json- CPU and RAM grow or shrink; disk only grows. A smaller size keeps the larger disk, which
diskGiBshows. - Because a Box’s cores are its own, a resize usually needs a restart. You get
RESTART_REQUIRED; repeat with--restartwhen you are ready.
Stop and start
Section titled “Stop and start”af box stop agent1 --jsonaf box start agent1 --jsonA stopped Box keeps its disk and frees the platform’s CPU and RAM. It still counts against your Lane’s caps.
Delete
Section titled “Delete”af box delete agent1 --confirm agent1 --jsonThis deletes the Box and all its snapshots, and cannot be undone. Without --json it asks you to type the name instead.
Check on your Boxes
Section titled “Check on your Boxes”af list --kind box --jsonaf box show agent1 --json # also lists the SSH keys a running Box acceptsBefore something risky, take a snapshot: Snapshots and restore.