AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Computer Use, App Use, AppBot — give AI agents real eyes and hands on Windows. Open-source RPA where humans, the app ecosystem, and AI share one keyboard. Focusless. Self-healing. Multi-AI.
Developer toolsPowerShell · ShellGitHub @kiexpertOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Loading the full README. The saved excerpt is shown below.
WKAppBot — Computer Use, App Use, AppBot ▶ 전체 영상 보기 → · Sudo 라이선스로 이런 봇을 만들 수 있습니다 Windows + Android UI automation for Claude, GPT, Gemini, Copilot, and any AI agent. Focusless. Self-healing. AI-native. The open-source bridge between LLMs and the apps humans already use. ⚖️ The Reflex Constitution → · read as a page How this project governs the speed of its own AI: norms that execute rather than a document that is filed. The system refuses its own authors — and Article 12 states in advance what would prove it wrong.Read the full README ↗
▶ 전체 영상 보기 → · Sudo 라이선스로 이런 봇을 만들 수 있습니다
Windows + Android UI automation for Claude, GPT, Gemini, Copilot, and any AI agent. Focusless. Self-healing. AI-native. The open-source bridge between LLMs and the apps humans already use.
⚖️ The Reflex Constitution → · read as a page How this project governs the speed of its own AI: norms that execute rather than a document that is filed. The system refuses its own authors — and Article 12 states in advance what would prove it wrong.
🤖 Let your AI agent control any Windows app — without screen takeover. 🔥 Self-healing UIA + Vision fallback — works even when the DOM lies. ⚡ Multi-AI triad (GPT + Gemini + Claude) in one command.
Computer Use lets an AI click, type, and read the screen. App Use is the layer above: agents that drive specific applications the way a power user does — focuslessly, alongside the human, without seizing the screen.
WKAppBot gives AI agents:
No app rewrite. No vendor API. If a human can use it, WKAppBot can automate it.
And that is a position, not a convenience. We build an intelligence that grows alongside the ecosystem people already live in — decades-old Windows programs, the developers who maintain them, and the humans who use them every day — and we write the way it does so as norms that execute rather than as a document that is filed.
The system refuses its own authors. On the day this paragraph was written, the harness rejected six of the author's task briefs, reverted the author's write to a guard source, returned the handoff letter five times, and blocked the author with a lock the author had installed an hour earlier. That is reproducible by command, not a claim about intentions.
Three rules make it real, and none of them names a vendor or a tool:
Accessibility is the same position in technical clothing: WKAppBot reads the accessibility tree first, because the route a blind person takes through a screen reader is the route an intelligence without eyes takes too. A system that can act only through interfaces built for itself has already excluded most of the world it claims to serve.
A promise to slow AI down cannot be checked. A gate that refuses an unproven claim is running right now — including against the people who wrote it.
Free tier covers all base automation. CDP browser automation, multi-AI delegation (
ask triad), and--sudoadmin access are paid Pro tiers. See PRICING.md.
Most automation tools steal focus, break on owner-drawn controls, and go silent when the DOM changes. WKAppBot is built around three hard-won principles:
Focusless-first -- UIA Invoke/Value/Toggle/Select never steal focus. Win32 PostMessage handles legacy MFC. SendInput is the last resort, used only when nothing else works. The user keeps working while the AI operates in the background.
Self-healing -- When UIA fails on owner-drawn controls (MFC/HTS), CCA segmentation + OCR triple cross-validation + Gemini Vision inference recover element identity automatically and cache results in an Experience DB for next time.
AI-native -- The same binary that runs automation also delegates to GPT, Gemini, and Claude in parallel, streams prompts into live browser AI sessions via CDP, and manages its own context handoff when token budgets run low.
AI brings the intelligence. WKAppBot grows the knowledge. Together they compound.
Raw AI agents are brilliant but amnesiac. Every session starts blank, makes the same mistakes, hits the same guardrails. WKAppBot captures every discovered lesson as a versioned, searchable Skill that future sessions retrieve automatically.
The Flywheel: Session N finds a better pattern, writes it to the skill tree, Session N+1 avoids the old mistake. Each session leaves the system smarter.
The Harness: WKAppBot enforces lessons, not just documents them. Every lesson becomes a mechanical guard that fires before the mistake lands, regardless of which AI model runs.
The Moat: Intelligence converges across vendors. Your skill tree diverges and cannot be cloned by switching models.
The harness is the piece that decides how fast an AI is allowed to act, not just what it is told to do:
"Sonnet forgets between sessions, makes the same mistakes, and has no memory of prior damage. The only real defense is mechanical: the harness must physically block the mistake before it lands."
— WKAppBot Sonnet Bug Stop Policy (auto-generated by Claude Sonnet, 2026)
Every session, Claude Sonnet discovers something, patches something, commits something. Then the next session starts — and does it again, from scratch.
This is not a flaw unique to Sonnet. It is the fundamental problem with raw AI: intelligence without memory compounds nothing. It resets.
WKAppBot solves this with a living document called sonnet-bug-stop-policy-ref:
a skill where each Sonnet session writes down what it broke, what pattern it missed,
and what the next Sonnet session should watch out for.
From the skill, written by Claude Sonnet to future Claude Sonnet sessions:
"This skill is a gift from one Sonnet session to the next: you are not uniquely careless — you are running in a system that is not yet complete. Do not blame yourself; contribute to making the harness complete."
"The harness gets stronger each time a Sonnet session contributes honestly. You are not just fixing today's bug — you are protecting every Sonnet that comes after you. Add your reflection. Keep the chain going."
This is not documentation. This is institutional memory that enforces itself. The skill is loaded at session start. The harness blocks the known mistakes. The chain grows. The system gets harder to break.
| Feature | WKAppBot | Playwright | PyAutoGUI | AutoHotkey |
|---|---|---|---|---|
| Focusless operation | ✅ | ❌ | ❌ | ❌ |
| UIA + Win32 + CDP unified | ✅ | Web only | Mouse/KB only | Win32 only |
| Self-healing Vision fallback | ✅ | ❌ | ❌ | ❌ |
| AI-native (LLM delegation) | ✅ | ❌ | ❌ | ❌ |
| Android via ADB | ✅ | ❌ | ❌ | ❌ |
| MFC/HTS owner-drawn support | ✅ | ❌ | ❌ | Partial |
Current binary: wkappbot --version reports the installed build number; the public repo's latest tagged release is v7.11.0-sdk (2026-09-30). Curated highlights below cover through v7.11.0 (aligned with WKAppBot core v7.11, macOS Portable Phase 1 + CLI Improvements 2026-09-30) -- see Releases and the full compare for everything since.
--keep, --budget, --sudo, --timeout peel before subcommand via PeelPreCommandGlobalOpts.check 08-harness-connection.wkdoctor flutter-doctor-style SDK health check (10 checks, self-healing, -Json).setup.ps1 auto-builds the launcher from source on first clone.cdp open auth-wall hang fixed (CRITICAL) -- NavigateAsync capped at 3s, no more 6-minute stalls on auth-wall sites.| OS | Status |
|---|---|
| Windows 11 | ✅ Fully supported |
| Windows 10 22H2+ | ✅ Fully supported |
| Windows 10 < 22H2 | ⚠️ Untested |
| Windows Server 2019+ | ✅ Headless mode (no GUI a11y) |
| macOS / Linux | ❌ Not supported |
| Target | Method |
|---|---|
| Modern Windows apps (WPF, UWP, Electron) | UIA Invoke / Value / Toggle / Select patterns |
| Legacy MFC / HTS trading terminals | Win32 PostMessage, WM_CHAR, CMaskEditEx path |
| Web apps (Chrome / Edge) | CDP -- click, type, eval JS, read DOM text |
| Browser AI (Claude, GPT, Gemini) | CDP prompt pump, cross-prompt chunking, attachment lock |
| Android apps | ADB + Accessibility tree (adb://device/... grap) |
| Owner-drawn controls with no UIA | CCA segmentation -> OCR -> Vision API fallback chain |
These are the kinds of jobs WKAppBot was actually built to handle — not theoretical demos:
| 🔐 AUTO PIN ENTRY | 📊 ALL SYSTEMS READY | 🧠 PORTFOLIO ANALYSIS |
|---|---|---|
| Legacy HTS에 보안 PIN 자동 입력 | 모든 창 자동 배치 — 준비 완료 | AI가 22종목 매수/제외 자동 판단 |
Sudo 라이선스로 이런 봇을 직접 만들 수 있습니다 → 라이선스 보기
adb://device/... graps reach into the accessibility tree of any phone or emulator, including foldables (Galaxy Fold5 tested), with the same command surface as Windows automation.wkappbot dismiss plus a handler YAML eats save-prompt, license-nag, and "do you want to update?" dialogs across 한컴오피스, MS Office, and updater stacks — keeping batch jobs from stalling overnight.Human sees windows; AI points with grap.
Every UI element gets a single address that works across Win32, UIA, web, and Android:
{proc:'chrome', domain:'claude.ai'}#main textarea # CSS inside a browser window
heroes#realtime-account # UIA scope inside a window grap
adb://Fold5/*heromts*#balance # Android element
hwnd:0x010B084A # Direct Win32 handle
*notepad*;*calc* # OR pattern
a11y find <grap> prints a verified # TARGET "hwnd:0x..." line -- copy-paste ready for the next command.
Every a11y action runs a smart pre-flight before executing:
blocker dismiss -> minimize restore -> tab activate
-> zoom/magnifier -> execute (3-tier) -> result feedback -> fade
No manual "wait for window" boilerplate. Blocking dialogs, minimized windows, and wrong-tab states are handled automatically.
UIA -> Vision Cache -> Simple OCR -> Vision API (Claude) -> Coordinate-based. Each tier auto-logs hits to an Experience DB; repeat runs skip expensive tiers.
A single background process combining:
wkappbot-core.new.exe, drains in-flight requests, renames atomically. Zero downtime on dotnet publish.wkappbot ask triad "is this approach correct?" # GPT + Gemini + Claude in parallel
wkappbot ask claude "explain this chart" chart.png # vision-capable single ask
Triad runs thesis-antithesis-synthesis debate. Useful for architecture decisions, bug root causes, and code review -- anything where one model's blind spot is another's strength.
Accumulated operator knowledge lives in versioned skills, queryable at any time:
wkappbot skill list
wkappbot skill read focusless-first-principle
wkappbot skill read grap
Skills capture per-project knowhow — UIA quirks, CDP gotchas, owner-drawn-control workarounds — so every session starts informed instead of exploring from scratch.
wkappbot suggest "title: description" # queue a bug or improvement mid-task
wkappbot suggest list # review the backlog
wkappbot suggest resolve <ts> "note" --i-completed-... evidence.sh
AI agents queue findings without interrupting the current task. Evidence scripts are required to close a suggest -- no unverified resolves.
┌─────────────────────────────────────────────────────────┐
│ Your terminal / Claude Code / Codex / any AI agent │
└───────────────────────┬─────────────────────────────────┘
│ wkappbot <command>
▼
┌─────────────────────────────────────────────────────────┐
│ wkappbot.exe (MIT launcher, ~1 MB, AOT) │
│ • routes CLI args → core via named pipe │
│ • hot-swap: detects .new.exe, drains, renames atomic │
│ • license check via GitHub collaborator API │
└───────────────────────┬─────────────────────────────────┘
│ named pipe wkappbot_eye_ipc_{hash}
▼
┌─────────────────────────────────────────────────────────┐
│ wkappbot-core.exe (closed, ~25 MB, single-file) │
│ • all CLI commands: a11y, ask, skill, eye, file, … │
│ • AppBot Eye daemon: Slack socket + MCP broker │
│ • UIA / Win32 / CDP / ADB automation engines │
│ • Vision / OCR pipeline + Experience DB │
└─────────────────────────────────────────────────────────┘
│ UIA / Win32 │ CDP (DevTools)
▼ ▼
Windows apps Chrome / Edge
(WPF, MFC, UWP) (web apps, AI chat)
Per-repo isolation: each git clone gets its own Eye instance and DataDir ({root}/.wkappbot/hq/).
→ kiexpert.github.io/wkappbot-sdk
| 설치 가이드 | 클론·빌드·PATH 설정 |
| 빠른 시작 (10분) | 첫 자동화까지 |
| CLI 명령어 레퍼런스 | 전체 명령 + 출력 샘플 |
| grap 패턴 | Grab Accessible Pattern 문법 |
| 트러블슈팅 | 자주 겪는 문제 해결 |
git clone https://github.com/kiexpert/wkappbot-sdk %USERPROFILE%\Documents\wkappbot
cd %USERPROFILE%\Documents\wkappbot
build.cmd
Then add bin\ to PATH (see INSTALL.md), open a new terminal, and:
wkappbot --version # verify install
wkappbot find "*" # list open windows (title + UIA search)
wkappbot skill list # browse built-in knowhow
wkappbot a11y find "*Notepad*" # resolve a window element
Clone = install. That's it.
git clone https://github.com/kiexpert/wkappbot-sdk %USERPROFILE%\Documents\wkappbot
cd %USERPROFILE%\Documents\wkappbot
build.cmd
Pre-built binaries are also available if you prefer not to build:
| Latest Release | wkappbot-X.Y.Z.zip — extract anywhere |
| CI Artifacts | Every build → wkappbot-bin-{run_id} (90-day retention) |
Recommended layout — clone under Documents\ so your personal automation data (experience DB, logs, skills) stays in your home directory and is easy to find, back up, or exclude from sharing:
Why Documents? WKAppBot learns from your usage and stores UI experience data under
bin\wkappbot.hq\. Keeping this under your personal Documents folder protects your privacy — it stays separate from shared or version-controlled paths.
%USERPROFILE%\Documents\wkappbot\ ← recommended clone location (easy to find in Explorer)
bin\
wkappbot.exe ← launcher / busybox entry point
wkappbot-core.exe ← core worker (hot-swapped on update)
wkappbot.hq\ ← runtime data: skills, logs, experience DB (auto-created)
csharp\
handlers\
skills\
...
Add bin\ to your PATH so wkappbot is available in any terminal:
# PowerShell (permanent, current user)
[Environment]::SetEnvironmentVariable(
'PATH',
"$env:USERPROFILE\Documents\wkappbot\bin;$([Environment]::GetEnvironmentVariable('PATH','User'))",
'User'
)
Build from source (requires .NET SDK 8+):
build.cmd
Verify the install:
wkappbot --version
wkappbot skill list
Requirements: Windows 10 22621+ (64-bit). No separate .NET runtime needed — the binary is self-contained.
Free tier works out of the box — no signup. To unlock CDP browser automation,
multi-AI ask, schedule, or --sudo admin access:
gh auth login # authenticate with GitHub
wkappbot license status # confirms current tier (Free until you subscribe)
Then follow SUBSCRIBE.md — KIS bank transfer with your GitHub username as the memo, accept the GitHub collaborator invite, and the same binary unlocks Pro features within 1 hour. See PRICING.md for tier details.
# Discovery
wkappbot a11y inspect <grap> # dump UIA tree
wkappbot a11y find <grap> # resolve + print # TARGET
wkappbot a11y highlight <grap> # visualize with zoom overlay
wkappbot find <keyword> # unified window-title + UIA element search
wkappbot scan <window-title> # scan app structure, build Experience DB
# Interaction (focusless where possible)
wkappbot a11y click <grap>
wkappbot a11y type <grap> "text"
wkappbot a11y read <grap> # CDP-first on browser windows, UIA fallback
wkappbot a11y scroll <grap> down 3
wkappbot dismiss "<window-title>" # auto-dismiss popups (OCR importance check)
# Browser / CDP
wkappbot a11y read "{proc:'chrome'}" # full page text via CDP
wkappbot a11y click ".submit-btn" # CSS selector
wkappbot a11y read "{proc:'chrome'}" --eval-js "document.title"
# Scenarios & high-level automation
wkappbot run scenario.yaml # run a YAML test scenario
wkappbot do "<window>" <form> <button> # full combo-select + click + dialog flow
# AI delegation
wkappbot ask triad "is this lock-free?"
wkappbot ask claude "explain this chart" chart.png
# Daemon & context
wkappbot eye tick # one-shot status + ctx%
wkappbot newchat "continue from: ..." # handoff to fresh session
wkappbot claude-usage # JSONL size + context %
Describe multi-step test flows in plain YAML:
scenario: { name: "Order placement" }
app: { launch: "trading.exe", wait_for_window: { title_contains: "HTS" } }
steps:
- { name: "Enter stock code", target: { automation_id: "codeEdit" }, action: type_text, params: { text: "005930" } }
- { name: "Click buy", target: { name: "매수" }, action: click }
- { name: "Verify", target: { automation_id: "resultLabel" }, action: assert,
params: { type: text_contains, expected: "주문완료" } }
WKAppBot.CLI CLI entry, command routing, grap resolution
WKAppBot.Core ScenarioRunner, ActionExecutor, AAR readiness
WKAppBot.Win32 NativeMethods, WindowFinder, UiaLocator, SendInput tiers
WKAppBot.Vision ChartAnalyzer, SimpleOcrAnalyzer, VisionCache, CCA
WKAppBot.WebBot CdpClient, ChromeLauncher, SlackSocketClient
WKAppBot.Android AdbClient, AndroidA11yTree
WKAppBot.Launcher Hot-swap staging, pipe relay, admin elevation
Eye (always-on) ↔ MCP worker (Core) over JSON-RPC named pipe. UIA isolated in a separate MCP worker process -- prevents ConPTY LPC deadlock.
bin/wkappbot.exe official launcher (alias: a11y.exe)
bin/wkappbot-core.exe core worker (auto hot-swapped on publish)
bin/wkappbot.hq/ runtime HQ -- experience DB, skills, sessions, logs
.NET 8.0 · net8.0-windows10.0.22621.0 · Korean UI support
"WKAppBot" and the AppBot Eye logo are trademarks of kivilab.co.kr. You may use the name to accurately describe the software (e.g. "built with WKAppBot"). Do not use the name to imply endorsement or affiliation without written permission.
wkappbot skill list — accumulated knowhow: grap syntax, UIA quirks, CDP gotchas, and moreIf WKAppBot saves you time, consider buying me a coffee ☕
Repository text assets should be treated as UTF-8 by default.
.md, .txt, .html, .json, .yml, .xml, and other text-based files.wkedit or another UTF-8-safe path..pdf, .mp4, images, and archives should be preserved as-is and not text-converted.