Command Line
Everything the panel does, from a terminal — apps, virtual machines, databases and domains. It has no dependencies and needs Node 18 or newer.
Install
npm install -g javer-cli
Log in
Create a key on the API Keys page, then:
javer login
The key is saved to ~/.javer/config.json, readable only by you. It does
not expire and it is not scoped — it can do anything your account can. Revoke it from
the panel when you are finished; javer logout only forgets the local copy.
The live dashboard
javer ui
Apps and virtual machines on one screen, with the resource budget they share across
the top — which the panel itself spreads over three pages. Arrow keys select a row;
s starts or stops it, r restarts, l shows its
logs, q quits. It refreshes every four seconds, and anything that takes a
service offline asks first.
Deploying
javer deploy # the folder you are in
javer deploy --repo owner/name # a connected GitHub repo
javer deploy --repo owner/name --branch main --ram 512 --cpu 0.5
With no --repo it packs the current directory and uploads it. The folder
name becomes the app name unless you pass --name.
Left out of the upload automatically: node_modules (the platform installs
dependencies itself), .git, build output, logs, and .env —
environment variables belong in the panel, not baked into a deployment.
Uploads are capped at 2 MB after compression. Past that, deploy from GitHub instead.
Before your first deploy
Two platform rules catch people out, and both fail quietly:
Read process.env.PORT. Javer assigns the port. An app
that hardcodes one will start, report healthy, and return 502 — because nothing is
listening where the traffic is being sent.
The entry file must be server.js at the root of your
project, or index.html for a static site. A start script in
package.json is not read.
Apps
javer ls # everything you are running
javer status <app> # size, host, address
javer logs <app> # recent output
javer logs <app> -f # keep watching
javer env <app> [--show] # values hidden unless you ask
javer domains <app> # custom domains and whether they verified
javer start|stop|restart <app>
javer delete <app> # asks you to type the name
logs -f checks every two seconds and prints what is new. It is a poll,
not a live tail — the server returns the last 300 lines as a snapshot.
delete takes the app, its data and its address, and there is no undo. It
asks you to type the name rather than accepting a yes, and refuses entirely when there
is no terminal to confirm in unless you pass --yes.
Virtual machines
javer vms # list them
javer vm <name> # details, with live memory and CPU
javer vm start|stop|restart <name>
SSH from your own machine is not available yet — VMs sit on a private network with no route in from the internet. Use the browser terminal in the panel.
Databases
javer db # list them
javer db create <name> # PostgreSQL
javer db create <name> --engine mysql
Credentials are printed once, when the database is created, and are not stored
anywhere they can be read back. A database is reachable only from inside Javer, so you
cannot connect to it from your laptop with psql or a GUI client.
In a build pipeline
Set JAVER_API_KEY instead of logging in, so no key is written to disk:
JAVER_API_KEY=<key> javer deploy --repo myorg/myapp --branch main
javer deploy follows the build and exits non-zero if it fails, so it
works as a pipeline step. JAVER_API_URL points the CLI at a different
server. Both take precedence over the saved file.
Every command
javer ui live dashboard: apps + VMs
javer login [--key <key>] [--url <url>] save an API key
javer logout forget the saved key locally
javer whoami plan limits and what is left
javer ls list your apps
javer status <app> details for one app
javer logs <app> [-f] recent output; -f keeps watching
javer env <app> [--show] environment variables
javer domains <app> custom domains
javer start|stop|restart <app> lifecycle
javer delete <app> [--yes] remove an app, its data and its URL
javer vms list virtual machines
javer vm <name> details for one VM
javer vm start|stop|restart <name> VM lifecycle
javer db list databases
javer db create <name> [--engine mysql] new Postgres or MySQL
javer deploy deploy the folder you are in
javer deploy --repo owner/name deploy from a connected GitHub repo
javer version | help