Skip to content

Add macOS Electron companion with scoped Messages and computer access - #44

Draft
srctl wants to merge 6 commits into
mainfrom
codex/electron-companion-v1
Draft

srctl wants to merge 6 commits into
mainfrom
codex/electron-companion-v1

Conversation

@srctl

@srctl srctl commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Roost agents can use a Mac through an Electron companion connected to the existing server. The app reuses the web workspace and adds local controls for one selected agent, selected Messages conversations, and ten-minute computer sessions with visible stop controls. Mac window controls share the app's draggable header.

Connect to exe.dev discovers running VMs through the user's existing SSH login and provisions separate Roost device and VM-scoped HTTPS credentials. Normal traffic uses HTTPS without a tunnel or pasted keys. Credentials stay encrypted in the main process, renew through SSH, and are revoked on disconnect or failed setup. The remote workspace gets proxy authentication only for its exact origin and secure WebSockets, with no device token or local IPC. Manual connections remain available. The server CLI adds owner-only JSON create/renew commands; renewal cannot recreate a revoked device.

Requests are bound to the device, selected agent, active run, request UUID, and deadline. Local and server scope checks enforce permissions and cancellation. Restricted Feed, handoff, and reflection runs cannot use these capabilities. Input consumes its screenshot and requires a new capture after failure. Native typing preserves Unicode scalars. Tool-catalog migration preserves conversation history.

Validation: 431 server tests, 7 docs tests, and 20 desktop tests pass, along with lint, workspace typechecks, server/Mac builds, native helper checks, and production auth/mobile smoke tests. Source and packaged Electron fixtures exercise manual and exe.dev setup, reconnect, permission controls, isolation, and disconnect. The native discovery and HTTPS authentication code also reaches the real exe.dev instance; temporary probe keys were revoked. Fixtures simulate Keychain and OS consent. Real Messages reads and input injection remain untested.

The Mac package targets macOS 14+ on the build machine's architecture and is ad-hoc signed. Messages requires separately installed imsg. Developer ID signing, notarization, automatic updates, other-platform local adapters, and a virtual desktop are outside this prototype. The live server must receive this build before automatic pairing works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant