porto/computer:v1.
Default: Docker on the same machine as the API. Optional: the same image on a VPS, so the desktop keeps running with the laptop shut.
This page is setup. After the host is up, grant Computer on a seat: Seat Computer.
Desktop app (beta)
The Computer panel shows Computer is off. This is correct for a new install. Computer runs the agent’s desktop in a Docker container. The app does not include this container. Download it one time. Each step has a check. Before you start: install Docker Desktop. Start it.1
Download the desktop image
This file is the Linux desktop that the agent uses. It includes Chromium
and a terminal. It is large; the download takes some minutes.Check:
ls -lh /tmp/porto-computer.tar.gz shows a size near 400 MB.2
Load it into Docker
docker images porto/computer:v1 shows one row, near 1.7 GB.3
Set the flag
The app reads its settings from Check:
~/.porto/desktop.env. The app made
this file at first launch. Add one line:tail -1 ~/.porto/desktop.env shows PORTO_COMPUTER=1.4
Restart Porto
In the menu bar, select Stack → Stop Porto. When the window says
Porto is stopped, select Stack → Start Porto.Check: the Computer panel does not show “off”. Give the Computer
grant to a seat (how). The panel shows the live
desktop.
Local Docker
This is the default.1
Run Docker on the API machine
Docker Desktop or Docker Engine. The API process must see
docker on PATH.2
Build the desktop image
porto/computer:v1. Existing seats keep the previous image until Stop then a new start, or Remove.3
Turn the flag on
In Leave
backend/.env:PORTO_COMPUTER_HOST unset (or set local_docker). Restart the API and the runner.4
Check
"ok": true, "host": "local_docker", "live_view": "loopback", and "image": { "present": true }.GET /computerz is public, like /browserz. Start, stop, and live view need the same owner bind as chat.
Do not run the API inside Compose if you want Computer. The native API talks to host Docker. See Docker Compose.
VPS
Same desktop. Different engine. Occupancy, grants, screenshots, and the human floor stay. Live view is screenshots, not a loopback iframe.Interactive remote watch is not in this release. You see screenshots in chat and in the Computer panel. Take over still hands you the floor.
What you need
- A VPS with Docker Engine running
- SSH (or TLS Docker TCP) from the API machine to that engine
- The image
porto/computer:v1on the VPS engine - The
dockerCLI on the API machine
DOCKER_HOST). It never puts docker.sock in the Computer container.
1. Reach the engine
From the user that runs the API and runner, this must work with no password prompt:vps_not_reachable. Chat still works.
Do not expose an unauthenticated Docker TCP port.
2. Put the image on the VPS
Build on the VPS, or load an image you already built:3. Point porto at it
Inbackend/.env (API and runner):
PORTO_COMPUTER_HOST also accepts remote or cloud. Both mean VPS.
Occupancy stays on the API machine (PORTO_COMPUTER_DATA_DIR, default ~/.porto/computer). Use the same path in API and runner.
Restart the API and the runner.
4. Check
"ok": true, "host": "vps", "live_view": "screenshots", and "image": { "present": true }.
What a VPS desktop does not get
Put files the seat needs on Drive, or fetch them from the desktop itself.
Switch back to this machine
UnsetPORTO_COMPUTER_HOST (or set local_docker). Unset PORTO_COMPUTER_DOCKER_HOST. Restart the API and the runner. Local Docker is the default.
Fail reasons
Env vars: Environment. HTTP: GET /computerz.

