# Quick look

The demo is the whole Vaubaan Gateway interface running on your laptop, with a simulated identity provider and simulated services: nothing to register, and nothing leaves your machine.

## Run it

Needs Node.js 20 or later and npm 10, and Chrome or Firefox (Safari refuses the session cookie on `http://localhost`).

```bash
git clone https://github.com/vaubaan/gateway.git
cd gateway
npm ci
npm run demo
```

The last command builds the application on the first start (and again only when the sources changed), then prints the URL, `http://localhost:3210`, three people to sign in as without a password, the keys of seeded missions as `export` lines, and ready-made `curl` commands. `Ctrl-C` stops it and deletes its data; every run starts from the same seeded state.

| Variable            | Effect                                                             |
| ------------------- | ------------------------------------------------------------------ |
| `DEMO_PORT=4000`    | listen on another port (default 3210)                              |
| `DEMO_KEEP=1`       | keep the database file and the log on exit, and say where they are |
| `DEMO_SKIP_BUILD=1` | serve the build already there, whatever it was built from          |

The listener is bound to `127.0.0.1`. To open it from another machine, forward the port and keep the URL `http://localhost:3210`: `ssh -L 3210:localhost:3210 your-host`.

## The people

| Person | Who                                                                                                     |
| ------ | ------------------------------------------------------------------------------------------------------- |
| Alice  | owns accounts and administers the demo: missions in every state, two requests waiting for her           |
| Bob    | a teammate: an account Alice gave him access to, a mission of his own, a mission of Alice's he works on |
| Carol  | in the team "GitHub admins", which owns a GitHub account; her own Stripe account                        |

## A tour

1. Sign in as Alice. Missions lists seeded missions running, waiting for her, expired, stopped, and one prepared by an agent.
2. Read what a service allows: Reference, then GitHub — its permissions compared across its presets, with "why?" behind each severity.
3. Create a mission: Missions, then New mission. Pick an account and a preset; "Edit the permissions one by one" shows every permission with its limits and "ask me first".
4. Read what follows the creation: the key, shown once, then the kit — the MCP client configuration, the instructions for the agent, a `curl` to check it.
5. Reach a limit: the mission "Tour: a small limit to reach" allows three file reads; the printed loop reads four times and the last answer is `budget-exhausted` with a link where Alice gives more.
6. Approve an action: "Waiting for you" shows a merge waiting for a yes, with its arguments; approve it, then replay the printed `curl`.
7. Activity: every call and every change, with filters by mission, account, decision, key holder and agent.

The command prints the full tour with this run's values. More: the [demo handbook](https://github.com/vaubaan/gateway/blob/main/docs/handbook/demo-mode.md).

**The demo is a development tool, never an instance.** Anybody who reaches it signs in as anybody, without a password; it refuses to start in a production environment and is not in the image. To run the gateway for real, [install an instance](/docs/install).
