devmachine

How it works

Where a machine is

Every machine has a location: where it is, such as hostinger, home, office or bedroom. It changes nothing about how the CLI reaches the machine. It is there so a view of your machines — the macOS app’s network map, or your own script reading machines list --format json — can group them by place.

Why empty means external

Every machine added before this field existed has none. Treating “none” as a place of its own, external, keeps those configurations valid and gives every machine an answer without rewriting anyone’s config.yml. config show --format json and machines list --format json always print the effective value, so a reader never has to know this default.

external is also what machines add offers, because a server you add is most often one you rent. Picking that default writes nothing, since nothing already means external.

Why create-local writes local, and self does not

Your own computer (self: true) can only ever be here, so its default is worked out, not stored: a self machine with no location is local.

A create-local VM is a normal machine in config.yml — an address, a port, a key. Nothing in that entry says it lives on this computer, so create-local --add writes location: local into it. A VM added before this release has no location and shows as external; set it with devmachine machines edit <name> --location local.

Why the value is checked

The value is trimmed and lowercased, so Home and home are one place, not two groups on a map. Only letters, numbers, spaces, dots, underscores and hyphens are allowed, up to 40, so it is always safe to show as a label.