# Recipe: run cards on your computer with the runner

`bakedbrie-runner` takes cards from BakedBrie and runs them on your computer with your own `claude` (Claude Code) or `codex` (Codex CLI), signed in to your own plan. BakedBrie never receives, reads or copies that sign-in. Cards run only while the runner is running.

## Pair the runner (the person does this)

Needs Node 18.20 or newer, and `claude` 2.1.280 or newer or `codex-cli` 0.155.1 or newer, signed in to a plan (not an API key).

1. In BakedBrie, go to **Settings**, **AI accounts** and create a runner key. Copy it.
2. In a terminal on the computer that will do the work:

```bash
npm install -g https://app.bakedbrie.com/runner/bakedbrie-runner.tgz
bakedbrie-runner pair        # paste the runner key when asked (the input is hidden)
bakedbrie-runner             # take cards until Ctrl-C
```

3. Leave it running. `bakedbrie-runner status` shows whether it is paired and which of claude and codex passed its checks.

An agent never handles the runner key. It is a different key from the API token your MCP client uses.

## The prompt

Once the runner is paired, give this to Claude Code or Codex. Fill in `{{BOARD_NAME}}`.

```text
In BakedBrie, make the board "{{BOARD_NAME}}" run its cards on my computer with the runner. Use only the BakedBrie MCP tools. Start with whoami and stop if runner or ai_accounts is off.

1. Call list_ai_accounts and find my runner account (kind runner). Tell me its label, whether its computer is online, and whose cards it runs. If there is none, stop and tell me to pair bakedbrie-runner.
2. Find the board with list_boards.
3. Bind the runner account to the board with bind_ai_account, scope board.
4. For each agent on the board (from list_triggers, the agent_id of each rule), publish it again with publish_agent so its version uses the account.
5. For each agent that makes files (images, documents), turn on write_files with manage_agent action update, permissions {"write_files": "allowed"}, then publish it again with publish_agent. Tell me which agents you changed.
```

## What to know

- **Files:** the runner works in `~/BakedBrie/<workspace>/<board>-<short board id>/`. New or changed files there are uploaded to the card after a run (at most 20 per run, each at most 1 GiB). An agent writes files only when its `write_files` permission is `allowed` (set it with `create_agent_draft` or `manage_agent` action `update`, then publish; in the app it is **Save files in its folder on your computer**).
- **Permissions:** the agent's `read_files` and `web` permissions decide which tools claude or codex gets. `ask` counts as off.
- **One at a time:** one run at a time, 15 minutes at most per run. Only one runner per computer.
- **Who pays:** your own Claude or ChatGPT plan. An API-key sign-in is refused unless the person starts the runner with `--allow-api-billing`.

## If a run does not start

The runner prints the reason, and the card shows it:

| Code | Meaning | What to do |
|---|---|---|
| `RUNTIME_SIGNED_OUT` | claude or codex is not signed in | Sign in, then start the runner again |
| `RUNTIME_API_BILLING` | claude or codex is signed in with an API key | Sign in to a plan, or start with `--allow-api-billing` |
| `RUNTIME_OUTDATED` | claude or codex is too old | Update it |
| `RUNTIME_UNSAFE_CONFIG` | a symbolic link in `~/BakedBrie`, or claude started with an unexpected tool or MCP server | Replace the link with a real folder, or check your claude settings |
| `RUNNER_STOPPED` | the runner was stopped during a run | Start it again; the card can run again |

Cards on a board bound to an offline runner wait until it comes back.
