{"repo":"awizemann/harness","free":true,"listed":false,"github":"https://github.com/awizemann/harness","clone":"git clone https://github.com/awizemann/harness.git","description":"AI-driven user testing for iOS Simulator, macOS apps, and web apps. Write a goal in plain language; an LLM agent drives the UI and reports friction. macOS 14+, Swift 6.","language":"Swift","stars":320,"topics":["ai-agents","ios-testing","mac","swift","swift-ui","user-testing","ux-testing","anthropic","claude","developer-tools"],"license":"MIT","category":"ai-agents","readme_excerpt":"Harness macOS 14+ · Apple Silicon &amp; Intel · 12 MB awizemann.github.io/harness &nbsp;·&nbsp; Wiki &nbsp;·&nbsp; All releases A native macOS developer tool that drives an iOS Simulator, a macOS app, or a web app with an AI agent so you can run user tests — not scripted UI tests, but real-user simulation. You write a goal in plain language (\"I want to sign up and create my first list\", \"delete my account\", \"find a vegetarian restaurant near me and save it\") and a persona (\"first-time user, never seen this app\"). Harness builds (or just launches) your target, and an LLM agent reads screenshots, clicks/types/scrolls, and pursues the goal — narrating what it sees, flagging UX friction (dead ends, ambiguous labels, unresponsive controls), and stopping when it succeeds, fails, or would give up. Three artifacts come out of every run: 1. Did the goal complete? — success / failure / blocked + summary 2. What was the path? — replayable sequence of screens + actions 3. Where was the friction? — timestamped events the agent flagged as confusing Targets Kind How Harness drives it --- --- iOS Simulator xcodebuild your project + scheme; simctl boot/install/launch; WebDriverAgent for input. macOS app NSWorkspace launch (pre-built .app or xcodebuild macOS scheme); CGEvent for input; CGWindowListCreateImage for capture. Web app Embedded WKWebView at a chosen viewport (default 1280×1600 tall desktop, or 375×812 mobile); JS-synthesised events for input; WKWebView.takeSnapshot for capture. The ","default_branch":null,"files":null,"tree":[],"storefront":"/r/awizemann","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/awizemann/harness/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}