Self-host Uai.

A host is a machine you own that runs your Uai tasks. Self-hosting one is a deployment choice, not a different product: the cloud at app.runuai.com orchestrates and stays secret-blind; your host does the work and holds the keys. Bring your machine and your AI keys — we never see either, and your own compute is never billed.

A deployment mode, not a pricing tier

Every Uai task runs on a host somewhere. When the host is yours, that compute doesn't go on a bill — you pay for orchestration and collaboration, not for inference or for someone else's servers. Your AI keys stay on the machine and are never marked up; the cloud holds an env schema, never the values.

So this page isn't a cheaper plan. It's where your tasks actually run. For what the cloud does and what it costs, see pricing; for the full trust model, see security.

What you need

Install — the command line

Four steps: install the CLI, mint a one-time enroll code in the app, point the host at the cloud, and run it as a service.

1. Install the host

npm i -g @runuai/host

That installs the uai-host CLI globally.

2. Mint an enroll code in the app

In the app, switch to the organization the host should belong to, then open Hosts → Add a host. It mints a one-time enrollment code (good for ~15 minutes) and shows the exact command to run on the machine.

3. Enroll the machine

uai-host setup --cloud wss://app.runuai.com/host --enroll uaienroll_…

The host generates its own bridge credential locally and sends the cloud only a hash — the secret never leaves the machine. Config lands in ~/.uai/.env.local.

4. Run it as a service

uai-host install && uai-host start
uai-host status   # → cloud: connected

install registers a per-user service — launchd on macOS, systemd --user on Linux — that restarts on crash and starts on login. The host now shows up in your org's Hosts list.

First task on a fresh host is slow: it builds the standard task image (uai-standard) once, a few minutes. Every task after reuses it.

Or skip the terminal — Uai Host.app

On a Mac, download Uai Host.app, open it, and paste the same enroll code. It checks Docker for you, then supervises the host from the menu bar — restart-on-crash, start-on-login, a local status-and-logs window. No CLI, no launchd file to think about.

It's a macOS desktop app; for Linux, Windows, or a headless box, use the command-line install above. You grab the app from the same Hosts → Add a host panel where you mint the code.

The local UI

The host serves a monitor on http://127.0.0.1:5876 (the next free port if that one's taken) — connection state, service status, logs, and active tasks. Run uai-host open to launch it, or just visit the URL. It's bound to loopback only; nothing is exposed to your network.

What it touches

The host owns a single workspace at ~/.uai/. Every task gets a fresh git worktree inside it: ~/.uai/tasks/<taskId>/workspace/<project-slug>/. Your real project directories — ~/Projects/whatever, your editors, your shells, your always-on dev containers — are never modified.

What it doesn't touch

Isolation

Every task: its own Compose stack, its own worktree, its own branch. Declared preview ports are bound to 127.0.0.1 and reached through the cloud proxy; undeclared app ports are never forwarded. Agent CLIs run inside the task container, not on your host. Credentials are per-user and encrypted with the host master key.

The whole trust story — secret-blind cloud, per-user credentials, and PRs attributed to you rather than a bot — lives on the security page.

Headless

The same install runs on a box with no display. Skip uai-host open and read uai-host status instead; everything the local UI shows is in the CLI. If you want the UI anyway, reach it over an SSH port-forward to 127.0.0.1:5876. Handy for a dedicated server, a NAS, or a cheap always-on Mac mini in the closet.

Bring your machine.

Enroll a host, keep your keys on the box, and run tasks as unbilled compute — the cloud never sees your secrets.