Cubicle

Use the desktop console

Open a Box's graphical desktop from the Cubicle Dashboard in a full-screen VNC console, or from a native VNC client on port 5900 over the private network, and understand console readiness, clipboard, keyboard and session limits.

The desktop console shows a Box's virtual display (1920×1080) and sends your keyboard and mouse to it, like a monitor plugged into the machine. The Dashboard streams it over VNC through an authenticated relay to the Box's host, so it needs no tunnel, SSH key or working network inside the Box. It also works while the Box boots and when SSH does not, which makes it the place to look when a Box will not become ready. With the private network connected, a native VNC client can open the same display.

Before you begin

  • A Dashboard sign-in at https://app.cubicle.sh. Only the Dashboard opens the browser console; the CLI, the SDK and API keys cannot.
  • An explicit grant on the Box. The owner and admin roles alone are not enough. See Grant access to a Box.
  • A running Box.
  • For the best keyboard support, a Chromium-based browser such as Chrome or Edge. See Keyboard.

Desktops

Both base images start a desktop on the Box's display and sign in to it automatically.

Base imageDesktopAccountPassword
defaultXfce (LightDM, Xorg)sandboxDisabled
omarchyOmarchy (Hyprland)cubicleomarchy, for the lock screen and text login
  • omarchy is the image's built-in default password, the same on every Omarchy Box.
  • Both desktop accounts have passwordless sudo.
  • The desktop account is not your SSH guest account (jv_…). Files you create over SSH or exec belong to your guest account.
  • These accounts come from the base image. A Box created from a snapshot keeps the accounts of the Box the snapshot was taken from.

Open the console

  1. In the Dashboard, open Boxes.

  2. In the Box's row, click Console in the Actions column. When the button is disabled, hover over it to see why.

  3. The console opens full screen over the Dashboard, in the same tab, and connects. The status line reads Connecting… until the desktop fills the window, with the Box's name in the header.

  4. Close it with the close button at the top right, or with Escape. Outside full screen, press Escape. In full screen in a Chromium-based browser, hold Escape. Leaving full screen closes the console.

If the browser refuses full screen, the console stays open in the tab with the message Full screen was unavailable. You can keep using the console here. The Full screen button tries again.

Console controls

ControlEffect
Super+SpaceSends Super+Space, which toggles the launcher on Omarchy. Works without keyboard capture.
Send Ctrl+Alt+DelSends Ctrl+Alt+Del to the Box (keyboard icon).
ClipboardOpens the clipboard dialog (clipboard icon).
Full screenEnters full screen. Shown only outside full screen.
Escape to closeCloses the console and leaves full screen (close icon). Reads Hold Escape to close in full screen.

The display scales to fit the window.

Keyboard

In full screen, Chromium-based browsers capture the keyboard, so browser shortcuts go to the Box instead of the browser. Other browsers do not support capture and show Keyboard capture is unavailable. Browser shortcuts may still act locally. If you decline the browser's prompt, the console shows Keyboard capture was denied. Browser shortcuts may still act locally. The Super+Space button still works.

Clipboard

The clipboard carries text only. Files and images are not transferred.

  • Box to your computer: copy text in the Box, open Clipboard, then select and copy the text that appears in the Text field.
  • Your computer to the Box: open Clipboard, paste or type into Text, click Send to Box, then paste in the Box.

Shared display

There is one display per Box. Everyone viewing it, in the browser or a native VNC client, sees the same screen and controls the same keyboard and mouse.

LimitValue
Open browser consoles per user8, across all Boxes
Length of one browser console connectionAt most 8 hours

A console connection also closes when the Box stops, hibernates or is started again, and when your grant, membership or login ends. Adding or removing one of your SSH keys updates your guest account on each Box, which also closes your open consoles. The console then shows Disconnected. Open Console from the Dashboard to reconnect. Click Console again to reconnect.

Check console readiness

Every Box reports console.ready and a reason, separately from ssh.ready. The console is ready as soon as the Box's virtual machine runs and its display exists, before SSH is ready.

const info = await cubicle.boxes.get("acme/job-1")
console.log(info.console)
// => { ready: true, reason: null }

cubicle boxes get acme/job-1 and GET /v1/boxes/{box} return the same console field.

console.reasonMeaningWhat to do
deletedThe Box is deleted.Nothing.
not_requestedThe Box is stopped or hibernated.Start it.
restart_requiredIts host restarted and the Box waits for an explicit start.Start it.
node_unhealthyIts Node missed its heartbeat.Wait for the Node to report again.
console_observation_staleThe Node has not reported the display for the current connection generation in the last 15 s.Wait a few seconds.
console_unavailableThe virtual machine is not running or has no display yet.Wait. If the Box failed, start it again.

When you open the console, the Dashboard also checks your own access and can refuse with user_disabled, membership_inactive or grant_inactive.

Connect with a native VNC client

With the private network connected, a VNC client on your computer can open the same display.

  1. Connect the private network. The tunnel must be installed; see Reach a Box over the private network.

    cubicle connect
  2. Point the VNC client at the Box's private name on port 5900:

    vnc://job-1.acme.cubicle.internal:5900

The VNC connection has no password. Gateway's permission for your device and your grant on the Box are the only check, and the Box must be routed (running, with a grant) and its console ready. Port 5900 on a Box always leads to this display, so a service of your own on port 5900 in the Box is not reachable over the private network.

Routes are system-wide. While you are connected, any user or program on your computer can open the desktop of every Box you are granted, without a password.

Troubleshooting

Console requires an explicit grant on this Box

The Console button is disabled because you hold no grant on the Box. An owner or admin adds one in the Box's details, on the Access tab, or with cubicle grants add acme/job-1 USER_ID; see Grant access to a Box.

Console unavailable: <reason>

The Console button is disabled because console.ready is false. Look up the reason in Check console readiness. For not_requested and restart_required, start the Box with the play button or cubicle boxes start acme/job-1.

Console is not ready: <reason>

The Box or your access changed between loading the page and opening the console. The reason is one of the console.reason values or user_disabled, membership_inactive or grant_inactive.

Close an existing VNC viewer before opening another

You have 8 browser consoles open. Close one, in any tab, wait a few seconds and try again.

Disconnected. Open Console from the Dashboard to reconnect.

The connection closed: the Box stopped, hibernated or was started again, your access changed, or 8 hours passed. Close the console and click Console again.

On this page