Your choice of runner, but never loose on it.

Uai runs on the runner you pick — your infrastructure (this machine, or your own AWS account) or ours — with your keys, in your name — yet every task is fenced in so it can't touch what matters. Power without blast radius.

Where your secrets live is a choice you make

Every task, on every runner, gets a fresh sealed workspace that's destroyed when it ends — a throwaway container and fresh git worktree on a self-hosted runner, or a whole ephemeral machine on a Uai Cloud runner. That floor never moves. Where your secrets sit while that's happening is the part you choose.

Self-hosted runners are secret-blind — whether that runner is your own machine or your own AWS account. The cloud stores an environment schema — keys and labels, never values — and holds no AI keys, no SSH keys, no GitHub tokens. Secrets live encrypted where you control them (AES-256-GCM under a runner master key). The cloud only knows "runner has credentials: yes/no."

Uai Cloud runners are not secret-blind, and here's the trade. You hand us that custody: secrets live in Uai's KMS, not on infrastructure you control. In exchange, your blast radius ends at a machine that's destroyed with the task, rather than a container on a machine that persists — and that boundary holds from inside the container too. The link-local instance metadata address at 169.254.169.254 — used by every major cloud to hand a machine its own credentials — is where a compromised process would normally go looking. It's unreachable from inside a task container. Check it yourself, from inside a task.

Uai Cloud is the only runner where we hold your keys — and it's the one you pick when you want us to run everything. On a self-hosted runner — your machine or your own AWS account — we never hold your keys at all.

Attributed to you, not a bot

Every task carries the task creator's own credentials. Commits are authored with your git identity (your name and email), and git runs over SSH with your own per-user key — an ed25519 keypair generated on the runner, private key encrypted under the runner master key, only the public key pasted into GitHub. Pull requests use your GitHub user-to-server token from the Uai GitHub App, injected per task. So the work attributes to the actual person, never a bot.

Isolation

Each task gets its own Compose stack, worktree, and branch. Declared preview ports bind to 127.0.0.1 and reach you through the cloud proxy; undeclared ports are never forwarded. Agent CLIs run inside the task container, not on your runner. When the task ends, the container and worktree are deleted.

What lives where

Self-hosted runner Uai Cloud runner
AI keys Encrypted — on your machine, or in your own AWS account In Uai's KMS
SSH keys · GitHub tokens Per-user, encrypted — on your machine or in your own AWS account Per-user, encrypted in Uai's KMS
Your source code Worktree on disk, on your runner Worktree on disk, on an ephemeral machine, destroyed with the task
Environment values Schema only reaches the cloud; real values stay encrypted where you control them Schema only reaches Uai's control plane; real values encrypted in Uai's KMS
Orchestration Runs on your runner; Uai's cloud only routes chat and tasks Runs on Uai's own orchestrator

Common questions

Does the cloud store my AI keys or GitHub tokens?

Depends on the runner. Self-hosted — your own machine, or your own AWS account — no: the cloud never sees a value, only an environment schema. Uai Cloud: yes, encrypted in Uai's KMS — that custody trade is what buys you a runner you don't have to run yourself.

If I run on my own AWS, do you have access to that account?

No. You own the AWS credentials, and Uai has no access to your AWS account. That's specific to that flavor of self-hosted; Uai Cloud runs on infrastructure we operate, by definition, so the question doesn't apply there.

Do commits and PRs show up as a bot?

No. Every task runs with your own credentials — your git identity, your per-user SSH key, and your GitHub user token — so commits and pull requests attribute to you, not a bot.

Do you mark up tokens?

Not on your own keys: inference is billed by your provider and never marked up by us. Run through the Uai engine instead and that usage is metered from credits, at the rates listed in the app.

Does it touch ~/.claude or ~/.ssh?

No. Tasks never bind-mount ~/.claude or ~/.ssh. Instead the runner generates a per-user SSH key for you — never touching your personal ~/.ssh — and injects your per-task credentials into a throwaway container.

Is my code on your cloud?

Depends on the runner you pick. Self-hosted — your machine, or your own AWS account: no — the worktree lives on your runner, and the cloud holds no repos. Uai Cloud: yes — the worktree lives on an ephemeral machine we run, destroyed when the task ends.

Do I need a GPU?

No. Uai calls hosted models — whichever engines the runner advertises — over the network; there is no local inference.

Trust it because you can see it.

Your choice of runner, your keys, your name — every task sandboxed. Set one up and read the model end to end.