Let a Coding Agent Verify Its Work on a Live Device
A coding agent can write a mobile feature but usually cannot see whether it works — it edits, you run, you describe what happened. VibeView closes that loop. An agent skill teaches the agent the workflow, the CLI gives it the verbs, and an MCP server exposes the same verbs to clients that cannot run a shell. The agent uploads a build, starts a session on a cloud device, taps through the app by UI-tree reference, reads logs and screenshots, and stops to ask you when a screen needs a real login or a risky confirmation.
How it works
-
1. Install the CLI and log in once
Install globally and log in yourself — the browser login is the one step an agent should not do for you. After that, an API token in the environment lets the agent work unattended.
npm install -g vibeview vibeview login # for unattended agent runs export VIBEVIEW_API_TOKEN=... -
2. Teach the agent the workflow
One command installs the vibeview-agent skill where Claude Code finds it in every project, offers to register the MCP server, and suggests a line for your CLAUDE.md so the agent verifies UI changes on a device without being reminded. The same skill is published at github.com/vibeview/skills for agents that install skills from GitHub, and as a Claude Code plugin that adds the skill and the MCP server in one step.
vibeview agent-setup # any agent that uses the skills CLI (Cursor, Codex, Gemini CLI, Copilot, ...) npx skills add vibeview/skills # Claude Code, as a plugin — skill + MCP server together /plugin marketplace add vibeview/skills /plugin install vibeview@vibeview -
3. Give it a build and a session
A debug build is uploaded once and reused until a native change. The agent starts a detached session, gets a session id and a page URL back as JSON, and shares that URL with you so you can watch or take over at any time. For React Native, the same session tunnels Metro from the project, so a change the agent saves shows up on the device about a second later.
vibeview upload-app ./path/to/app-debug.apk vibeview dev --detach --json # {"event":"session_ready","session_id":"...","url":"https://vibeview.io/sandbox/...","pid":1234} -
4. Drive the app by reference, then look
The agent reads the UI tree first and acts on the references it returns — never on guessed coordinates. Every action reports what changed on screen. Screenshots are for appearance, logs are for crashes, and scroll-to finds off-screen elements. TV apps use the same verbs with d-pad presses and focus moves.
vibeview ui-tree --session <id> vibeview tap @e5 --session <id> vibeview type "hello@example.com" --session <id> vibeview scroll-to "Delete account" --session <id> vibeview screenshot --out ./check.png --session <id> vibeview logs --session <id> vibeview dev-stop -
5. Clients without a shell use MCP
Claude Desktop, Copilot agent mode and restricted environments get the same verbs as MCP tools from vibeview mcp, plus upload_app, dev_start and dev_stop so the whole loop needs no shell at all. Tool names are the CLI verbs with underscores.
claude mcp add vibeview -- vibeview mcp # any MCP client { "mcpServers": { "vibeview": { "command": "vibeview", "args": ["mcp"] } } } -
6. What to expect
The agent verbs target iOS, Android, Apple TV and Android TV sessions; Roku (beta) is driven from the CLI dev loop rather than the agent tools. Even fully set up, an agent asked only to "implement X" will not always verify on a device unprompted — saying "implement X and verify it on the device" is what makes it reliable. And a simulator cannot stand in for camera, push delivery or real-device performance, so keep a hardware pass before release. For a complete run — an agent building an Expo app, verifying it on cloud devices with these verbs and shipping it to TestFlight and Google Play in 43 minutes — read the Kitlist write-up at vibeview.io/guides/ai-agent-shipped-expo-app-to-testflight/ or clone github.com/vibeview/kitlist.
Full setup instructions live in the documentation.
Add Claude Code to your pipeline
Start free and run your first check on a live device.