vio builds, deploys and operates Viorant agents from a terminal. It turns a folder into
a Space, validates a .vio file, stands the agent up on Viorant Cloud and hands you a
URL — the same deploy pipeline as the Hub, without opening it.
These pages describe
vio 1.0.0 or later. Running without installing, the
one-line coding-agent setup, connecting before you deploy, vio run and
vio logs --run need 1.0.4 or later. vio update --check and the npm-global update
message need 1.0.6 or later. Check with vio --version, and run vio update if you
are behind.vio ships as one self-contained JavaScript file. It needs Node 22 or 24:
npx fetches the current release from
npm and runs it, so any vio command works with npx -y @viorant/cli in front of it:
vio on your PATH with npm instead:
vio update keeps
current.
macOS and Linux
vio in ~/.viorant/bin/vio without sudo, then adds that folder to
your PATH in your shell’s startup file:
It prints each file it changed. The block it adds is marked
# added by vio installer,
and it is never added twice: a file that already mentions .viorant/bin is left alone.
Open a new shell, then check:
Keep your startup files untouched
To install without the installer editing any file, setVIO_NO_MODIFY_PATH:
~/.viorant/bin. If that folder isn’t on your PATH yet, it
prints the line to add yourself:
Windows
There is no installer script for Windows yet. Paste this whole block into Windows PowerShell (5.1 or later). It makes the same two checks as the macOS and Linux installer, in order: the sha256 checksum, then the Cloud KMS signature, verified with Node’scrypto.verify
against the pinned release key. If either check fails, the block stops with “Nothing was
installed.” and does not run vio.js, even when it is pasted line by line:
& { … } wrapper and $ErrorActionPreference = 'Stop'
are what make it stop at the first failure.
Run commands as node vio.js <command>. To update on Windows, repeat these steps, or run
node vio.js update: with no install.sh to run, it downloads the release, checks the
sha256 checksum and the signature, and replaces vio.js only if both pass.
Update
vio update installs the current release in place. On macOS and Linux it runs the same
installer as above, so the same checksum and signature checks apply. When you are already current it says so
and changes nothing. It is subcommand-only — there is no /update in the
shell.
To install a specific version, including an older one:
--check:
--json it prints one object on stdout:
{current, latest, channel, updateAvailable, install, command}. install is how this copy
was installed (installer, npm-global or npx), and command is the command that would
update it. A coding agent runs this before it starts work. If it can’t reach the release
server, it exits 1 with the reason on stderr.
Installed with npm i -g? Then npm owns that copy, so vio update does not run the
installer or touch it. It prints npm i -g @viorant/cli@latest for you to run instead.
Running the install command again does the same thing, and VIO_VERSION pins a version
there:
npx, there is nothing installed for vio update to replace, so it explains
instead of updating: it prints npx -y @viorant/cli@<version> <command> to pin a version,
and the installer line above for a permanent install. Pin a version yourself by adding it
after the package name, for example npx -y @viorant/cli@1.0.4 --version. The next
release, while it is still being tested, is published under the beta dist-tag:
vio checks for a newer release and, if there is one, prints a one-line
notice to stderr naming vio update. The notice never installs anything, never touches
stdout, and is skipped entirely on a --json run, so it cannot break a script.
If your build is too old for Viorant Cloud, commands that talk to it refuse with a message
that says to run vio update.
vio update updates the app. vio upgrade is your Viorant plan, not the CLI — see
Your plan.How releases are verified
On macOS and Linux the installer checks every release twice, with no extra tool to install and no way to opt out:- The sha256 checksum, before anything is written. It must match the checksum published beside the file.
- A Cloud KMS signature. Viorant’s release workflow signs each release with a Cloud
KMS key. The installer verifies that signature with Node’s own
crypto.verify, against a public key pinned inside the installer script.
cosign:
vio update on
Windows both verify the sha256 checksum and then the signature, against the same pinned
key, and install nothing if either fails.
Then
vio with no arguments opens the interactive shell. In a script or
a CI job, use the subcommands — they are the automation surface.
Turn a folder into a Space
Scaffold an agent you can edit and deploy.
Sign in
Connect
vio to your Viorant account.