ufo-cli 0.2.1

UFO local rover CLI — claims and runs operations on the host.
# ufo-cli

[![GitHub](https://img.shields.io/badge/GitHub-fengsi%2Fufo-181717?logo=github&style=for-the-badge)](https://github.com/fengsi/ufo)
[![Build](https://img.shields.io/github/actions/workflow/status/fengsi/ufo/ci.yml?logo=github&style=for-the-badge)](https://github.com/fengsi/ufo/actions/workflows/ci.yml)
[![crates.io](https://img.shields.io/crates/v/ufo-cli?style=for-the-badge)](https://crates.io/crates/ufo-cli)
[![License](https://img.shields.io/crates/l/ufo-cli?style=for-the-badge)](https://github.com/fengsi/ufo/blob/main/LICENSE)
[![Status](https://img.shields.io/badge/status-preview-blue?style=for-the-badge)](https://github.com/fengsi/ufo/blob/main/CHANGELOG.md)
[![Rust](https://img.shields.io/badge/Rust-2024-B7410E?logo=rust&style=for-the-badge)](https://github.com/fengsi/ufo/blob/main/apps/rover/Cargo.toml)

`ufo-cli` is the host-side rover for UFO. It enrolls a local machine into a UFO
fleet, long-poll claims queued operations, lets the assigned pilot drive the rover in an
isolated per-operation work directory, streams telemetry back to the Hub, and
uploads a `git diff` for review.

UFO is an MVP preview. APIs, configuration, database schema, and the rover
protocol may change before 1.0, and migration paths are not guaranteed.

## Install

```bash
cargo install ufo-cli
```

The rover is tested on macOS/Linux preview hosts. Windows is not validated yet.

## Enroll And Start

Start the UFO Hub first, then create an enrollment code from the
Rovers panel.

```bash
UFO_HUB_UPLINK=http://localhost:8080 \
UFO_ROVER_ENROLLMENT_CODE=<code> \
ufo rover enroll

ufo rover start
```

Enrollments are stored in `~/.ufo/rovers.json`, keyed by rover id. A host can
hold enrollments for multiple fleets or servers.

Useful commands:

```bash
ufo rover list
ufo rover status
ufo rover remove <rover-id|prefix>
ufo rover remove --all
```

## Pilots And Tags

The rover auto-detects local pilots and reports capability tags such as
`pilot:claude`, `pilot:codex`, `pilot:antigravity`, `pilot:cursor`,
`pilot:copilot`, `pilot:amp`, `pilot:opencode`, `pilot:openclaw`,
`pilot:hermes`, `pilot:pi`, `pilot:kimi`, `pilot:kiro`, `os:macos`, and
`arch:aarch64`. UFO only lets a rover claim work when its tags match the queued
operation.

You can add user dispatch tags during enrollment:

```bash
ufo rover enroll --tag gpu --tag region:moon
```

Run multiple operations per enrolled rover with `ufo rover start --units N` or
`UFO_ROVER_UNITS=N`.

## Trust Boundary

Pilots run local CLIs with the privileges of the user that started the rover.
Use a dedicated low-privilege account, container, or isolated machine for rover
hosts you share with a fleet.

See [README.md](https://github.com/fengsi/ufo/blob/main/README.md) and
[SECURITY.md](https://github.com/fengsi/ufo/blob/main/SECURITY.md) for the
full Hub setup and trust model.