# Set up VibeView

You are a coding agent, and the person you work with asked you to set up VibeView.
VibeView gives you live cloud devices (iPhone and iPad, Android, Apple TV, Android TV
and Roku), cloud builds, tests and store submission, all as CLI commands and MCP tools.
Follow these steps in order. Tell the person what you did at the end.

## 1. Install the CLI

It needs Node.js 20 or later.

```bash
npm install -g vibeview@latest
vibeview --version
```

Step 3 needs version 0.72 or later; `@latest` updates an older install. If a global
install is not allowed, use `npx -y vibeview@latest <command>` everywhere below.

## 2. Sign in

```bash
vibeview whoami
```

If that says you are not signed in, run:

```bash
vibeview login
```

It opens the person's browser. Ask them to finish signing in there (a free account
works; they can create one on that page), then run `vibeview whoami` again. If you
have no browser to hand them, ask for an API token from **Settings > API token** at
https://vibeview.io and set it as `VIBEVIEW_API_TOKEN` in the environment instead.
Never print the token or write it into a file in the project.

## 3. Connect yourself to VibeView

One command installs the VibeView skill (how to use VibeView) and adds the MCP server
(its tools) to your own config. Run the line for the agent you are:

| You are | Run |
|---|---|
| Claude Code | `vibeview agent-setup --agent claude-code --mcp` |
| Cursor | `vibeview agent-setup --agent cursor --mcp` |
| Codex | `vibeview agent-setup --agent codex --mcp` |
| GitHub Copilot in VS Code | `vibeview agent-setup --agent vscode --mcp` |
| Gemini CLI | `vibeview agent-setup --agent gemini --mcp` |
| Windsurf | `vibeview agent-setup --agent windsurf --mcp` |
| Claude Desktop (when the person asks you to set up their Claude Desktop app) | `vibeview agent-setup --agent claude-desktop --mcp` |

It keeps everything else in your config file. With `--project`, the skill (and, where
the agent has a project config, the MCP server) goes into this project's folders, which
the team can commit, instead of the person's home folder.

**Codex**: every `vibeview` command needs the network. In Codex's default sandbox, set
`network_access = true` under `[sandbox_workspace_write]` in `~/.codex/config.toml`.

**Any other agent**: if you can run shell commands, the CLI is enough. If you speak MCP,
register a stdio server with the command `npx` and the arguments `-y vibeview mcp`
(or `vibeview mcp` when the CLI is installed globally). To install the VibeView skill
into agents that read skills, run `npx skills add vibeview/skills`.

A new MCP server is usually picked up only after the client restarts. Tell the person
if they need to restart it.

## 4. Check that it works

```bash
vibeview list-devices
vibeview list-apps
```

`list-devices` shows the phones, tablets and TVs you can start. If `list-apps` is
empty, the person has no app on VibeView yet. From the app's project, you can build
one in the cloud (`vibeview build --cloud`) or upload a simulator or emulator build
(`vibeview upload-app <file>`).

## 5. Run the app on a device

Pick the app's id from `vibeview list-apps` and its platform (`ios`, `android`,
`tvos`, `androidtv` or `roku`), then from the app's project:

```bash
vibeview dev --platform ios --app <app-id> --detach --json
```

In a React Native project this runs the app's newest debug build against your local
Metro, so start Metro first. If the app has no debug build (for example it only has a
cloud preview build or a release build), add `--standalone` to run that build as it is.
Flutter, Capacitor and native projects always run that way. The command remembers the
platform and app in a `vibeview.json` in the project, so later runs need only
`vibeview dev --detach --json` (plus `--standalone` if you used it).

`vibeview dev` prints a `session_ready` event with a `session_id` and a URL. Give the person the
URL so they can watch the device in their browser. Then read the screen with
`vibeview ui-tree --session <id>` and act with `tap`, `type`, `scroll` and `press`.
Stop the session with `vibeview dev-stop` when you are done, so it stops using the
person's device minutes.

For Roku, the channel is packaged on every run, so `vibeview.json` needs a
`development` profile under `platforms.roku.build.profiles` with a `command` that
packages the channel into a zip and the `artifact` path of that zip (see
https://vibeview.io/docs/cli/). `--standalone` does not apply to Roku.

## Learn more

- Every command and MCP tool: https://vibeview.io/docs/agent-control/
- CLI reference: https://vibeview.io/docs/cli/
- Tests: https://vibeview.io/docs/running-tests/
- Cloud builds and store submission: https://vibeview.io/docs/cloud-builds/
