Installation
Bed of Roses is stdlib-only under the hood: the Node runtime depends on nothing but Node’s standard library, pluselectron (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.
Get the code
Run it
There are two ways to run BOR, sharing the same runtime.v2 Mac host (the product)
Classic browser shell
http://localhost:7777.
Optional: the browser automation engine
BOR’sbrowser_action tool and the bundled Playwright MCP need a Chromium:
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 |
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. After that you land on the presence — head to the Quickstart.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.