Storage & Data
Everything BOR generates lives on your disk and is git-ignored. There are three roots, plus a global one. This page is the map.The roots
~/.bed-of-roses/ (global skills, the native-app wrapper registry, host-control) and ~/Applications/ (the .app wrappers for BOR apps and the host).
os-data/ — user data
The presence’s memory. One subfolder per presence under presences/. Contains the generated surfaces, the memory store, BOR Home files, the audit log, cron jobs, the notification inbox, and the presence config (including API keys, until the Keychain migration).
.bor/ — the agent working directory
The default destination for files BOR creates when you don’t supply a path. Its layout is intentional:
workspaces/<slug>/— new real projects (a React app, a Python service). Each gets its own folder.files/<slug>.<ext>— individual scripts/documents.images/,downloads/,reports/,exports/,scratch/— by kind.mcp.json— the MCP servers installed for this presence.
The default file root is.bor/, not the project source tree. BOR will only write into the source tree for the narrow, allowed carve-outs (e.g. a theme’suser-extras.css).
.bed-of-roses/ — local config & caches
skills/— project skills.mcp/servers.json— the shared MCP config (thebrowserbaseautomation browser is configured here by default).browser/profile(automation) andbrowser/user-profile(the user-facing Browser app).v2-electron/— Electron’s cache, cookies, and saved window state.
Path resolution & write protection
server/protocol/paths.js resolves paths and enforces writes:
- Relative paths resolve against the source-tree
PROJECT_ROOT. Absolute paths are used as-is. DATA_DIR=BOR_DATA_DIR(the presence’sos-data/presences/<id>/) or the legacyos-data/.- Reads are unrestricted (any path Node can read).
- Writes refuse: anything in the running OS source tree (
server/,shell/,node_modules/,.git/, lockfiles), and absolute paths outside$HOME(except/tmp,/var/folders). Narrow carve-outs allow the AI to extend its own theme (shell/themes/<t>/user-extras.css, theme assets).
The audit log
os-data/.../logs/audit.jsonl is append-only. Every mutating handler records what it did (fs.write, shell.exec, image.generate, mcp.install.requested, browser.action, …). It’s your complete record of BOR’s actions.
Backups & resetting
To start fresh as a brand-new user, removeos-data/, .bor/, and .bed-of-roses/ (and the ~/Applications BOR wrappers + ~/.bed-of-roses/). All of it regenerates on next launch. To clear just one presence’s work, remove its os-data/presences/<id>/.bor/. See Multi-presence for per-presence deletion via the CLI.