import { Badge } from "@/components/ui/badge"; import { useState } from "react"; const TABS = [ { id: "start", label: "Quick Start" }, { id: "features", label: "Features" }, { id: "tools", label: "Tools (22)" }, { id: "missions", label: "Autonomous" }, { id: "safety", label: "Safety" }, { id: "docker", label: "Dogfooding" }, ]; const TOOLS = [ { name: "automation_windows", ops: "list, find, focus, maximize, close, position", phase: "core", }, { name: "automation_elements", ops: "click, set_text, list, info, get_text, verify", phase: "1", }, { name: "automation_mouse", ops: "click, double_click, right_click, scroll, drag, hover", phase: "core", }, { name: "automation_keyboard", ops: "type, hotkey, press, hold", phase: "core", }, { name: "automation_visual", ops: "screenshot, extract_text (OCR), find_image, highlight", phase: "core", }, { name: "automation_assert", ops: "hash, diff, wait_stable, assert_changed, assert_text", phase: "core", }, { name: "automation_dialog", ops: "set_path, confirm, submit_path", phase: "core", }, { name: "automation_shortcut", ops: "send, list, describe (app shortcuts)", phase: "core", }, { name: "automation_task", ops: "run, status, cancel, list_profiles", phase: "core", }, { name: "automation_system", ops: "status, info, clipboard, processes, telemetry", phase: "2", }, { name: "get_window_state", ops: "per-window snapshot (ax/som/vision)", phase: "core", }, { name: "get_desktop_state", ops: "full desktop UI tree", phase: "core" }, { name: "automation_mission", ops: "run (autonomous), plan, workflow, status, cancel", phase: "1,5", }, { name: "automation_macro", ops: "record, stop, replay, replay_with_verify, list", phase: "3", }, { name: "automation_smart", ops: "discover, list_apps, list_controls, click (by intent)", phase: "4", }, { name: "automation_watch", ops: "start, status, stop, list (event-driven)", phase: "5", }, { name: "automation_analyze", ops: "crawl, discover, portfolio (WinApp UI tree)", phase: "core", }, { name: "automation_face", ops: "opt-in — face recognition (off by default)", phase: "opt-in", }, { name: "global_keylogger", ops: "opt-in — debug hook (off by default)", phase: "opt-in", }, { name: "approve_automation", ops: "grant HITL time window", phase: "safety", }, { name: "automation_safety", ops: "kill switch, rate limits, dry-run status", phase: "safety", }, ]; export function Help() { const [tab, setTab] = useState("start"); return (

Help

Local reference. Full docs in the repo under{" "} docs/.

{/* Horizontal tabs */}
{TABS.map((t) => ( ))}
{/* Tab content */} {tab === "start" && (

Exhibit A

100 Tauri/NSIS installers, one unattended run, $2 in LLM costs. Install → screenshot → verify → report — zero human intervention.

Four ways to run

MCP stdio (Cursor, Claude Desktop)
{`{ "mcpServers": { "windows-computer-use": { "command": "uv", "args": ["run", "windows-computer-use-mcp"] } } }`}
HTTP streamable (any MCP HTTP client)
{`{ "url": "http://127.0.0.1:10789/mcp" }`}
Web operator UI
Run start.ps1 → http://127.0.0.1:10788
Desktop app (NSIS installer)
Download from GitHub Releases {" "} — zero Python/uv/git needed.

Quick install

git clone ... && cd windows-computer-use-mcp && just bootstrap && just serve

Docs

)} {tab === "features" && ( )} {tab === "tools" && (
{TOOLS.map((t) => ( ))}
Tool Key operations Phase
{t.name} {t.ops} {t.phase === "core" && ( core )} {t.phase === "opt-in" && ( opt-in )} {t.phase === "safety" && ( safety )} {t.phase !== "core" && t.phase !== "opt-in" && t.phase !== "safety" && ( phase {t.phase} )}

Phase = when the tool was added. "core" = shipped with the original portmanteau release.

)} {tab === "missions" && (

Automation mission (autonomous)

Give it a natural-language goal. The server decomposes it into steps via LLM sampling, executes each with retry + verification, and returns per-step pass/fail with evidence.

automation_mission(run="open Notepad, type hello world, save as test.txt")

Multi-app workflow

Explicit step list with app launch, timeout, and cross-step data chaining via $ref: keys.

automation_mission(workflow, app="notepad.exe", actions=[...])

Macro recording

Record any UI sequence, save to JSONL, replay with optional outcome verification.

automation_macro(record) → run tools → stop → replay / replay_with_verify

Smart click (intent-based)

Describe what to click in natural language. The tool scans all visible windows, finds matching elements, and disambiguates via LLM if multiple candidates exist.

automation_smart(click="the Save button")

Event watchers

Background thread polls for conditions: window_appears, window_closes, text_appears, element_appears.

automation_watch(start, condition="window_appears", target="Update")
)} {tab === "safety" && (

This server drives the real Windows session.

It is not browser-sandboxed. Read{" "} docs/SAFETY.md before production use.

Safety layers

Opt-in features (off by default)

Feature Enable
automation_face PYWINAUTO_MCP_ENABLE_FACE=1 {" "} + face extra
global_keylogger PYWINAUTO_MCP_ENABLE_KEYLOGGER=1

Pair with virtualization-mcp{" "} for Windows Sandbox / VM isolation.

)} {tab === "docker" && (

CUA-NSIS certification

The repo uses its own tools to test its own NSIS installer — 12 autonomous phases:

  1. Kill stale processes
  2. Silent install NSIS
  3. Launch app, wait for backend health HTTP 200
  4. Find window, maximize
  5. Screenshot evidence
  6. Feature route smoke (/api/v1/system/info)
  7. Diagnostics check (tools count, Tesseract, system)
  8. WebView bridge proof via OCR
  9. Nav click-through (4 pages with sidebar + OCR verification)
  10. App log analysis
  11. Uninstall
  12. Write certification report

Run with{" "} just cua-nsis-test. Full docs at{" "} docs/cua-nsis-certification.md .

Tool tests tool — dogfooding map

Repo feature Tested by phase
automation_windows 4 (find, maximize)
automation_visual (screenshot) 5, 8
automation_visual (OCR) 8
automation_elements 9 (nav click)
REST API 6, 7
)}
); }