Multi-presence
BOR can run many presences at once — each a fully isolated companion with its own runtime, data root, port, config, provider, name, personality, theme, memory, and cron. They share nothing. One can be your “work” assistant on Claude; another your “home” assistant on Gemini, with different memory and a different look.How isolation works
The v2 host launches one runtime process per presence:- A registry file,
os-data/presences.json, lists every presence (id, nickname, data dir, port, anchor, bounds, onboarded). - Each presence’s data lives under
os-data/presences/<id>/, and its runtime is spawned withBOR_DATA_DIRpointed there. - Each gets its own orb window, on its own port. There is no cross-talk.
v2/host/presences.cjs and v2/host/main.cjs. Deleting a presence only ever removes a directory under os-data/presences/, guarded against deleting anything else.
The Main BOR app
There’s a Main BOR app (v2/host/main-app.*) — a window for managing presences: see them all, create, open, and delete. It’s also wrapped as ~/Applications/Bed of Roses.app so you can launch the whole thing from Finder or Spotlight.
Native app wrappers
Apps BOR builds are mirrored as.app wrappers in ~/Applications (via v2/host/native-apps.cjs), so a BOR-built “Meal Journal” is launchable from Finder/Spotlight like any Mac app. A registry at ~/.bed-of-roses/native-apps.json tracks which wrappers BOR created (so cleanup only ever touches BOR’s own). The host wrapper and app wrappers carry com.bedofroses.* bundle identifiers.
Managing presences (CLI)
Thebor CLI manages presences headlessly:
bor delete removes the presence’s entire data directory.
When to use multiple presences
- Separate contexts — work vs. personal, with different memory and tone.
- Different providers — try Claude on one, Gemini on another, side by side.
- Different looks — a pixel-CRT terminal presence and a liquid-glass presence at once.
- Throwaway — spin one up to test something, delete it when done.
Resetting
- Clear one presence’s generated projects: remove
os-data/presences/<id>/.bor/. - Delete one presence entirely:
bor delete <id>(removes its data dir). - Start completely fresh: remove
os-data/,.bor/,.bed-of-roses/, the~/ApplicationsBOR wrappers, and~/.bed-of-roses/. Everything regenerates on next launch.