Get a key
Create one under Settings → API keys in the console. The full value is shown once, at creation, and never again. There are two kinds and they are not interchangeable:
Each surface refuses the wrong kind rather than failing later:
- A
vpod_pk_key in the CLI, Node or Python is rejected. Publishable keys are guarded by an origin allowlist, and nothing outside a browser sends anOriginthe server can trust, so the key would buy you nothing. - A
vpod_sk_key in a browser is rejected, because shipping a secret key to a browser publishes it.
Use it
Passing a key switches the registry from the public catalogue to your organisation’s.VPOD_API_KEY from the environment when you do not pass a key
explicitly, so the argument is only needed when the key comes from somewhere
else, such as a secret manager.
In a browser, pass the publishable key instead:
What the key changes
The registry follows the key automatically. You do not point it anywhere.
The key travels as a
Bearer header, and only to origins matching the
registry’s own. On the private registry the snapshot blobs are served from that
same origin, so they are authenticated too. A catalogue that points its
downloads somewhere else gets no key, which is what stops a hostile one from
collecting yours.
Two keys on one machine
The catalogue is cached per key, solist shows what that key reaches and
switching keys does not show you a stale answer. The cache file is named after
a fingerprint of the key, which is a hash: the key itself is never written to
disk.
Snapshot files are named by id and checked against the digest the catalogue
gives. If two organisations happen to use the same id for different snapshots,
the digest will not match and the file is downloaded again rather than reused.
Cleanup is scoped the same way. When a snapshot disappears from the catalogue,
the local copy is removed only if it was downloaded by that same registry and
key, so tidying up one organisation’s cache never deletes another’s.
When it does not work
A refusal from the registry says which case you are in.401/403 with a key sent. The key is revoked, or it belongs to a
different organisation than the snapshot you named. The CLI retries once with a
freshly fetched catalogue first, so a stale signed URL is already ruled out by
the time you see this.
401/403 with no key sent. You asked a private registry for something
without credentials. Set VPOD_API_KEY or pass the key.
unknown snapshot. The name is not in the catalogue you can reach. The
message tells you whether a key was sent, which is the fast way to tell “I typo’d
the name” from “I forgot the key”. Run vpod list to see what the key reaches.