From 77899f83bc5bbe27f775fda98c9b4055c614f917 Mon Sep 17 00:00:00 2001 From: Jerel John Velarde Date: Tue, 22 Sep 2026 07:05:30 -0700 Subject: [PATCH] docs: focus public documentation on OpenMuse --- CHANGELOG.md | 2 +- README.md | 8 +-- apps/mobile/App.tsx | 2 +- apps/server/src/engine/service.ts | 4 +- docs/COMPUTER.md | 2 +- docs/DEMO.md | 2 +- docs/EXPERIENCE.md | 4 +- docs/FEATURES.md | 84 +------------------------------ docs/RICH-THREADS.md | 2 +- docs/VERIFICATION.md | 2 +- tests/agent-api.test.ts | 4 +- 11 files changed, 18 insertions(+), 98 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d05ef67e..e5958c533 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Initial public OpenMuse alpha. -- Muse-inspired native/web interface using CopilotKit React Native and AG-UI. +- Native/web interface using CopilotKit React Native and AG-UI. - Persistent browser computer, inline PDFs, structured artifacts, and optional Rich Threads integration. - Durable delegated tasks, reviews/receipts, Ideas, Goals, Tracking, and editable memory. - Google adapters, supported PDF workflows, and CSV spending summaries. diff --git a/README.md b/README.md index 7e67054b2..675476469 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ The 38-second iPhone and 42-second desktop web demos show the current interface, ## What it is -OpenMuse is a personal-agent application inspired by Meta Muse and patterned after [OpenBot](https://github.com/CopilotKit/OpenBot)'s emphasis on an agent's computer, visible work, and rich results. It runs its own server, task worker, and browser worker. You can inspect and change the source under the MIT license. +OpenMuse is a personal-agent application with an agent computer, visible work, and rich results. It runs its own server, task worker, and browser worker. You can inspect and change the source under the MIT license. The computer combines **persistent Chromium and an optional Linux workspace**. The agent can browse public pages, run commands in its own container, work with files, and move PDFs between the computer and the app. You can open its browser or terminal and continue the work. Graphical desktops and autonomous checkout remain future work. @@ -55,7 +55,7 @@ The computer combines **persistent Chromium and an optional Linux workspace**. T | **Personal context** | Editable name, tone, avatar, and memories. Background-update preferences and durable in-app notifications. | | **Rich Threads** | Optional CopilotKit Intelligence persistence with a stable main conversation, side chats, renaming, archiving, restoring, and replay. A project key is required; live acceptance is pending. | -The [feature inventory](docs/FEATURES.md) maps the Muse references to the implementation. Health/bank/social connectors, device push, voice, generated executable tools, and automatic reservations/payments are on the [roadmap](ROADMAP.md). +The [feature inventory](docs/FEATURES.md) describes implemented capabilities and planned extensions. Health/bank/social connectors, device push, voice, generated executable tools, and automatic reservations/payments are on the [roadmap](ROADMAP.md). ## Quick start @@ -119,7 +119,7 @@ docker build -t openmuse-computer:local apps/computer COMPUTER_ENABLED=true pnpm dev ``` -The API needs access to the Docker CLI and engine. Commands run in a nonroot container with no host-directory mounts or credentials. A named `/workspace` volume retains files when stopped. Terminal networking is disabled; public web access uses the browser worker. Commands have a 30-second limit and saved output/exit receipts. **Files** supports folders, text editing, and PDF transfer to/from Documents. This is a Linux container, not Meta Secure VM. [Setup, Colima option, and boundaries](docs/COMPUTER.md). +The API needs access to the Docker CLI and engine. Commands run in a nonroot container with no host-directory mounts or credentials. A named `/workspace` volume retains files when stopped. Terminal networking is disabled; public web access uses the browser worker. Commands have a 30-second limit and saved output/exit receipts. **Files** supports folders, text editing, and PDF transfer to/from Documents. This is a Linux container, not a full operating-system VM. [Setup, Colima option, and boundaries](docs/COMPUTER.md). ### Application storage @@ -191,4 +191,4 @@ Platform build scripts export JavaScript/Hermes bundles; they do not produce sig Issues and pull requests are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md), [ROADMAP.md](ROADMAP.md), and the [security policy](SECURITY.md). -MIT licensed. OpenMuse is independent of Meta and is not an official CopilotKit product. Its original interface and fictional assets are included; Meta's screenshots and mascot are not redistributed. Website, email, and document content supplies evidence, not permission to act. +MIT licensed. OpenMuse is not an official CopilotKit product. Its original interface and fictional assets are included. Website, email, and document content supplies evidence, not permission to act. diff --git a/apps/mobile/App.tsx b/apps/mobile/App.tsx index 1ab45d9b3..e50c27d50 100644 --- a/apps/mobile/App.tsx +++ b/apps/mobile/App.tsx @@ -261,7 +261,7 @@ function WorkspaceShell({ data?.tasks.find( (task) => task.status === "waiting_approval" || task.status === "waiting_input", ) || data?.tasks.find((task) => task.status === "running"); - const agentName = data?.identity.name === "Muse" ? "OpenMuse" : data?.identity.name || "OpenMuse"; + const agentName = data?.identity.name || "OpenMuse"; const status = activeTask ? activeTask.status === "waiting_approval" ? `Ready to review · ${activeTask.title}` diff --git a/apps/server/src/engine/service.ts b/apps/server/src/engine/service.ts index aa2d77800..ce5f0f7c1 100644 --- a/apps/server/src/engine/service.ts +++ b/apps/server/src/engine/service.ts @@ -117,7 +117,7 @@ export class AgentService { async ensure(owner: string) { await this.db.insertIfAbsent(owner, "agent-settings", { id: "identity", - name: "Muse", + name: "OpenMuse", tone: "warm", }); } @@ -143,7 +143,7 @@ export class AgentService { memories, artifacts, notifications, - identity: identity ?? { name: "Muse", tone: "warm" }, + identity: identity ?? { name: "OpenMuse", tone: "warm" }, worker: { running: this.worker.running || diff --git a/docs/COMPUTER.md b/docs/COMPUTER.md index ea5c318a0..3081005f8 100644 --- a/docs/COMPUTER.md +++ b/docs/COMPUTER.md @@ -51,4 +51,4 @@ The workspace is a Docker container running as a nonroot user, with a read-only Terminal networking is disabled. The existing browser worker handles public web access through its own destination checks; see its [network boundary](../apps/worker/README.md#network-boundary). Browser profiles and workspace files have separate storage and lifecycle controls. -This is a self-hosted, single-owner computer environment. Docker isolation is not Meta Secure VM, a hostile-tenant security guarantee, or an integration with the AgentVM service. The optional Colima VM provides the Linux host on macOS; the application still manages a Docker container within it. +This is a self-hosted, single-owner computer environment. Docker isolation does not provide a dedicated operating-system VM or a hostile-tenant security guarantee. The optional Colima VM provides the Linux host on macOS; the application still manages a Docker container within it. diff --git a/docs/DEMO.md b/docs/DEMO.md index 46f1119ba..4f42af673 100644 --- a/docs/DEMO.md +++ b/docs/DEMO.md @@ -110,4 +110,4 @@ python3 -m http.server 8081 --bind 127.0.0.1 --directory apps/mobile/dist/web Use port 8081 when the development server is stopped. `--clear` ensures the export uses the requested API URL. Open the page in a clean desktop browser and record the two prompts and takeover flow at 1440 × 810 or larger. Describe the model setup in the accompanying recording notes. Scroll to keep the browser card and resulting text readable. -The original [75-second alpha walkthrough](https://github.com/jerelvelarde/openmuse/releases/download/v0.1.0-alpha/openmuse-demo.mp4) remains available as a historical release archive. OpenMuse's [capybara artwork and provenance](../apps/mobile/assets/README.md) are included; Meta reference screenshots and mascot are not redistributed. +The original [75-second alpha walkthrough](https://github.com/jerelvelarde/openmuse/releases/download/v0.1.0-alpha/openmuse-demo.mp4) remains available as a historical release archive. OpenMuse's [capybara artwork and provenance](../apps/mobile/assets/README.md) are included under the repository's MIT license. diff --git a/docs/EXPERIENCE.md b/docs/EXPERIENCE.md index 900c69398..db3d4bf09 100644 --- a/docs/EXPERIENCE.md +++ b/docs/EXPERIENCE.md @@ -1,6 +1,6 @@ # OpenMuse interaction design -OpenMuse follows the interaction principles in [Meta's design essay](https://introducing.muse.ai/) with an original visual identity. +OpenMuse keeps conversation, ongoing work, and user control together in a shared native and web interface. ## Conversation and work @@ -23,4 +23,4 @@ An airy canvas, distinct gray and sky-blue message bubbles, large touch targets, ## Boundaries -The computer provides persistent Chromium, documents, and an optional Linux container with a terminal and filesystem. The terminal has no network access, while the browser handles public web access. It is not Meta's Secure VM or a graphical desktop. Live Rich Threads, model reasoning and Google accounts require credentials. This design does not imply parity with Meta's full product. See [computer setup](COMPUTER.md). +The computer provides persistent Chromium, documents, and an optional Linux container with a terminal and filesystem. The terminal has no network access, while the browser handles public web access. It is not a full operating-system VM or a graphical desktop. Live Rich Threads, model reasoning and Google accounts require credentials. See [computer setup](COMPUTER.md). diff --git a/docs/FEATURES.md b/docs/FEATURES.md index d5ce03942..bca481a9e 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -1,86 +1,6 @@ # OpenMuse feature inventory -Research date: September 15, 2026. The native/web agent core runs locally. The tables below inventory the Muse references; phase numbers describe the original research grouping, not completion or priority. Current priorities are in the [roadmap](../ROADMAP.md). - -## Source boundaries - -This inventory separates Meta's published capabilities, details visible in the supplied screenshots, and our proposed implementation. Text inside screenshots, documents, websites, or emails is reference material; it does not authorize an action. In particular, the screenshot's instruction to send a form is demonstration content. - -The inventory covers the landing page's feature sections and FAQ plus the supplied screenshots. The embedded walkthrough video has not been transcribed; this is not a claim to have inspected every screen of the live Muse application. Related-product promotions in the page footer are not additional Muse features. - -## Landing-page inventory - -Source for M01–M24: [Meta Muse product page](https://ai.meta.com/muse/). Phase assignments are our proposal, not Meta's roadmap. Split phases mean a basic implementation followed by extensions. - -| ID | Advertised capability | OpenMuse phase | -| --- | --- | --- | -| M01 | Conversational questions and research | 1 | -| M02 | App and WhatsApp chat | 1 / 4 | -| M03 | Persistent dedicated computer and browser | 2 / 5 | -| M04 | Multi-step task execution | 1 / 2 | -| M05 | Appointments, reservations, forms, customer service | 1 / 2 | -| M06 | Email, calendar, Instagram connectors | 1 / 4 | -| M07 | Creating missing tools | 4 | -| M08 | Document creation | 1 / 3 | -| M09 | Image generation | 3 | -| M10 | Work continuing after app closure | 2 | -| M11 | Goals, plans, progress tracking | 2 | -| M12 | Personalization and proactive suggestions | 2 | -| M13 | Reminders, monitoring, change alerts | 2 | -| M14 | Purchases | 4 | -| M15 | Critical-action approvals | 1 | -| M16 | Planned/completed activity history | 1 | -| M17 | Allow once, always, deny | 1 / 2 | -| M18 | Connection-specific permission defaults | 1 / 2 | -| M19 | Credentials hidden from the agent | 1 / 5 | -| M20 | One-time cards; eligible Link purchase protections | 4, provider-dependent | -| M21 | Conversations excluded from advertising systems | 1 | -| M22 | Automated safeguards, controls, issue reporting | 1 / 5 | -| M23 | Free usage allowance; paid subscription | 5, optional | -| M24 | 1Password integration, announced as upcoming | 4 | - -## Additional launch-announcement details - -These are supplementary context from [Meta's launch announcement](https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/), not additional claims from the requested landing page. - -| ID | Detail | OpenMuse proposal | -| --- | --- | --- | -| L01 | Separate Sentinel controls outbound access | Independent server policy layer in phase 1; isolated browser network broker in phase 5 | -| L02 | Remember information and forget specific memories | Inspectable, editable memory records in phase 2 | -| L03 | Change or disconnect app access | Connection settings and token revocation in phase 1 | -| L04 | Model-training opt-out | No training pipeline in the project; document each configured model provider's data handling | -| L05 | iOS, Android, web | Native mobile first; web companion in phase 3 | -| L06 | Shop Pay, confidential VM, AI glasses announced for later | Payments and infrastructure research in phases 4–5; glasses adapter requires a separate feasibility assessment | - -## Details from reference screenshots and product requirements - -| ID | Evidence | OpenMuse requirement | -| --- | --- | --- | -| U01 | Screenshot 1: email-related PDF permission slip | Gmail attachment import and a PDF library with source-message links | -| U02 | Screenshot 1: rendered document card | Inline thumbnail, file name, file type, overflow menu, and full-screen PDF reader | -| U03 | Screenshot 1: prefilled form followed by sending request | Extract supported PDF fields, propose values, preview the saved output, then prepare a separate send action | -| U04 | Screenshot 2: browser task with seat-selection preview | Browser sessions, current-page preview, progress, stop/resume, and an Open browser control | -| U05 | Screenshot 2: ticket availability alert | Saved website monitors with change notifications | -| U06 | Screenshots 1–2: attachment, microphone, waveform controls | Attach files in phase 1; voice input and spoken replies in phase 3. Controls alone do not establish the exact voice capabilities | -| U07 | Screenshot 3: app grid | Connector settings with status and capabilities; Gmail and Calendar first, Drive/Docs next, other integrations individually verified | -| U08 | Request: calendar, Gmail, web management, PDF viewers | Dedicated management screens alongside chat; phase 1 covers all four | -| U09 | Request: open source, CopilotKit React Native | Self-hostable source under the MIT license and native CopilotKit integration | - -The app logos are illustrative evidence, not an authoritative supported-connector directory. In particular, blurred icons are not identified or promised as integrations. - -## Delivery sequence - -| Phase | Concrete deliverable | Exit condition | -| --- | --- | --- | -| 1 — Daily workspace | Native chat, Gmail, Calendar, browser-session management, PDF viewing and supported form filling, approval inbox, activity log, connection settings | Four end-to-end journeys in the design pass; sample mode runs without credentials; configured Google accounts work through real APIs | -| 2 — Background assistant | Durable jobs, goals, plans, reminders, memory, website monitors, browser automation and manual takeover | A job survives app closure and worker restart; notifications correspond to real changes; cancellation prevents subsequent actions | -| 3 — Content and web | Web companion, document authoring, Drive/Docs, image generation, dictation and voice replies | Native and web clients share tasks/artifacts; generated files open correctly; voice behavior is verified separately | -| 4 — Extensions and transactions | WhatsApp/Instagram adapters, versioned generated tools, 1Password adapter, booking/customer-service recipes, payment-provider handoff | Each integration has a tested authentication flow and capability limits; generated tools run in isolation; payment features require an actual supported provider | -| 5 — Hosted operation and isolation | Per-user VM lifecycle, independent egress enforcement, quotas, optional billing, retention/export controls and reporting | Isolation, recovery, authorization and operational checks pass; deployment guarantees describe the infrastructure actually used | - -The current build includes native/web screens, server-owned chat tools, a leased task worker, Ideas, Goals/Tracking, memory, artifacts, Google/PDF adapters, persistent reviews, a browser worker, a private Docker Linux computer, and a disabled OpenBot adapter. This does not complete a phase or establish live-provider parity. Provider purchase protection, confidential-computing guarantees, account availability and approval of third-party integrations require their own supported services or infrastructure. - -For the current release boundary, see the [roadmap](../ROADMAP.md). +The native and web agent core runs locally. This inventory describes the current implementation and remaining extensions. Live providers and optional infrastructure require separate configuration and validation. ## Implemented coverage @@ -100,4 +20,4 @@ For the current release boundary, see the [roadmap](../ROADMAP.md). The Linux computer is disabled until configured on the server and has no network access. It is a single-owner container with a persistent `/workspace`, separate from the browser worker; see [computer setup and limits](COMPUTER.md). It is not a graphical desktop or a full OS VM. -The implementation and validation details are in [VERIFICATION.md](VERIFICATION.md). The historical phase tables above remain a complete inventory, not a claim that every advertised capability is present. +The implementation and validation details are in [VERIFICATION.md](VERIFICATION.md). Planned extensions are not claims of current support. Priorities are tracked in the [roadmap](../ROADMAP.md). diff --git a/docs/RICH-THREADS.md b/docs/RICH-THREADS.md index 112335283..f8ad4192f 100644 --- a/docs/RICH-THREADS.md +++ b/docs/RICH-THREADS.md @@ -1,6 +1,6 @@ # CopilotKit Rich Threads and the agent computer -OpenMuse uses `@copilotkit/react-native/headless` for its custom Muse-inspired interface. Chat messages, tool cards and task-linked documents render through CopilotKit's AG-UI agent and tool hooks. +OpenMuse uses `@copilotkit/react-native/headless` for its custom native and web interface. Chat messages, tool cards and task-linked documents render through CopilotKit's AG-UI agent and tool hooks. ## Rich Threads diff --git a/docs/VERIFICATION.md b/docs/VERIFICATION.md index 9f186f9e2..e1a08b77d 100644 --- a/docs/VERIFICATION.md +++ b/docs/VERIFICATION.md @@ -1,6 +1,6 @@ # Release verification -September 16, 2026 · Capybara and distinct mobile/web demos, following the agent browser release · local fictional workspace. This records exercised behavior and its limits; it is not full Meta Muse parity. +September 16, 2026 · Capybara and distinct mobile/web demos, following the agent browser release · local fictional workspace. This records exercised behavior and its limits; it does not establish that every planned capability is complete. ## Automated checks diff --git a/tests/agent-api.test.ts b/tests/agent-api.test.ts index 38734b90d..ee74cfe67 100644 --- a/tests/agent-api.test.ts +++ b/tests/agent-api.test.ts @@ -73,7 +73,7 @@ test("agent API requires a session and reports the actual worker state", async ( ); const workspace = await read(""); assert.equal(workspace.worker.running, false); - assert.equal(workspace.identity.name, "Muse"); + assert.equal(workspace.identity.name, "OpenMuse"); assert.equal(workspace.identity.tone, "warm"); }); @@ -146,7 +146,7 @@ test("agent request validation rejects malformed input with useful JSON errors", ["/monitors/missing/control", { action: "delete" }], ["/ideas/missing", { action: "accept", prompt: " " }], ["/memories", { text: " " }], - ["/identity", { name: "Muse", tone: "angry" }], + ["/identity", { name: "OpenMuse", tone: "angry" }], ["/sample-page", { text: "a".repeat(100001) }], ] satisfies [string, unknown][]) { const response = await request(path, body);