Choose the Linux host
Detect the current host before changing it, then use this default:
Roomote publishes
amd64 and arm64 images. The installer detects the Linux
guest’s architecture, generates and preserves deployment secrets, installs
Docker when needed, starts the published images, and installs the roomote host
CLI. Do not clone or build Roomote from source unless the user intends to
develop Roomote itself.
Before making changes, report the selected Linux host, whether it is new or
already contains Roomote, and the public-ingress plan. Pause for approval before
installing host software, creating a VM, using sudo, creating public ingress,
or replacing an existing deployment setting. Never delete an existing VM,
deployment, or volume to obtain a clean state without explicit approval.
Run the standard installer
Ensurecurl, openssl, less, and ca-certificates are installed on the
Linux host. Check the self-hosting prerequisites,
including Docker storage support or credentials for a hosted sandbox, before
starting the installer. The installer selects Docker but does not prepare
quota-capable storage on the host.
On a Linux host with a stable public domain, use the normal production path:
--domain only for a short evaluation on a Linux host with a directly
reachable public IPv4 address. The installer then uses a temporary sslip.io
hostname. For production, use stable app and wildcard DNS with public TCP ports
80 and 443, or a named tunnel configured for the same stable hostnames.
--no-setup-url suppresses the tokenized first-admin link in captured agent
output. After the installation is healthy, the user must obtain that link in a
separate trusted terminal by running:
Local installation from macOS or Windows
Use a full Linux VM and the standard installer. Prepare a stable public HTTPS URL using the home-network guide before connecting providers. The named-tunnel path works with the VM commands below; router port forwarding additionally needs a VM interface reachable on the LAN. For macOS, install Multipass and create the VM:--tls-mode internal. Keep the host,
VM, and any tunnel service running while using Roomote. Use the same
application URL for setup and provider callback registrations.
Cloudflare Quick Tunnels do not support
Server-Sent Events,
which Roomote uses for live updates. Do not use trycloudflare.com for the
complete setup path. A user without a domain can instead evaluate on a
server with a directly reachable public IPv4 address using the installer’s
automatic hostname.
Do not replace the installer with development Compose files. The installer
manages secrets, images, persistent state, migrations, Caddy, workers, and
lifecycle commands.
Browser setup
Pause while the user opens the setup URL and completes the browser-owned steps:- create the first admin account
- configure an inference provider or ChatGPT subscription
- create and install the deployment’s source-control app
- select the repositories Roomote agents may access
- configure a sandbox provider and validate it where available
- follow Run your first task; a saved environment is optional
<origin>/github/callback and the webhook is
<origin>/api/webhooks/github. A loopback callback can support some OAuth
flows, but GitHub cannot deliver webhooks to localhost; use the tunnel origin
for the complete Roomote source-control workflow.
The user must personally enter credentials and approve provider authorization.
Do not request credentials, private keys, setup tokens, or tokenized URLs in the
agent conversation.
Verify before declaring success
After browser setup, continue until all applicable checks pass:sudo roomote statusreports the deployment services healthy.- The public origin reaches Roomote and presents a publicly trusted browser certificate.
- Sign-in works and the expected repositories appear.
- Settings → Sandboxes → Validate environment succeeds for the selected sandbox provider, when validation is available. Docker validation checks the daemon, image, and release archive; the real task must also succeed with the configured disk limit.
- A small Roomote task clones a repository and runs a harmless command.
- The task transcript, logs, and any generated artifact are accessible.
- Configured callbacks and webhooks work through the public origin.
- Branch or pull-request delivery works when the task requests repository changes.
- A live preview works only when the chosen ingress provides the required preview hostname coverage.