
### UmaDev: A coding agent that works like a real dev team, commanding one of five AI coding CLIs you already use.
[](LICENSE)
[](https://www.rust-lang.org/)
[](spec/UMADEV_HOST_SPEC_V1.md)
[](CHANGELOG.md)
English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md)
---
umadev is **a coding agent that works like a real dev team**. It drives one of five first-class AI coding CLIs you already have — Claude Code, Codex, OpenCode, Grok Build, or Kimi Code — and owns no model endpoint of its own: the model your selected base is connected to is the brain.
What you get is **role-based team orchestration** over that borrowed brain. For work whose depth warrants it, bounded sessions take product, architecture, UI/UX, frontend, backend, QA, security, and DevOps assignments; a small edit stays a small edit. These roles are not independent people and their verdicts are advisory. UmaDev owns the plan and deterministic acceptance floor, produces depth-appropriate artifacts/evidence, and reports failed or incomplete work honestly rather than promising that every request becomes shippable software.
A ninth seat, the **coordinator**, routes the request, owns a visible plan for deliberate work, schedules the selected roles, evaluates gates, and leaves the audit trail. It doesn't generate code; the base CLI does. Roles exchange bounded blackboard artifacts and structured verdicts rather than free-form cross-talk.
It's a single Rust binary. npm is just the delivery shell.
---
## Table of Contents
- [Install](#install)
- [Quickstart](#quickstart)
- [Project Origin](#project-origin)
- [What Problem It Solves](#what-problem-it-solves)
- [Features](#features)
- [How It Works](#how-it-works)
- [The Team](#the-team)
- [Why You Can Trust the Output](#why-you-can-trust-the-output)
- [Runtime Modes](#runtime-modes)
- [The Full Delivery Flow](#the-full-delivery-flow)
- [Quality Gate](#quality-gate)
- [Governance](#governance)
- [Knowledge Base](#knowledge-base)
- [Deliverables](#deliverables)
- [Commands](#commands)
- [Configuration](#configuration)
- [Rust Architecture](#rust-architecture)
- [Development](#development)
- [License](#license)
---
## Install
```bash
npm i -g @umatech/umadev
```
> **Moving from the old `umadev` package?** UmaDev now ships only as `@umatech/umadev`. The unscoped `umadev` package is retired and was the target of a malicious `1.0.74` publish, so run `npm uninstall -g umadev` first and use `npx @umatech/umadev`, never `npx umadev`. Details: [SECURITY.md](SECURITY.md#retired-package-names).
Then run `umadev`. Hit a permission or PATH error (a `sudo`-owned prefix is the usual cause)? Run `umadev doctor` — it prints the exact fix.
**Or skip npm entirely** — the native installer needs no Node, no npm, and never sudo. It downloads the official release binary for your platform, verifies its published SHA-256, and installs to a directory you own (`~/.local/bin`, or `%LOCALAPPDATA%\Programs\umadev` on Windows):
```bash
# macOS / Linux
curl -fsSL https://umadev.goder.ai/install.sh | bash
```
```powershell
# Windows (PowerShell)
irm https://umadev.goder.ai/install.ps1 | iex
```
(Pin a version by setting `UMADEV_VERSION` / `$env:UMADEV_VERSION` to the release you need; override the target directory with `UMADEV_INSTALL_DIR`. Every release binary embeds and stages the curated knowledge corpus. The npm launcher additionally fetches the optional embedding model on demand; a native install starts with BM25 retrieval and can use a manually provisioned local model through `UMADEV_EMBED_MODEL_DIR`. `umadev doctor` reports the active retrieval path and anything missing.)
The npm package is a distribution shim. The actual program is a Rust binary. Prebuilt binaries ship for macOS (Apple Silicon and Intel), Linux (x86_64 and ARM64, glibc ≥ 2.31 or musl/Alpine), and Windows x86_64; Windows on ARM uses that x64 build through the OS compatibility layer.
The Rust binary and curated corpus need no cloud knowledge service. Real coding still requires an installed, authenticated base CLI. The optional local embedding model (`multilingual-e5-small`, f16, ~224 MB) is **not** inside the npm tarball: the npm launcher fetches the version-matched, checksummed release asset on the first command that needs retrieval and stores it in `~/.umadev/embed-model`. Later local inference needs no API key or network. If the fetch is unavailable, retrieval continues as BM25-only and a later eligible launch retries; a corrupt cache is rejected and re-fetched.
Build from source:
```bash
git clone https://github.com/umacloud/umadev.git
cd umadev && cargo build --release --features vector-local
./target/release/umadev --version
```
> **Building from source?** The embedding model is not in the repository. A plain `cargo build --release` supports BM25 and the explicitly opted-in remote vector backend, but does not compile the local candle backend. Local vectors require `--features vector-local` **and** a compatible `config.json`, `tokenizer.json`, and `model.safetensors` on disk. Point `UMADEV_EMBED_MODEL_DIR` at that directory, or place it at `~/.umadev/embed-model`. The npm launcher provisions version-matched, verified release assets automatically; a source-built binary does not download them. Without a usable vector backend, `engine = "hybrid"` safely executes as BM25-only.
You also need one AI coding CLI installed and logged in — that's the brain umadev drives:
| Pipeline base (`umadev run/quick --backend`) | Install | Authenticate |
|---|---|---|
| Claude Code (`claude-code`) | `npm i -g @anthropic-ai/claude-code` | `claude auth login` |
| Codex (`codex`) | `npm i -g @openai/codex` | `codex login` |
| OpenCode (`opencode`) | `npm i -g opencode-ai` | `opencode auth login` |
| Grok Build (`grok-build`) | `curl -fsSL https://x.ai/cli/install.sh \| bash` | `grok login`, or set `XAI_API_KEY` for non-browser/headless use |
| Kimi Code (`kimi-code`) | `npm i -g @moonshot-ai/kimi-code` (Node.js >= 22.19) | `kimi login` |
The `curl | bash/sh` entries are the Unix install hints understood by the current driver. On Windows, use each vendor's official Windows installation instructions; do not paste those Unix commands into PowerShell.
UmaDev itself needs no additional model API key. You still install and authenticate the selected base, and that base keeps ownership of its account, subscription, credentials, model, and any third-party/local-model routing. UmaDev does not run login flows or open an authentication browser for you. It sends the task and governance context, but never stores or silently replaces the base's credentials or model endpoint. `umadev doctor` confirms authentication where a reliable probe exists; for Grok Build, only a successfully opened real session proves readiness — “installed” does not mean “logged in.”
---
## Quickstart
```bash
umadev # launch the chat UI; first run lets you pick a base
```
Tell it what you want built:
```text
> add CSV export to the reports page
> build me a todo app with a Postgres backend
> /goal ship a working SaaS landing page # keep working until the goal is met
```
Or run a build non-interactively:
```bash
umadev run "add CSV export to the reports page" --backend claude-code
```
umadev sizes the work to the request — you don't have to select an intent class. A request classified as Build enters the same owned Director contract whether it came from chat or `umadev run`; the plan, simulated role reviews, checks, and delivery artifacts remain proportional to its depth. On a clean Git worktree UmaDev can create a derived `umadev/