Verity
No description available
Install / Use
/learn @chrisbanes/VerityREADME
Verity
Preview — Verity is under active development and not yet ready for general use.
Verity is an end-to-end testing tool that combines device automation with LLM reasoning. Write human-readable journey files, and Verity executes them against real devices — navigating UIs, pressing buttons, and verifying what's on screen.
Platforms
- Android TV
- Android Mobile
- iOS
How it works
Journeys are YAML files that describe what a user does and what the app should show:
name: Launch and browse
app: com.example.tv
platform: android_tv
steps:
- action: "Launch the app"
- action: "Navigate down to the 'Continue Watching' row"
- assert: "A 'Continue Watching' row is visible with at least one item"
- action: "Select the first item"
- assert: "The detail screen shows a title and a 'Play' button"
Verity splits each journey into segments, hands each segment to an isolated LLM agent, and drives the device through the Maestro SDK. Assertions use a cost-aware strategy: deterministic checks first, then text-based reasoning, then vision — so you pay only for what each assertion requires.
Modes
- CLI (
verity run) — Run journey files autonomously against connected devices. - MCP server (
verity mcp) — Expose device control as MCP tools for interactive AI workflows (e.g., in Claude Code).
Architecture
core ← device ← agent ← cli
↑ |
mcp ←─────────────┘
| Module | Role |
|--------|------|
| core | Journey models, YAML parsing, segmentation, key mapping. Zero device or LLM dependencies. |
| device | Device abstraction layer — Android via ADB + Maestro gRPC, iOS via Maestro XCTest HTTP. |
| agent | LLM orchestration — navigator and inspector agents, journey execution. |
| mcp | MCP server exposing raw device tools. Does not depend on agent. |
| cli | Entry point — run, list, and mcp commands. |
Key design choices
- Fast-path key mapping — Common navigation actions (D-pad, gestures) go straight to the device, bypassing LLM generation entirely.
- Subagent isolation — Each journey segment runs in its own LLM session, keeping context windows small and preventing hallucination from long histories.
- Persistent connections — Embedded Maestro SDK holds persistent gRPC/HTTP connections to devices instead of spawning processes per operation.
Manual smoke checklist
Minimal path to verify real-device integration:
- Start MCP server
./gradlew :verity:cli:run --args="mcp --transport stdio" # or: --args="mcp --transport http --port 8080" - Open session — call
open_sessionwithplatform: android-tv(orandroid/ios) - Press a key — call
press_keywithkey: DPAD_DOWN - Check visibility — call
check_visiblewithtext: <visible UI text> - Capture hierarchy — call
capture_hierarchywithfilter: contentand verify the tree renders - Close session — call
close_sessionand verify device state is restored
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
