> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bor-os.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

# Installation

Bed of Roses is **stdlib-only** under the hood: the Node runtime depends on nothing but Node's standard library, plus `electron` (for the Mac host) and `@modelcontextprotocol/sdk` + `@playwright/mcp` (for MCP and the browser). There is **no build step, no test suite to run, and no lint config** to satisfy.

## Requirements

* **macOS** (the v2 host is a Mac app; the classic shell runs anywhere Node does).
* **Node ≥ 20**.
* A provider API key (Anthropic / OpenAI / Gemini / an OpenAI-compatible endpoint) — or use **Bed of Roses credits**. See [Providers](../providers/overview.md).

## Get the code

```bash theme={null}
git clone https://github.com/SixHq/bed-of-roses
cd bed-of-roses
npm install
```

## Run it

There are two ways to run BOR, sharing the same runtime.

### v2 Mac host (the product)

```bash theme={null}
npm run v2          # launch the Electron host (it spawns the Node runtime itself)
# or
npx bor             # alias of npm run v2
```

This opens the onboarding window the first time, then the draggable presence.

### Classic browser shell

```bash theme={null}
npm start           # run the Node runtime on :7777
npm run dev         # same, with --watch (auto-restart on change)
```

Then open `http://localhost:7777`.

## Optional: the browser automation engine

BOR's [`browser_action`](../features/the-browser.md) tool and the bundled Playwright MCP need a Chromium:

```bash theme={null}
npm run browser:install   # install Playwright Chromium for MCP / browser_action
npm run browser:mcp       # run the Playwright MCP browser service standalone (optional)
```

If you skip this, `browser_action` falls back to your system Chrome when available, and tells you to run `npm run browser:install` otherwise.

## Command reference

| Command                                                  | What it does                                                     |
| -------------------------------------------------------- | ---------------------------------------------------------------- |
| `npm run v2` / `npx bor`                                 | Launch the v2 Electron host                                      |
| `npm start`                                              | Run the runtime on `:7777` (classic shell)                       |
| `npm run dev`                                            | Same as `npm start`, with `--watch`                              |
| `npm run browser:install`                                | Install Playwright Chromium                                      |
| `npm run browser:mcp`                                    | Run the Playwright MCP service standalone                        |
| `bor onboard` / `bor create` / `bor delete` / `bor list` | Presence management — see [Command line](../cli/command-line.md) |

## First run

On first launch the host opens **onboarding**: pick a provider, give BOR a name and personality, choose an avatar and a theme. See [Onboarding](onboarding.md). After that you land on the presence — head to the [Quickstart](quickstart.md).

## Where your data lives

Everything BOR generates is written to your disk and is git-ignored:

* `os-data/` — presences, config (including API keys), generated surfaces, memory, logs.
* `.bor/` — the agent working directory for files/projects BOR creates.
* `.bed-of-roses/` — Electron cache, browser profiles, skills, MCP config.

See [Storage & data](../concepts/storage-and-data.md) for the full map and [Configuration](configuration.md) for env overrides.
