Name your remotes

tovio remote add, list, show, remove — and what a name is actually used for.

Written By Dustin

Last updated 19 minutes ago

tovio remote add <name> <url> <repo> [--cert <file.der>]tovio remote listtovio remote show <name>tovio remote remove <name>

remove also answers to rm. A remote binds three things to a short name: the Forge or relay address, the repository id served there, and the pinned certificate if there is one.

The certificate rule is strict in both directions

Remote kind--cert
Native host:portRequired. There is nothing else to trust.
Hosted https://…Refused. It is trusted through public PKI; there is nothing to pin.

Getting either wrong — a missing pin, a pin on a hosted remote, an unreadable file, an empty name — is TVO-CLI-020, and it names the specific gap.

What show prints

tovio remote show origin

The name, the URL, the repository id, and how it is trusted: either public PKI (hosted) or pinned cert (N bytes). It reads the local record — it does not contact the remote, so it is not a reachability check.

What a name is used for today

This is worth being precise about, because it is easy to assume more.

clone, sync, push, and pull take an address positionally, not a remote name. tovio sync backup <repo> would try to resolve backup as a host. A bare tovio sync uses the origin recorded at clone time in .tovio/origin, which is separate from the named-remote table.

Where the name genuinely matters is the remote called origin. It is the default Forge for the operations that need one without being told:

  • Lock arbitration. tovio lock acquires the authoritative lock there, and the pre-land write guard consults it.
  • Policy publication and lookup.

So tovio remote add origin <url> <repo> --cert … is how you point those at a Forge in a repository that was not cloned from it. Adding other names records them for reference; treat the table as a local address book until a command documents that it resolves names.

It is local state

The table lives at .tovio/remotes.vex and is never synced. Each clone configures its own.