References
Every name an agent can be given — keys, secrets and plain values — in one registry, with one order.
Five scopes, one order
An entry belongs to an agent, a tron, a company, a person or the platform. A name is looked up in that order — agent, tron, company (for a company tron), the person who holds the tron, platform — and the first scope that has it wins.
Secret or readable
A secret is encrypted with its owner's key and never comes back from any read path: only the plugins that ask for it by name receive it, never the model. A readable entry is stored in clear; the agent can read it with get_reference, and list_references shows its name and description. Model keys are always secret; platform entries never are.
{name} in a soul
A soul can cite a readable entry as {name}: the runtime replaces it with the value at every turn, so a change in the registry counts from the next turn without a redeploy. A secret cited is never replaced (validate calls it an error); an unknown name is left as it is, so the braces of a JSON example are not touched; {{ is not a placeholder. In the editor, typing { offers the names.
There is no rename
An entry is its name, unique in its scope. Saving under another name makes a second entry and leaves the first.
Connected accounts
References → Connected accounts: Google, Microsoft, Slack, GitHub and Notion, signed in with OAuth by a person or, for a company, by an owner or admin. An entry can point to an account: its value is the account's access token, refreshed when used. Disconnect, and the plugin says to connect it again. A provider the platform has no app for shows as Not configured.
From caller
An entry of a tron or an agent can have no value at all: whoever calls the Tron API gives it with each turn, as the header X-Vibetron-Credential: NAME=value. It lives for that turn only. A turn that needs it and does not give it is a 422 credential_required.