# Inspect a World

Read what the app changed, check which World is running, or open its dashboard and vendor screens.
For an existing World, start with its status and log. The complete example below creates a small
World from scratch; use Node 22.6 or newer and npm, with registry access for installation.

## Make a change to inspect

In an empty directory, save `package.json`:

```json file=package.json
{
  "name": "inspect-app",
  "private": true,
  "type": "module",
  "dependencies": { "stripe": "17.7.0" },
  "devDependencies": {
    "@volter/world": "3.0.63",
    "@volter/twin-stripe": "3.0.1",
    "@volter/world-console": "3.0.58"
  }
}
```

Save `.env.example`:

```text file=.env.example
STRIPE_SECRET_KEY=
```

Save `signup.mjs`:

```js file=signup.mjs
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
await stripe.customers.create({ email: 'ada@example.com', name: 'Ada' });
console.log('customer created');
```

```bash
npm install
npx volter world init --name inspect-app
npx volter world up
npx volter world run -- node signup.mjs
npx volter world status
npx volter world log
npx volter world diff
```

```text
customer.create
```

`status` names the checked-out branch and running services. `log` lists stored mutations in
order; `diff` groups changes since the branch's base. A read-only SDK call need not add a log entry.
Your SDK can read back stored records, as [getting started](../getting-started.md) demonstrates.

## Open the dashboard

The dashboard needs `@volter/world-console` installed in the app; a global CLI installation
alone does not supply that dependency. The manifest above includes it.

Stop the compute started by `up` before opening the World through `view`. Ordinary `down`
retains the customer you just created:

```bash
npx volter world down
```

In your terminal, run:

```console
$ npx volter world view --no-open
```

Keep that command running. Open the printed dashboard URL in your normal browser. `view` owns
the World it starts and its server; it is not a command that prints a URL and exits. On local
loopback, opening the dashboard needs no platform login or token copied from elsewhere.

Inspect the branch and log, then open the vendor's available screens. A vendor screen is a twin
interface, not a live vendor account; screen availability is separate from API coverage. If a
screen is absent, use the SDK read and recorded changes instead.

Stop `view` with Ctrl-C when finished. Stop application consumers first. Ordinary shutdown
retains state; do not forward the local dashboard port to other people. [Share a World](./share-a-world.md)
owns the team workflow and its access controls.

## When a result looks wrong

Check the selected package/version, current branch, seed and clock. Confirm that the app command
ran through `volter world run`. Read the publisher's README for the failing operation and
inspect its `/twin` manifest and scenario matches when applicable. Distinguish an app bug,
unsupported operation, scripted answer and routing problem before changing the app.

The operator [diagnostic commands](../reference/cli.md#volter-world) add `doctor`, `tail` and
`covers` for an explicitly named World. [Run your test suite](./run-your-test-suite.md) shows
assertions on application behavior, and [shape the World for a test](./shape-the-world-for-a-test.md)
explains scripted responses and faults.

<!-- Fenced tutorial executor: packages/cli/src/journeys/tutorial.ts. Execution scope is recorded separately. -->
