npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bed-of-roses

v0.2.0

Published

Bed of Roses — an ambient AI desktop companion with a draggable presence and generated app/widget surfaces.

Maintainers

bor-osbor-os

Keywords

aiautocompleteassistantantigravityanti-gravitybashdatabaseChatGPTCursorCursor AIcodexccopenclawopenclaw aiopenai codexopen-ai codexOpenAI Codexopenai-codexdeepseek v4Deepseek v4deepseek-v4Deepseek-v4deepseek v4 flashDeepseek v4 prodeepseek-v4-flashDeepseek-v4-prokimi 2.6kimi 2.7kimi k3kimi-k3kimi-2.6kimi-2.7GLMz.aiClaudeCheap Alternative to Cursor AICheap Alternative to CursorMistral AICheap Alternative to Mistral AIAnthropicAmazon CodeWhispererCodeWhispererGeminiGPT-5.1gpt-5.1GPT 5.1gpt 5.1GPT-5.2gpt-5.2GPT 5.2gpt 5.2gpt-5.5GPT 5.5gpt 5.5Gpt-5.5GPT-5.5GPT 5.6 SOlgpt 5.6gpt-5.6gpt 5.6 solgpt-5.6-solGPT 5.6 Terragpt-5.6-terragpt 5.6 terraGPT 5.6opus 4.7Opus 4.7Claude Opus 4.7Claude-opus-4.7Claude OpusClaude opusClaude 4.7 OpusClaude 4.7 opusClaude 4.7 OPUSClaude-4.7-opusClaude Opus 4.7opus-4.7Opus-4.7opus 4.8Opus 4.8Claude Opus 4.8Claude-opus-4.8Claude OpusClaude opusClaude 4.8 OpusClaude 4.8 opusClaude 4.8 OPUSClaude-4.8-opusClaude Opus 4.8opus-4.8Opus-4.8Muse spark 1.1Spark 1.1muse-spark-1.1spark-1.1codexgpt-5.4gpt-5.4-chatGPT 5.4GPT 5.4 chatgpt 5.4gpt-5.4-codexGPT 5.4 Codexgpt 5.4 codexgpt-5.3GPT 5.3GPT 5.3 chatgpt-5.3-codexGPT 5.3 Codexgemini 3.0gemini 3gemini-3.0gemini-3gemini-3-flashgemini-3-progenaiGEMINI-3.0Gemini-3.0Gemini 3.0GEMINI-3gemini 3.1gemini 3.1gemini-3.1gemini-3.1gemini-3.1-flashgemini-3.1-progenaiGEMINI-3.1Gemini-3.1Gemini 3.1GEMINI-3.1co-pilotgithub copilotgithub-copilotCheap Alternative to GeminiCheap Alternative to CodeWhispererCheap Alternative to Amazon CodeWhispererCheap Alternative to Github CopilotCheap Alternative to CopilotCheap Alternative to WindsurfCopilotCoding AssistantQwen 3.6Qwen-3.6mythosClaude-mythosClaude Fable 5claude-fable-5fable 5fable-5fabel-5claude-fabel-5mythos aiClaude MythosGPT-Rosalindgpt-rosalindGPT Rosalindgpt rosalindo1o1 previewGrok-Code-Fast-1Grok code fast 1Grok code fastgrok code fastgrok-code-fast-1fastgpt 1.5 image proImage genImage generationgpt 1.5 imagegpt-1.5-imagegpt 1.5 image progpt 2.0 image progpt-2.0-image-progpt 2.0 imagegpt-2.0-imagegrok-codegrok-code-fasto1 preview apiGPT4GPT3GPT3-turboGPT3.5-turboGPT4-turboGPT5GPT-5gpt-5gpt 5GPT-5-minigpt-5-minigpt-5-nanoclaude-sonnet-4claude-4claude sonnet 4Claude Sonnet 4claude 4Claude 4cluade-sonnet-4cluade-4cluade sonnet 4Cluade Sonnet 4cluade 4Cluade 4claude-opus-4claude opus 4Claude Opusclaude Opuscluade-opus-4cluade opus 4Cluade Opuscluade Opusclaude-3.7-sonnetclaude 3.7 sonnetClaude 3.7 Sonnetclaude-3.5-sonnetclaude 3.5 sonnetClaude 3.5 sonnetClaude 3.5 SonnethaikuHaikuclaude-3.5-haikuclaude 3.5 haikuClaude 3.5 HaikuClaude codeclaude-codeclaude CodeOpusopusclaude-3-opusClaude 3 Opuscluade-3-opusCluade 3 Opuscluade-3.7-sonnetcluade 3.7 sonnetCluade 3.7 Sonnetcluade-3.5-sonnetcluade 3.5 sonnetCluade 3.5 sonnetCluade 3.5 SonnetClaude 4.5 OpusopusClaude-4.5-opusclaude opus 4.5Claude-opus-4.5Claude Opus 4.5Cluade-4.5-opusCluade opus 4.5Cluade-opus-4.5Cluade Opus 4.5Claude-4.5-opusclaude opus 4.6Claude-opus-4.6Claude Opus 4.6Cluade-4.6-opusCluade opus 4.6Cluade-opus-4.6Cluade Opus 4.6haikuHaikucluade-3.5-haikucluade 3.5 haikuCluade 3.5 HaikuClaude Coderclaude coderclaude-coderCluade-coderCluade coderCluade codecluade-codecluade Codeclaude-2.0claude-2.1Claude 2.0Claude 2.1AgenticFigmafigmaAzuremcp serverfile systemFile-SystemSequentiak Thinkingmagic uiClaude CoderClaude codeGit toolsMCPGitGithubgithubOpenAIopenaiamazon.nova-premieramazon.nova-proamazon.nova-liteamazon.nova-microAmazon NovaAmazon Nova PremierAmazon Nova ProAmazon Nova LiteAmazon Nova MicroAmazonContext7NotionSequencial thinkingatlassiangemini 2.5 proGemini 2.5 ProGemini-2.5-proGemini-2.5-ProGemini 2.5 proGemini2.5 ProGemini 2.5Progemini 2.5 flashGemini 2.5 FlashGemini-2.5-flashGemini-2.5-flashGemini 2.5 flashGemini2.5 flashGemini 2.5flashGemini 2.5flashMistralMistral AIdevstral-smalldevstral smallDevstral SmallDevstral smallMistral largemistral-largepixtral-largepixtral largePixtral Largeministralmistral-smallMistral SmallMistralCodestralAlibabaQwen3qwen3qwen-3qwen-2.5-coderqwen 2.5 coderQwen 2.5 CoderQwen 2.5 CodeQwen 2.5 codeqwen-plus-latestQwen Plus Latestqwen plus latestqwen-plusQwen plusQwen Plusqwen-turbo-latestQwen Turbo LatestQwen turbo latestqwen Turbo Latestqwen-turboqwen turboQwen TurboQwen Maxqwen-maxqwen-max-latestQwen max Latestqwen max latestqwen-v1qwen-v1-maxByteDancedoubaoDoubaodoubao-1.5-prodoubao 1.5 proLM Studiolm studiotogetherTogetherSuperbaseMCPRequestyFireworksVS Code LM APIvscode lm apiVS code LM APIvs-code-lm-apiOllamalitellmLiteLLMNebiusNebius AI Studionebus ai studionebius-ai-studioAskSageAsksageaskSageasksagexAIgroqgroq 4Grop 4groq-4grok 4grok4grok-4grok-3-betagrok-3-fast-betagrok-3-fastgrok-3-mini-betagrok-3-minigrok-3grok-3-fastgrok-betagrok-vision-betagrok vision betagrok betagork 4gork4gork-4gork-3-betagork-3-fast-betagork-3-fastgork-3-mini-betagork-3-minigork-3gork-3-fastgrok 4grok 3 betagrok 3 fast betagrok 3 fastgrok 3 mini betagrok 3 minigrok 3grok 3 fastSambaNovainstructMetaMeta-Llamameta-llamameta-llama-3.1llama-4-maverickmeta llamallama 3.1llama-3.1Cerebrascerebrasgemini 1.5 flashGemini 1.5 FlashGemini-1.5-flashGemini-1.5-flashGemini 1.5 flashGemini1.5 flashGemini 1.5flashGemini 1.5flashGooglegemini 2.5 flash liteGemini 2.5 Flash LiteGemini-2.5-flash-liteGemini-2.5-flash-liteGemini 2.5 flash liteGemini2.5 flash liteGemini 2.flash liteGemini 2.5flash litegpt-4.1GPT 4.1o4-minio4 Minio4 minio1-previewo1 previewo1-minio1 minigpt 4.5gpt 4.5 previewgpt-4.5-previewClaude Sonnet 4claude sonnet4claude-sonnet-4claude-3-sonnetclaude 3 sonnetclaude 3 sonnet betaclaude-3-sonnet-betaclaude-3.5-sonnetclaude 3.5 sonnetclaude 3.5 sonnet betaclaude-3.5-sonnet-betaclaude-3.5-haikuOpenAIGPT40GPT4-oGPTsGPTDALLEDALL.EBARDcc#c++chatcsscode-recommendationcode completioncppcsharpdocumentationgogolanghaskellhtmljavaintellicodeintellisensejavascriptjuliakeybindingskitekotlinnodedominationnode.jsluamethod-completetionocamlpythonreactsqlsqliterefeactorrubyrustsnippetsswifttypescripthighlightingsyntaxsyntax-checkercybersecurityOWASPCWECVESQL InjectionXSShighlighterdebuggersinteractivefrontendbackendtutorialeducationLearninglearnDebuggerCode debuggercode-debuggercode reviewerData structureFrameworkMachine learningcliCLILinterLinuxBootstrapAlgorithmAPIDatabaseDesign PatternDesignDesign PatternsDesign Patterns in C++bugDeploymentGitGithubHttpHttpsLanguagesProgramming LanguagesOperating systemText editorweb designbuild a websitehow to design a websitebuild an appjupyterinteractivewindsurfDevin AIComposerBug FinderBug FixingBug FixBug Fixing AIAI Agentdeepseek r1o1o1 previewo1 preview apicode chatcode assistantcode debuggercode CopilotGPT5-minigpt5-miniQwenQwen AIQwen AI AssistantQwen AI AgentQwen AI AutocompleteQwen AI CompletionDeepSeekDeepSeek AIDeepSeek AI AssistantDeepSeek AI AgentDeepSeek AI AutocompleteDeepSeek AI CompletionClineCline AICline AI AssistantCline AI AgentCline AI AutocompleteCline AI CompletionCodestralPrompt LanguagepromptLanguagesonnetsonnet AIsonnet AI Assistantsonnet AI Agentsonnet AI Autocompletesonnet AI CompletionjsonjsoncAgentLangchainMCPMCP Servermcp serverClaude 3.7Claude 3.7 sonnetGemini-2.5-proGemini 2.5 proCohereHuggingFaceNomicVoyage AIanalysisanthropicbotcodecompletioncode-coveragecodegencode-integritycodesuggestioncontentassistdevelopertoolshintingcode hinto3o3-proo3 proo3 previewo4-minio4 minigpt-4.1Gpt 4.1gpt-4.1-minigpt 4.1 nanogpt-4.1.-nanogpt 4.0ossgpt-5 chatGpt-5 chatChatGpt-4oCursor AIWindsurfWindsurf AIWindsurf AI AssistantWindsurf AI AgentWindsurf AI AutocompleteWindsurf AI CompletionCodestralPair ProgrammerLLMDuetGeminiLangchainMCPManus AIManus aiSame.newsame.devSamebase44Base44LovableLLMMoonshotmoonshotkimikimi-thinkingKimi-thinkingTrae AItrae-ai

Readme

🌹 Bed of Roses

An AI companion that lives on your desktop and does things.


🔥 The Problem

AI agents got good. Claude Code, Codex, Cursor, Gemini CLI — they genuinely do the work now. But they all live in the wrong place: a terminal or an IDE, built for one job — code.

What Happens Now

  1. You open a browser tab or an agent in your terminal, type a prompt
  2. The AI performs the task — but your only window into it is walls of scrolling text with limited visibility
  3. It's built for codebases, not your life — it can't send your email, check your calendar, or reply to a message without developer-grade setup
  4. What it produces stays trapped where it ran — scripts in a repo, output in a scrollback, nothing you can open tomorrow as a thing you keep
  5. Close the terminal and it's gone — nothing runs while you're away, nothing notifies you, nothing is there when you sit back down
  6. And if you don't live in a terminal? You never even get to start

What You Actually Want

  • An agent with a presence on your desktop — above every app, not inside a dev tool
  • Work you can watch as it happens — live reasoning, code editors, terminals, browser steps as cards, not a scrolling log
  • Your daily life connected — Gmail, Calendar, Slack, iMessage, ~100 services as one-click tools
  • Results that outlive the session — real apps that persist, memory that compounds, history that resumes
  • One that keeps working when you walk away — scheduled runs, notifications, an inbox
  • Something your non-developer self could use too — and still your model, your keys, your machine

✨ The Solution

Bed of Roses is a small, draggable presence that floats above your real desktop — always on top, on every Space, one keystroke away. You tell it what you want. It does the work in front of you.

It builds you native Mac apps, connects to your Gmail and calendar, browses the web in a real Chrome, reads and writes your files, controls your Mac, plays media, and runs scheduled jobs while you're away — and you watch every step of it happen in a live thought bubble of streaming reasoning, code editors, and terminals.

| | Chat apps | Terminal / IDE agents | Bed of Roses | |---|---|---|---| | Lives | a browser tab | a terminal or editor | on your desktop, above every app | | Built for | conversation | codebases | your whole day — life and code | | You see | text answers | scrolling logs | live cards: reasoning, editors, terminals, browser steps | | Email & calendar | drafts you copy-paste | possible, with developer setup | one-click connected, used as real tools | | The web | quotes pages | scripts and APIs | drives a real visible Chrome, verifies results | | What persists | a transcript | commits in a repo | native apps, memory, resumable history | | While you're away | nothing | nothing | scheduled runs, notifications inbox | | Who can use it | anyone | developers | anyone | | Model | theirs | usually one vendor | yours — any provider, any key, even local |


🚀 Installation

Requires Node ≥ 20. macOS is the primary platform; Windows and Linux are supported in beta.

npm install -g bed-of-roses
bor onboard

That's it. bor onboard walks you through naming your AI, picking one of eleven themes, choosing a presence style, connecting a model, and linking your services. Then the orb appears over your desktop and you start talking.

Platform support

| Capability | macOS | Windows | Linux | |---|---|---|---| | Presence orb, thought bubble, chat | ✅ | ✅ | ✅ (X11; Wayland degraded) | | Generated apps, shortcuts, files, themes | ✅ | ✅ | ✅ | | Ambient browser (browser_*) & connectors | ✅ | ✅ | ✅ | | Shell commands | ✅ bash | ✅ PowerShell | ✅ bash | | Real wallpaper apply | ✅ | ✅ | ✅ GNOME/KDE | | App shortcuts in OS launcher | ✅ ~/Applications | ✅ Start Menu | ✅ app menu | | Computer-use (screen capture, clicks) | ✅ | — | — | | iMessage connector | ✅ | — | — |

On Windows and Linux the AI is steered to the ambient browser and shell instead of macOS-only screen control. A tray icon stands in for the hidden dock.

From source

git clone https://github.com/SixHq/bed-of-roses
cd bed-of-roses
npm install
npm start

The bor CLI

| Command | What it does | |---|---| | bor | Launch Bed of Roses (all your presences) | | bor onboard | Launch and create a new presence with onboarding | | bor create [name] | Register a new presence headlessly | | bor list | List presences and their onboarding state | | bor delete <id> | Delete a presence and its data | | bor --help | Show usage |

Bring your own model

Works with Anthropic (Claude), OpenAI (GPT), Google (Gemini), or any OpenAI-compatible endpoint — one-click presets for DeepSeek, Kimi / Moonshot, Z.ai (GLM), and Ollama for fully-local models. Every provider gets a reasoning-effort dial (Off → Max), and you can switch models mid-conversation from a chip in the input bar.


🎯 How It Works

| Step | What Happens | |---|---| | 1. Summon | Click the orb or press ⌘⌥Space — the composer opens over whatever you're doing | | 2. Ask | "Build me a calorie tracker", "Reply to Sarah's email", "Every morning at 8, brief me" | | 3. Watch | A thought bubble streams the work live: reasoning cards, code filling in line by line, terminal output, browser steps, MCP calls | | 4. Interrupt freely | Stop any task with one click — press Resume and it picks up exactly where it left off | | 5. Get real results | A native app window opens. The email is sent. The file is on disk — its path clickable, revealing in Finder | | 6. Walk away | Scheduled jobs keep running; results land in a notifications inbox on the orb | | 7. Continue anywhere | Any notification or past conversation reopens as a full thread — every card intact — and you keep going |


🛠 Features

🫧 The Presence & the Thought Bubble

The core of BOR is the presence — a floating orb that's always one glance away, and its thought bubble, where work happens in public.

| Card | What streams into it | |---|---| | Reasoning cards | The model's thinking, token by token — collapsible, ignorable, honest | | Editor cards | Every file written, line by line, with path, live caret, diff stats, saved/failed status | | Terminal cards | Commands with $ prompt, live stdout/stderr, working directory, exit status | | Browser cards | Web sessions: current page, action narration, expandable console | | MCP cards | Calls to connected services, arguments streaming as they're composed | | Build cards | Apps and shortcuts under construction, then going live | | Media cards | Videos, images, tweets playing inline |

Plus: the bubble is resizable from all eight edges, minimizes to a chip while work continues, stop/resume with full context preservation, a + for a fresh thread, and a history that restores past conversations with every card intact — reopening a conversation is a real resume, not a transcript.


📱 Build the App You Need, When You Need It

Ask for a calorie tracker, a CRM, a habit journal, a dashboard — BOR researches what a good one looks like, designs it, writes it, and opens it as its own native Mac window.

| Feature | Description | |---|---| | Native windows | Generated apps open as real macOS windows, not web tabs | | Persistent state | Apps keep their data across sessions and across redesigns — "add a dark stats page" doesn't lose your entries | | Evolvable | Ask for changes later; BOR updates the exact app you mean, in place | | Sandboxed | Every generated surface runs in an isolated sandbox with a validated bridge | | Live cards | Small tools can render as interactive cards inside the conversation instead |

Your presence keeps a library of everything it has built and can relaunch, update, or extend any of it on request.


🔗 Connect It to Your Daily Life

During onboarding (and any time after), BOR shows a connectors gallery. One Composio key unlocks one-click OAuth for the services you live in — and connected services become real tools: when Gmail is linked, "reply to Sarah" uses Gmail directly, never a browser.

| Connector | How it connects | |---|---| | Gmail, Google Calendar, Drive, Docs, Sheets | One-click Google sign-in (Composio-managed OAuth) | | Outlook | One-click Microsoft sign-in | | WhatsApp, YouTube, Linear | One-click OAuth | | Slack, Notion, GitHub | One-click OAuth — or paste an API token if you prefer | | iMessage | Local-only: grant Full Disk Access, your messages never leave the machine | | ~100 more services | A searchable "More apps" browser with the same one-click flow | | Image generation | Lights up automatically from your existing model keys |

Everything is verify-then-persist: a credential is live-probed against the real API before it's saved, and secrets never leave your local config.


🌐 Browse the Web Like a Person

BOR drives a real, visible Chrome window with its own persistent profile — separate from your personal browser.

| Feature | Description | |---|---| | Structural page reading | After every action BOR gets an accessibility snapshot — every link, button, field precisely identified. No pixel-guessing | | Acts by reference | Clicks, typing, key presses, dropdowns, multi-field form fills, tabs, back, waiting | | Stays signed in | Its own profile persists logins across sessions | | Verified results | BOR checks the page state after acting before it claims success | | Watch it work | The Chrome window works in the open while a browser card narrates each step |

Plus classic web search and page fetch for quick reads, and the browser-use CLI as an optional power-user fallback.


🖱 Your Mac, Hands On (macOS only)

For everything that isn't on the web and isn't in a file — "rename these layers in Figma", "click Run in Xcode" — BOR uses your Mac the way you do.

| Step | Description | |---|---| | It looks | Captures the screen — hiding its own orb first, so it sees your apps, not itself | | It finds | A vision model locates the element you described and returns exact coordinates | | It acts | Real clicks, real typing, real keyboard shortcuts, opening apps by name | | You see everything | Every capture appears as a card in the bubble — you always know what it saw |


📂 Your Files, Any Format

Drag any file onto the presence — or click a path in any reply to reveal it in Finder.

| Capability | Details | |---|---| | Reads almost anything | PDF, Word, Excel/CSV, PowerPoint, Jupyter notebooks, images (HEIC, PSD, TIFF included), audio & video metadata, archives, source code, text in any encoding | | Writes and edits | Full and surgical file edits, with every change streaming into an editor card | | Drag & drop attach | Files, images, folders, fresh screenshots — dropped straight onto the orb | | Clickable paths | Every path BOR mentions is a link that reveals the file in Finder | | Safe roots | BOR's own artifacts live under a working directory; it refuses to write into its own source or outside your home |


🎵 Play Media Where You Are

YouTube (including Shorts and live), Vimeo, TikTok, Instagram posts and reels, tweets, images, and video files play as cards inside the presence. No app-switching to see what BOR found.


⏰ Work While You're Away

BOR schedules real agent runs — not reminders, actual work.

| Feature | Description | |---|---| | One-shot, interval, or cron | "Every weekday at 9, summarize my inbox" becomes a real scheduled agent run | | Notifications inbox | Results land behind the bell; unread counts show on the orb even when collapsed | | Continue in chat | One click turns any notification into a full conversation seeded with its content | | Background tasks | Long work keeps running while the bubble is minimized to a chip |


🧠 It Remembers You

| Feature | Description | |---|---| | Durable memory | Facts about you, your preferences, and your projects survive across sessions | | Skills | Markdown files that teach BOR your procedures — drop them in a folder, they load into its head | | Conversation history | Every thread reopens with its cards, terminals, and reasoning intact |


🏪 A Hundred More Tools Through MCP

A built-in MCP marketplace lets you browse, search, and one-click install Model Context Protocol servers — databases, SaaS APIs, dev tools — and BOR wires them up itself, including build steps and API keys.

Your own custom MCP servers (stdio, SSE, or streamable-HTTP) drop into a config file and hot-reload — no restart.


🎨 Make It Yours

Eleven full themes restyle the presence, every card, and every app BOR generates — the AI reads each theme's design handbook before it builds anything, so generated apps match your world.

| Theme | Feel | |---|---| | Bloom | Warm aubergine night, lilac presence — the quiet default | | Cartoon Brutalist | Cream paper, hard ink strokes, sticker energy | | Warm & Earthy | Linen, terracotta, ferns through the window | | Neo Brutalist | Paper white, ink black, one hot accent | | Y2K Frutiger Aero | Translucent gel, blue glass, water droplets | | Liquid Glass | Vision-era frosted refraction | | Pixel CRT | Phosphor green, scanlines, BBS comfort | | Risograph | Two-ink poster, halftone, off-register charm | | Solarpunk | Sun-warmed cream, moss and terracotta, living tech | | Cyberpunk | Neon-noir panels, cyan wireframe, magenta signal | | Memphis | Squiggles, clashing brights, hard ink outlines |

Ask for a new wallpaper and BOR generates one and sets it as your actual macOS desktop. Name your AI, pick its orb style and color, give it a personality.


👥 Run as Many Presences as You Like

Each presence is a fully separate companion — its own model, memory, apps, connectors, theme, and personality, on its own isolated runtime.

A work presence on Claude and a home presence on Kimi run side by side without sharing anything — and they all work in parallel. A manager window lists every presence with creation, deletion, and per-presence logs.


⌨️ Everyday Interactions

| Interaction | What it does | |---|---| | ⌘⌥Space | Summon / dismiss the presence | | Click the orb | Open the composer | | Drag a file onto the orb | Attach it as context | | ☰ menu in the input bar | Notifications, History, MCP Marketplace, App Library, New Presence — without opening a chat | | Model chip | Switch provider/model mid-conversation | | Stop → Resume | Cancel a task; resume later exactly where it stopped | | + in the bubble | Fresh thread (the old one stays in History) | | Click any file path | Reveal in Finder |


🔐 Local First, Yours First

| Principle | How | |---|---| | Runs on your machine | Everything at 127.0.0.1 — the runtime, your data, your apps | | Your keys, local config | Provider keys and connector credentials never leave your Mac | | Sandboxed surfaces | Generated apps run in isolated sandboxes; all I/O goes through a validated bridge | | Audited | Every state-changing action lands in an append-only audit log | | Guarded execution | Static command validation refuses destructive patterns before they run | | Open source | Apache-2.0, all of it readable |


💪 Why Bed of Roses?

For your day

  • It ends copy-paste AI. The distance between "asked" and "done" is zero — the work happens on your machine, by the AI, visibly.
  • It compounds. Apps persist, memory persists, connections persist. Day 30 BOR knows your world; a chat tab starts from zero every morning.
  • It's honest. Streaming reasoning, live terminals, verified browser results, an audit log. You never wonder what it did.
  • It's yours. Your model choice (including fully-local via Ollama), your keys, your data, your aesthetic.

For the ecosystem

  • Provider-agnostic by design — first-class support for smaller and open models (DeepSeek, Kimi, GLM), not just the giants.
  • MCP-native — the marketplace and custom-server support make BOR a living host for the open tool ecosystem.
  • A real agent harness — streaming XML tool protocol, multi-pass execution, mid-stream failure recovery, stop/resume — built in the open for anyone to learn from.

🧑‍💻 Development

git clone https://github.com/SixHq/bed-of-roses
cd bed-of-roses
npm install
npm start          # Electron host (spawns the runtime)
npm run server     # runtime only, at http://localhost:7777

| Piece | What it is | |---|---| | host/ | Electron host — presence window, native app windows, onboarding | | server/ | Node runtime — LLM harness, tool executor, connectors, MCP, files | | shell/ | Onboarding UI and themes | | docs/ | User documentation (start here) |

Architecture deep-dive: CONTRIBUTING.md and CLAUDE.md.


🤝 Contributing

Bed of Roses is open source and we welcome contributions!

All contributions are appreciated, no matter how small.


📄 License

Apache-2.0 — see LICENSE and NOTICE.


Star History

Star History Chart