Wazza OS User guide Sign in

Wazza OS on a server

Wazza OS is a desktop app, but it does not need a screen: on a server, a cloud machine or over SSH it brings its own virtual screen, and you drive it with the command line. Its VM, apps and Chats work exactly as on a desktop.

WhatWazza OS with its own invisible screen, driven from a terminal
WhyAgents and apps on a powerful machine, in CI, or for a whole team
WhoAdmins, developers, automation
Wherewazza --virtual-screen=… and wazza --gui …

What the server needs#

NeedWhyHow
Hardware virtualization (KVM): /dev/kvm readable and writableThe VM runs on it Bare metal, or a cloud machine with nested virtualization; your user in the kvm group
A systemd user sessionEach VM runs in a memory-capped scope of itLog in over SSH (a session that starts it), or keep it running without a login: loginctl enable-linger "$USER"
The virtual-screen tools: Xvfb, xauth, openbox, dbus, ffmpeg, Python 3The virtual screen, its window manager, recordingsEvery package installs them (the tarball's installer checks them)
A graphics card (optional)3D apps draw on itWithout one, the VM uses software graphics

wazza --check tells what is missing, with the commands that fix it (Check this computer). Install Wazza OS as on a desktop (Install).

Start, set up, use, stop#

  1. Check the machine:

    $ wazza --check
  2. Start Wazza OS in the background, with its own screen:

    $ nohup wazza --virtual-screen=always >/dev/null 2>&1 &
  3. Wait until it answers:

    $ until wazza --gui status >/dev/null 2>&1; do sleep 2; done
  4. Set it up without clicks: account, logins, keys, apps (the setup file):

    $ wazza --gui setup run --file ~/wazza-setup.json
  5. Use it: every command of the command line, and pictures of its screen:

    $ wazza --gui vm list
    $ wazza --gui screenshot ~/wazza.png
  6. Stop it:

    $ wazza --gui quit

A login that opens a browser (a plan login such as Claude or ChatGPT) prints its link in the terminal instead: open it on any computer, sign in, and paste the code it gives back into the terminal. API keys need no browser.

The virtual screen#

--virtual-screen=auto|always|never (default auto) decides where the window goes:

ValueWazza OS…
auto (default)uses your display when there is one, and starts its own screen when there is none
alwaysalways starts its own screen, even on a desktop (it then runs out of sight)
nevernever starts one: without a display, the start fails

Its own screen is private to your user (1280 × 800, with a simple window manager) and stops when Wazza OS stops. It is the only screen Wazza OS captures: --gui screenshot FILE.png, --gui record start FILE.mp4 and --gui record stop ID work with it, and refuse on a normal desktop (Wazza OS never captures your own desktop). To see what a tab of the VM shows, on any screen, use Drive:

$ wazza --gui invoke modules_call drive look '{"vmId":"vm-1","tabId":"t3"}' --image-out ./t3

--gui host-app launch chromium (or vlc, xmessage) opens that app of the server on Wazza OS's own screen, and only there; host-app list and host-app stop ID follow and close it.

Over SSH, and for other agents#

  • The commands work over SSH, as the user who started Wazza OS. The SSH session must have that user's runtime folder (XDG_RUNTIME_DIR), as a normal login does.
  • An agent on another machine can use the same commands through SSH; an agent on the server itself runs them in its shell (Connect an agent from outside).
  • One Wazza OS runs per user: a second start for the same user goes to the one already running.

On your own computer#

Start Wazza OS from your desktop as usual, then use wazza --gui … from any terminal of your user: the commands work in the background and change what you see only when you ask (--focus). A tab a command opens appears in the background, with a badge.

Wazza OS user manual · written for Wazza OS 0.2.0 (build 44c5d0ea07c1) · screenshots from a test computer running Wazza OS 0.2.0.