Needs
vio 1.0.0 or later for credits deploys. The saved run key, --show-run-key
and --verbose-logs need 1.0.6. Check with vio --version.Before you deploy
- Sign in with
vio login. - Make sure
vio validate agent.viopasses. A stale digest is refused at deploy — see Validate a .vio file. - Check you have room:
vio statusshows how many agents your plan still allows. - Decide how the agent pays for its model: Viorant credits, or your own provider key.
Credits or your own key
The bundle decides, through its agent’s model reference.Viorant credits
An agent whose model is one of Viorant’s managed models runs on your wallet. There is no provider key to find, store or send:agent.vio (the agent artifact)
provider://openai-compatible/:
vio providers prints this same list, with Viorant credits shown first. A bundle deploys on
credits only when every agent in it uses one of these tiers; anything else — including a
mix — is treated as your own key.
Changing the model changes the agent’s body, so run vio digest agent.vio --fix after
the edit.
Before a credits deploy, vio prints one line:
vio status shows
your balance. A credits agent runs on Viorant Cloud only.
Your own key (BYOK)
Any other model —provider://openai/gpt-4o-mini, provider://gemini/… and so on — runs
on your own provider key, which vio seals on your machine and delivers straight to the
deployment.
Inside a Space, vio init creates .vio/.env.provider, you fill it in, and
vio deploy reads it. .vio/ is git-ignored, so the key never reaches a commit.
.vio/.env.provider
VIORANT_RUNNER_PROVIDER_KIND must match the bundle’s model: a provider://gemini/…
agent needs gemini. If they differ, vio refuses before anything is sent, names both,
and says Nothing was deployed. — otherwise the agent would wait forever for a key it
never gets. vio providers lists every kind and the key variable it needs.
Outside a Space — a loose .vio someone sent you — pass a file explicitly with
--env-file, kept outside the repository and never committed. An --env-file always wins
over the Space’s own credentials.
Credentials are read from the Space that holds the bundle you are deploying, not
from the folder you happen to be standing in.
vio deploy ../other-agent/agent.vio
uses ../other-agent’s key, not this one’s.Deploy
From the shell:vio validates the file on your machine — the same checks as vio validate — then asks
Viorant Cloud to stand the agent up.
--env-file <file>names the credentials file.--name "My agent"sets the deployment name; it defaults to the name in the file.--verbose-logsrecords each tool call’s arguments and result in the agent’s run logs. See Deployment logs. It works with--target viorant_cloudonly; a local container refuses it, because its logs are on your machine.--show-run-keyprints the run key. See Call the agent.--jsonprints one JSON object, for scripts.
vio connect first, vio deploy pushes the
staged connectors in the same request, and the agent comes up connected. Before it creates
anything, it also checks the tool names your bundle declares against what each staged
connector offers. A name the server does not offer stops the deploy. If the agent has OAuth
connectors that are still not connected after a Viorant Cloud deploy, an interactive
terminal asks Authorise them now? [Y/n], which opens the same consent as vio connect.
Without a terminal, vio prints the vio connect follow-up instead.
Call the agent
On success,vio prints the deployment id and its URL. It also mints a run key, the
bearer secret that lets something call the agent. For a Viorant Cloud deploy, vio saves
the key to ~/.viorant/run-keys.json, keyed by the deployment, and does not print it:
vio run uses, so for a call from your own
machine you never need to handle the key. To call the agent from somewhere else, ask for
the key:
--show-run-key prints the key and a paste-ready request. vio also prints the key if it
could not save it, because that is the only copy. A local container (--target local_docker) always prints its key. In --json, a saved key reads [redacted] unless you
pass --show-run-key. Never paste a run key into chat or a commit.
vio run-key <id> --rotate, which kills the old key at once.
To run it on a timer instead, see Schedule an agent.
Connectors
Authorising a deployed agent’s connectors — including ones that need your own OAuth app — and the built-in tools every agent can use (web_fetch, current_time, and web_search
with its Tavily key) now have their own page: see
Connectors and tools.
Next
- Connectors and tools —
vio connect, and setting upweb_search. - Manage deployments — list, runs, logs, redeploy and stop.
- Schedule an agent — run a deployed agent on a timer.