voxal deploy
Build and deploy your app so anyone can reach it over SSH
voxal deploy builds your app and ships it to voxal. When it finishes, anyone can reach your
app with ssh app@voxal.sh.
voxal deploy [dir] [--name <name>]dir defaults to the current directory. The manifest is read from voxal.json.
What it does
- Signs you in if needed. On an interactive terminal it offers to log you in inline.
- Resolves the target project (see project resolution below).
- Builds your app with production settings, the same bundle pipeline
as
voxal build. - Checks the size against the bundle limit (hard limit 5 MiB, warning past 4 MiB).
- Validates the bundle by booting it, so a broken app fails before it goes live.
- Uploads it and, on success, prints the live
ssh app@voxal.shcommand.
Each deploy replaces the running version. voxal drops the previous instance, so the next connection boots the new code.
Flags
| Flag | Value | Description |
|---|---|---|
--name | <name> | Target project. Creates or links it if you own it. |
--token | <token> | Authenticate a single command without an interactive login, for CI. Pair it with --name. |
Project resolution
voxal deploy decides which project to deploy to in this order:
- The
--nameflag. - The
namefield invoxal.json. - The cached link in
.voxal/project.json. - An interactive picker, when running on a terminal.
Examples
# Linked project, the common case, no prompts
voxal deploy
# Deploy a specific directory under an explicit name
voxal deploy ./apps/game --name space-game
# Non-interactive deploy in CI
voxal deploy --token "$VOXAL_TOKEN" --name myappTroubleshooting
A 401 means the project is not linked to your account. Ownership is re-checked on every
deploy, so a project you do not own cannot be deployed to. Run voxal whoami to
confirm your account and projects.
Verified end to end
Every deploy is integrity-checked from build to run, so the bytes that boot are exactly the bytes you built. See Security.