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 (
Local reference. Full docs in the repo under{" "}
docs/.
Exhibit A
100 Tauri/NSIS installers, one unattended run, $2 in LLM costs. Install → screenshot → verify → report — zero human intervention.
{`{ "mcpServers": { "windows-computer-use": { "command": "uv", "args": ["run", "windows-computer-use-mcp"] } } }`}
{`{ "url": "http://127.0.0.1:10789/mcp" }`}
start.ps1
→
http://127.0.0.1:10788
GitHub Releases
{" "}
— zero Python/uv/git needed.
git clone ... && cd windows-computer-use-mcp && just bootstrap &&
just serve
INSTALL.md — detailed
setup
docs/SAFETY.md — HITL,
kill switch, opt-in features
docs/TOOLS.md — full
22-tool reference
docs/py-stack.md — Python
dependency breakdown
docs/composing-with-playwright.md
{" "}
— browser automation via Playwright MCP
docs/cua-nsis-certification.md
{" "}
— dogfooding the installer
| Tool | Key operations | Phase |
|---|---|---|
{t.name}
|
{t.ops} |
{t.phase === "core" && (
|
Phase = when the tool was added. "core" = shipped with the original portmanteau release.
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")
Explicit step list with app launch, timeout, and cross-step data chaining via $ref: keys.
automation_mission(workflow, app="notepad.exe", actions=[...])
Record any UI sequence, save to JSONL, replay with optional outcome verification.
automation_macro(record) → run tools → stop → replay /
replay_with_verify
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")
Background thread polls for conditions: window_appears, window_closes, text_appears, element_appears.
automation_watch(start, condition="window_appears",
target="Update")
This server drives the real Windows session.
It is not browser-sandboxed. Read{" "}
docs/SAFETY.md before
production use.
approve_automation
PYWINAUTO_MCP_KILL_SWITCH=1
{" "}
blocks all mutations
| 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.
The repo uses its own tools to test its own NSIS installer — 12 autonomous phases:
Run with{" "}
just cua-nsis-test. Full
docs at{" "}
docs/cua-nsis-certification.md
.
| 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 |