voxal docs
CLI

voxal init

Scaffold a new voxal app and link it to a project

voxal init creates a new app directory, links or creates a project for it, and writes a starter app plus its config. It is the quickest path from nothing to a deployable app.

voxal init [name]

The name argument is optional. If you omit it, the CLI prompts you for one.

What it does

  1. Validates the name and fails fast if a directory with that name already exists.
  2. Signs you in if needed. On an interactive terminal it offers to log you in inline. See Authentication.
  3. Links or creates a project. An interactive menu lets you connect to an existing project or create a new one, respecting your plan limit.
  4. Scaffolds the app into ./<name>/.

What gets created

my-app/
├── package.json        depends on @voxalsh/sdk
├── voxal.json          { "name": "my-app", "main": "app.js" }
├── app.js              a createApp() starter (core SDK, not React)
├── .gitignore          adds .voxal
└── .voxal/
    └── project.json    local link cache, { "name": "my-app" }

The generated app.js is a plain core SDK app built with createApp(). For a richer React starter, use npm create voxal-app instead.

init vs. create-voxal-app

voxal init scaffolds a core-SDK app.js. npm create voxal-app <name> scaffolds a React app.jsx or app.tsx (it asks TypeScript or JavaScript) and installs voxalsh as a local dependency. Both produce a deployable app; pick the one that matches how you want to build UIs.

Name rules

App and project names match /^[a-z0-9][a-z0-9-]{0,62}$/: lowercase letters, digits, and hyphens, starting with a letter or digit, up to 63 characters. Names are normalized to trimmed lowercase. Some names are reserved (see Projects).

Next steps

After scaffolding, voxal init prints the next commands to run:

cd my-app
npm install
voxal deploy
ssh my-app@voxal.sh

Run voxal dev first if you want to preview the app locally before deploying.

On this page