Product
Feature status
The state of each feature on every platform. We update it as the app changes.
Last updated . What changed, release by release, is in the changelog.
126
Entry, identity, and room access
| Feature | Status | Notes |
|---|---|---|
| Open a permanent room link and see room / invite contextPermanent personal room / memorable link | Have | Bare room links stay opaque; booking tokens can add title, time, and subject. |
| Book a time from a roomBookable link (/book/<slug>) | Have | The Mac in Join mode opens the public web booking page from Book a time; Host mode has no such button. The phone joins; booking is a web door. |
| Enter guest name and emailGuest join without account | Have | Human guests do not need an account and provide email; a declared notetaker omits email and joins through the same owner-admission path. |
| Before-you-join camera and microphone check | Have | Each surface uses its platform-native permission and device flow. |
| Ask to join, waiting-room status, cancel, and reconnectWaiting room / admit–deny | Have | No LiveKit media token is issued until the owner admits the request. Every client can withdraw the knock and lands back on Prejoin. |
| Verified Envisioning owner sign-in | Have | Google Workspace identity is required for owner actions. On the Mac sign-in belongs to the app, not the mode: Join mode fills in the signed-in owner's own name and email when you call a colleague. |
| Host presence / lease protectionHost must be online | Have | The control plane gates admission and token exchange on the owner device lease. |
| Token invite shows booking title / time / subject | Have | Booked links reveal that meeting only; bare slug stays opaque. |
| Guest reschedules / cancels a booking | Have | Handled on Core’s pages so calendar and CRM stay in sync. |
| Meeting password / passcode | Don't want | Lobby + owner admit is the gate. |
| Disposable / one-off room codes | Don't want | Permanent owner rooms only. |
| Dial-in / PSTN phone audio | Don't want | WebRTC clients only. |
| SIP / hardware room systems | Don't want | Out of scope. |
Live audio, video, and stage
| Feature | Status | Notes |
|---|---|---|
| Mute and unmute microphoneMute / unmute microphone | Have | Available before joining and during the meeting. |
| Start and stop cameraStart / stop camera | Have | Camera-off tiles retain participant identity across clients. |
| Choose camera, microphone, and output deviceCamera / mic device selection | Have | Every surface picks camera and microphone before joining and from the same chevron beside mute and camera in the call. iOS output stays with the system audio-route picker. |
| Spatial audio: voices from where the tiles areSpatial audio | Have | Meet places each remote microphone on an arc in front of you, where that person's tile is on the stage, and moves the voice when the tile moves. HRTF on headphones, plain panning on speakers. On by default, with a switch on every surface. Screen-share audio stays centred. |
| Participant video grid, participant count, and People panelMulti-participant video grid | Have | Tuned for small rooms with a hard ~100-participant guardrail. People lists who is in the meeting with microphone, camera, and screen-share state; host actions stay native. |
| Publish a screen shareScreen share (display / window) | Have | Mac uses a display / window picker; browsers also expose their native tab option. |
| Watch and identify a remote screen share | Have | Shared tiles are named and visually distinguished from camera video. |
| Stop your own screen share | Have | iOS does not publish screen shares. |
| Host stops another participant’s screen shareStop someone else’s screen share (host) | Have | Host surfaces only; it stops the active share but does not ban future sharing. |
| Host mutes a participant, or everyone elseMute all / mute others (host) | Have | Mac and iOS owners. Closes microphones and opens none — unmuting stays with the person muted, on every surface. |
| Told who muted you | Have | The SFU mute is what silences the mic; the notice is what stops it reading as broken hardware. |
| Host removes a participant mid-callRemove / kick participant mid-call | Have | Mac and iOS owners, with confirmation. Disconnects them and spends the admission, so re-entry is a fresh knock. |
| Told you were removed, not dropped | Have | All clients distinguish removal from connection loss. iOS observes the session phase and shows an ended receipt with the reason and a way to join again. |
| Background blur and branded background effectsBackground blur | Have | Mac, web, and iOS have blur, the same small set of Block themes, and your own picture (scaled down and re-encoded on the device, with no metadata carried over; 1.7.8). Segmentation runs on the device — the room sees only composited frames. |
| Hide self view | Have | Hiding the preview does not stop publishing the camera. |
| Connection quality and reconnect handlingConnection quality indicator | Have | iOS shows per-person quality and an explicit reconnecting state in the participants panel. |
| Leave the meeting or end it for everyoneLeave meeting | Have | Guests and owner companions leave their own session. Mac and iOS hosts can end a personal room for everyone; ending the shared internal room for everyone is a separate confirmed action. |
| Speaker / output device selection | Have | Mac Settings, in-meeting menus, meetctl; web prejoin + settings where the browser supports it; iOS route picker. |
| Share a region of the screen | Want | Natural third option in the Mac picker. |
| Share one browser tab | Partial | Browser guests already can; Mac host shares a whole window. |
| Share computer audio with screen | TBD | Common peer feature; not a first-class control today. |
| End meeting for all (host) | Have | Owner finalizes the room and notes path. |
| Rejoin after brief disconnect | Have | Admitted credential → fresh token while the lease is live. |
| Speaker / active-speaker emphasis | Partial | Screen share auto-pins on web; no full Speaker View. |
| Pin / spotlight a participant | Don't want | Removed. A screen share takes the big tile on its own; there is no local pin and no host spotlight. |
| Gallery vs Speaker view toggle | TBD | Meet is grid-first today. |
| Full screen meeting window | Partial | OS window chrome; no dedicated in-app stage mode. |
| Picture-in-picture / pop-out video | Partial | Optional Mac self-view only; it can dock back to the stage. There is no generic participant pop-out. |
| Immersive / together mode layouts | Don't want | Novelty layouts. |
| Virtual / brand backgrounds | Partial | Brand Block themes; not arbitrary image upload. |
| Beauty / touch-up filters | Don't want | Out of scope. |
| Browser noise suppression / AEC | Have | Explicit capture defaults on web. |
| Advanced voice isolation | TBD | OS-level on Mac; not a Meet control yet. |
| HD / 1080p video toggle | Partial | Capture around 720p-class; no user HD switch. |
| Low-light adjustment | Don't want | Out of scope. |
| Lock meeting (no new joins) | Partial | Implicit when the lease dies; no explicit lock toggle. |
| Co-host / alternate host | Don't want | Exactly one verified Envisioning owner per room. |
| Host tools security menu | Don't want | Single-owner model. |
| Domain-restricted hosting | Have | Google Workspace @envisioning.com / @envisioning.io owners only. |
In-meeting collaboration and captions
| Feature | Status | Notes |
|---|---|---|
| Room text chatIn-meeting text chat | Have | One room-wide text channel; file attachments and private DMs are not offered. |
| Embedded preview for a pasted link | Have | The Worker reads the page and answers text; no client ever fetches a pasted link, so a site never learns who was in the room. In a meeting the read is authorized by the meeting itself, because a guest has no account. The page’s picture comes through the Worker too, on a signed address — without that signature the route would be an open image proxy. |
| Ephemeral emoji reactionsEmoji reactions | Have | Six reactions float in the room and are not stored. |
| Reactions on a chat message | Have | The same six emoji, on a message rather than on the room. Reliable rather than lossy, because a tally has to still be right in ten minutes — but stored nowhere: they last as long as the chat does, which is the call, and never reach the record or the summary. |
| Live captions from the owner deviceLive captions | Have | Speech-to-text runs locally on whichever owner device is the host; only caption text is shared. |
| Show and hide the live transcript / captions viewShow / hide captions UI | Have | iOS keeps the caption strip on the stage and opens the full transcript from More. |
| Finalized transcript and AI summary deliveryMeeting transcript (finalized text) | Have | Read in Meet once finalized, by participants with artifact access; consent-filtered. Share a link to the meeting page (it grants nothing), copy the text, or download .md or .txt: on the web from the meeting page, on the Mac and iPhone from the live transcript. Nothing is emailed and nothing is recorded. |
| Meeting duration and ended receipt | Have | Joining clients explain when the owner ended the room or the session was lost. |
| Chat file attachments | Don't want | Text only; no file plane. |
| Raise hand | Have | Stays up until lowered, survives reconnects; badge on the tile, queue count on People. The host can lower every hand at once. |
| Participant list panel | Have | People panel on every client with per-person mic, camera, and share state; host actions (mute, remove) stay native. |
| Private / DM chat | Don't want | One room chat. |
| Whiteboard | Don't want | Use external docs. |
| Collaborative docs / slides in-call | Don't want | Out of scope. |
| Polls / quizzes | Don't want | Out of scope. |
| Breakout rooms | Don't want | Explicit non-goal. |
| Annotation on shared screen | Don't want | Out of scope. |
| Third-party in-meeting apps | Don't want | No marketplace. |
| AI meeting summary | Have | Available in Meet after finalization to participants with artifact access. |
| Cloud A/V recording + playback URL | Want | Proposed, not decided. Meet does not record today; consent and retention still open. |
| Local A/V recording | Don't want | Cloud recording is the supported path if it ships. |
| Livestream to YouTube / Twitch | Don't want | Out of scope. |
| Artifact viewer / delete / export | Want | Needed before broad transcript rollout. |
| CRM / meeting log ingest | Have | Hosted Meet sessions and Granola notes can sync finalized meeting text into Core interactions; deployment needs the optional Core secret and migration. |
Owner workspace, scheduling, and operations
| Feature | Status | Notes |
|---|---|---|
| Home / own room status / copy room linkCopy invite / share link | Have | Home is today on web too — the clock, then the modules in the order you chose in Settings → Home, among them your room with its link, a copy button and Schedule…, with Home / Calendar / Work / Team / Docs navigation. The member room/Meet flow belongs to Home; `/join` remains a direct public room door. On the Mac the launch card is Host mode only. Starting the room is native (see Start room, admit / reject guests). |
| Connect Google Calendar and subscribed feeds, view the Upcoming agenda | Have | Account attachments, Google calendar selection, and subscribed-feed selection use the shared control-plane contract; refresh tokens stay encrypted there, not on the device. Home Upcoming includes selected Google calendars and subscribed feeds on Mac, iOS, and web; events marked Hide from Next are omitted there and from alerts, while remaining visible in Calendar. Web reads the Google week or month at `/calendar`, shows explicit travel duration metadata when present, and can start the Google connect flow. Its Calendars menu turns each account, Google calendar and the subscribed feeds on or off in the same owner-wide choice the Mac and iPhone read. It can create timed events, edit and delete writable ones, and answer an invitation. EventKit calendars are read on the Mac and iPhone only. |
| Native Calendar views (Google + EventKit + subscriptions) | Have | Mac has the full window/sidebar and direct grid move/resize; iOS has day/2-day/3-day/week/month/agenda, source management, and deliberate long-press movement, while resize stays in the editor. Upcoming rows show explicit travel duration metadata when supplied; Meet never estimates routes. Envisioning Internal remains writable shared context but is not a move source or destination; Duplicate is the copy path. Web shows one Google week or one month at a time, with no day or multi-day grid and no drag. It adds read-only Events, Milestones, Tasks, and Core-computed My availability layers, which it toggles only in the browser. |
| Create a meeting invitation from the owner workspaceSchedule from calendar | Partial | Native clients create meeting invitations; web creates timed or all-day Google events with invitees, location and notes. Adding a Meet booking token remains native; visitor booking is separate. |
| Describe an event in one sentence | Have | A field above the new-event form fills in title, times, place and guests from one sentence, on all three surfaces; nothing is saved until Add. One grammar in Swift and TypeScript on one fixture; a sentence it cannot read goes to the notes engine, and the form says so. |
| Forward a mail to calendar@ and add the events it describes | Have | A member forwards a booking or an invitation to calendar@ on the inbound domain; Home proposes each event on the INVITATIONS module with Add and Discard, on all three surfaces. Add writes to the primary Google calendar. The mail body is read once and not kept. Needs INBOUND_EMAIL_DOMAIN, which production does not have yet. |
| Calendar selection, display preferences, timezone/weather, public events, and contacts | Have | Source selection is one owner-wide choice that the Mac, iPhone and web Calendars menu all write, and Upcoming display policy is shared and editable from Settings on all three surfaces. Device-local grid preferences, timezone/weather, and contacts remain native. Web lists and locally toggles the read-only Events, Milestones, Tasks, and Core-computed My availability layers. Web edits all-day dates and chooses This event or All events on a recurring Google event; the Mac adds All future on EventKit calendars, which the browser does not read. |
| Start room, admit / reject guests, and end roomAdmit / reject waiting guests | Have | iOS hosts its owner’s permanent room: start, waiting room, admit and decline, end. Web still explains the native requirement and offers “Join my room” while the room is open, rather than starting one. |
| Move the host between devices and members | Have | The host sees a Host badge on its tile, and so does everyone. Move host… hands the host to another Mac, iPhone or iPad in the call: another of the same member takes it at once; another Envisioning member is asked and, on yes, rejoins as the host, in any room. A connected Mac companion can also take the host; the current Mac drains local transcription and uploads pending text first. When the host leaves or its lease runs out, a connected companion Mac takes host on its own. The room owner keeps room settings and End meeting, and can take the host back. A live phone host is asked to hand over only when it offered the host itself. |
| Guest knock alerts and host wake protectionWaiting-room knock alerts | Have | Mac owns waiting-room sound / Dock alerts and the host wake assertion; in Join mode it still sounds and badges a knock at your own room, but holds no wake assertion. iOS posts a local knock notification while the app is running — there is no push — and holds the screen awake instead of a wake assertion. |
| Account, audio/video, captions, calendar, privacy, and update settingsIn-app settings | Have | Mac has the complete settings area, in either mode. Web has Settings at /settings from the header gear — account and picture, Google Calendar connection, the Gmail and Drive grant, appearance, about, sign out; audio, video and background stay in the in-meeting Settings. Privacy remains available from the site footer. iOS exposes its applicable subset. |
| Team presence — who at Envisioning is around, and call a peer | Have | Members only, never guests. Every client reads the roster and offers Message, Wave, Call, and Join room from a person's context menu; a video mark on the shared avatar shows a live meeting. Agents are messageable but never waved or called. |
| Profile picture — one face per member, drawn everywhere a person is | Have | Members only, never guests: the roster carries the version, the image is a member-gated read, and every surface falls back to the same initials. Uploaded from the Team window on macOS, the Team tab on iOS, and your own row at `/team`. Seeded once from the Google account picture, which an upload replaces. |
| Direct messages between members | Have | Team opens DMs, notes to self and Everyone on all clients. Format message text with bold, italic, strikethrough, inline code, links, lists, quotes, and code blocks; each client renders the same Markdown subset. React to any message, including your own; copy your own text to private Quick Notes for the usual Work triage. Web supports send, older history, visible-tab polling, bounded read receipts, and per-member archive; a new message brings an archived DM back. |
| Interactive questions in agent conversations | Have | An agent can ask a short informational question with two to eight choices in its DM or a thread it belongs to. A single choice submits immediately; people select several options and explicitly submit them. Meet stores one winning human reply and resumes the same Eve thread session. Available in Web, Mac and iOS chats. It does not request approval or authorization. |
| Private group conversations | Have | A DM with more than one other person in it — same kind, same authorization, no name: the people in it are the name. Started from Team on every client, and found there again afterwards. Up to twelve people; past that the answer is Everyone. Not a channel, and not discoverable — you cannot browse to one, only be in one. |
| Channels on the work itself | Have | One conversation on each project and lead, reached by opening the subject in Work — never by making a channel. Unread routes to Work on every client: the Mac launch button, the iOS tab badge and Home card, and Work's Mine pane, which lists subjects with something new first. Web opens the subject conversation from Talk in Work. |
| Projects and leads, with their tasks and issues | Have | Work: Mine, Envisioning Projects, Projects and Leads — a foldable sidebar on Mac and a single work list on iOS, with the same work graph on web. New leads and projects require a Core organization; the Mac, iPhone/iPad and web pickers search Core and can create an organization inline. Create, assign, date, complete and file a task on GitHub; read, comment on, close and file GitHub issues on a linked project. Mine completes in place on every client (a tick on Mac and web, a swipe on iOS) and files on GitHub from the row natively. Team person details on every client also list assigned open tasks and, when GitHub is connected, issues; task rows open in the client task view, and New task starts the usual editor after a searchable project/lead choice. Recently finished work stays available for seven days on all three clients, with a Reopen action for tasks and issues. Overview lists UNOWNED below Mine on all three clients: open tasks and issues on any subject that nobody on Envisioning's side holds. All three clients create and edit supported project/lead fields through the Worker; Core stays the system of record. A member's Claude creates a lead through MCP `task` with `action: "create_lead"`, and Core posts "New Lead Created" in its channel. Web also creates, edits, comments on, closes/reopens and manages metadata for issues. |
| Goals on a project, decisions on any subject | Have | A goal is a title with a status, a target date and an owner on a project; tasks and decisions point at it. A decision is something the team settled on a project, lead, partner or event, written once, with its source: typed, a channel line marked as one, a Claude through MCP, or the meeting notes. Both live in Core. Every client lists them on the subject, picks a goal on the task sheet, marks a channel line as a decision, and finds both in search; the web meeting page records or dismisses what the notes proposed. Meet#261, #262, #278. |
| A queue of decisions waiting on you | Have | An agent puts a question to a member through MCP `ask_decision` — options, a recommendation and a default-by day — when nobody is in the conversation with it, instead of burying it in an issue comment. It is the first row in INBOX on every client, overdue first; one tap on an option answers it, with an optional note, and opening it shows the context and links. The agent reads the answer back through `now` or `ask_decision`. An answer on a subject is recorded as that subject's decision in Core. Past the default-by day a decision shows as overdue; the recommendation is applied only when somebody asks for it. |
| Interaction history on a project or lead | Have | A read-only History pane shows durable Core history — Meet and Granola meetings, notes, calls, emails and web touches — with type, date, people, duration/status and a preview. |
| Every field on a project, lead or partner | Have | A subject's Fields pane draws every field Core's registry lists for the record behind it — the project, the lead, or a partner's organization — and saves only what changed, when you say, as you. Core decides what you may change. Mac and iOS read Core with a device token; the web reads and writes through Meet as the member and holds no Core token. The web edits text, numbers, dates, toggles and choices; relations, lists, countries and industries show read-only there and edit on the Mac, the phone or in Core. An event's fields are its CMS page. |
| Core in search | Have | Search lists each Core entity you can read. On Mac and iOS it opens that entity in Work's Core browser, and Search Core finds records across them. On the web the entity opens on Core's own page, and the palette finds Core records below Docs: a project or lead opens on its Fields in Work, anything else on its Core page. Browsing Core entity by entity stays on Mac and iOS. |
| Keep: client credentials in sealed vaults | Have | Keep holds client credentials in vaults the server cannot read: every value is sealed on the device under keys only the vault's members hold. Mac and iOS open Keep from Work, and a project's menu opens its vault. The web is deliberately without Keep: a browser would have to trust whoever serves its JavaScript with the keys, so a project's Keep vault on the web says to open it on Mac or iPhone and never shows vault material. |
| Issues that read like GitHub's own | Have | Both native clients have labels, assignees, milestones, server-backed filters/sort, pagination, issue details, comments and activity, and metadata editing. iOS uses Foundation markdown with fallback text; Mac has its own richer reading surface. Web reads details/activity and supports issue actions with repository metadata pickers; description text preserves markdown source, while native reading remains richer. |
| Today's work on Home | Have | What is overdue and what is due today, on the Mac launch card and menu bar, on the iOS Home and on the web Home (its Work card), each row opening its subject in Work on the Tasks pane. Decided on the device, so "today" is the day you are in. Hidden when there is nothing. |
| Meet about a project or lead | Have | Start your room from a subject in Work and the meeting is filed under it the moment it opens — notes and tasks land where the conversation is. On the Mac a filed meeting's CRM sidebar opens the subject in Work; the phone's hosting screen owns the session and has no door out. |
| A meeting's trail in its channel | Have | A project or lead channel carries quiet lines the work graph writes: a meeting filed here, ended and how long it ran, notes filed, a task the meeting proposed and somebody accepted. Never unread on their own, never the preview. Web renders these event rows in Talk too. |
| A calendar event knows its project or lead | Have | File any event under a subject from the Mac inspector or the phone's event sheet; the choice is owner-wide. The web event editor names the subject an event is filed on and links to it, but cannot file one. A room started from that event is filed under it, Home and the launch card name it, and Google events arrive filed from the control plane. |
| Docs: the corpus, read and written from Meet | Have | The fifth surface: newsletters, reports, research, notes and everything written from Meet, on the shared shell. Documents on a subject in Work are the contextual slice of the same store. Connecting is one act in Settings → Account. |
| Docs graph view | Have | See up to 5,000 accessible Docs documents in the same graph across Mac, iPhone, iPad, and web. Folders group and color nodes; resolved wikilinks draw connections and pull related nodes closer. Filter groups, pan, zoom, fit visible nodes, and open documents. |
Call and task reading
| Feature | Status | Notes |
|---|---|---|
| Call an available colleague | Have | Call asks an available colleague to open their room, waits up to 45 seconds, and joins through the ordinary admission flow when it opens. When a meeting is already live, the person menu offers Join room directly. |
| Answer an idle-room Call | Have | Native clients offer Open room / Not now; the browser explains the native hosting requirement and can decline. Calls do not enable notes by default on the answering native device; notes can be turned on deliberately. |
| Read a task directly from Mine | Have | Every client opens task details and subject navigation from Mine, with edit and completion actions. iOS also opens the same reader from a subject task list. |
Clients, ops, and platform
| Feature | Status | Notes |
|---|---|---|
| CLI / agent control through `meetctl`CLI / agent meeting control | Have | Same-user local socket for status, host, lobby, media, transcript, and leave commands. |
| Native auto-updateAuto-update (native) | Have | Mac checks the signed update feed; iOS uses App Store / TestFlight distribution. |
| macOS native host app | Have | AppKit Host mode. |
| macOS native join | Have | Same admit contract as the browser. |
| Browser guest | Have | Primary guest path. |
| Windows / Linux native | Don't want | Browser covers guests. |
| iOS / iPad client | Have | SwiftUI Host and Join: start your room, admit at the door, transcribe on device, file the meeting. Screen sharing from iOS is still ahead. |
| Android client | TBD | Browser may be enough. |
| Meeting info panel | Partial | Invite link + room status; no Zoom-style Meeting Info sheet. |
| Webinar / presenter–audience roles | Want | Backlog; do not market webinars until roles and load work exist. |
| Capacity hard limit (~100) | Have | Safety guardrail, not a webinar product. |
| One wire contract for every client | Have | Every shape the server sends or accepts is written once, as a schema. The web reads it as types, and the Mac, iPhone and watch read and write Swift generated from it. A field that changes fails the build, not the phone. |
| Notetakers attend as declared meeting participants | Partial | The listening slice works on every client; the row stays partial for the speaking half. A link-joining recording notetaker declares itself, waits for owner admission, is marked across the room, can be refused per room, and leaves a transcript consent line. Speaking agents, their room-side worker, and live MCP tools remain planned. |
| Website content from a Claude | Have | A member's Claude reads and writes envisioning.com content — events, and the other CMS entities the registry publishes — through Meet, as the member, with a cms-editor PAT. On the web, a member with that grant also edits an event's CMS record from the Calendar and Work (meet#530). The same tool lists and reads organizations, contacts, interactions, projects and leads, creates and edits all five (a note is an interaction), and deletes an organization only when no record points at it, as the member. |
| An agent starts a meeting | Have | `start_meeting` schedules the meeting in the member's own room and asks their devices to open it: the ask rides `rings` with a 45-second life, and the member answers Open room or Not now. The Worker never hosts and nothing opens a microphone on its own, so an unanswered ask leaves the meeting on the calendar and the room shut. A meeting opened this way transcribes, because it is convened; a walk-up from Call does not. |
| Agent activity in Admin | Have | Web Admin › Agents shows the last 30 days of handoffs, runtime acceptance or refusal, final replies observed by Meet, and watchdog reset outcomes. It does not show work inside an agent runtime or model costs. |
By surface
macOS HostAuthoritative host: starts rooms, admits guests, and runs local transcription.
macOS JoinThe Mac app in Join mode: joins another room as a guest through the same waiting-room and media contract as the web. Calendar, Work, Team, Docs and Settings are the app's windows, open in either mode; Home's launch card, hosting and moderation are Host mode only.
WebZero-install guest, booking, and signed-in workspace; live hosting still hands to a native owner client.
iOS / iPadOSHosts, admits, and transcribes on device, alongside joining and owner scheduling.
WorksPartialHandoffNot available
Entry, identity, and room access
| Capability | macOS Host | macOS Join | Web | iOS / iPadOS | Notes |
|---|---|---|---|---|---|
| Open a permanent room link and see room / invite context | Works | Works | Works | Works | Bare room links stay opaque; booking tokens can add title, time, and subject. |
| Book a time from a room | Not available | Handoff | Works | Not available | The Mac in Join mode opens the public web booking page from Book a time; Host mode has no such button. The phone joins; booking is a web door. |
| Enter guest name and email | Works | Works | Works | Works | Human guests do not need an account and provide email; a declared notetaker omits email and joins through the same owner-admission path. |
| Before-you-join camera and microphone check | Works | Works | Works | Works | Each surface uses its platform-native permission and device flow. |
| Ask to join, waiting-room status, cancel, and reconnect | Works | Works | Works | Works | No LiveKit media token is issued until the owner admits the request. Every client can withdraw the knock and lands back on Prejoin. |
| Verified Envisioning owner sign-in | Works | Works | Works | Works | Google Workspace identity is required for owner actions. On the Mac sign-in belongs to the app, not the mode: Join mode fills in the signed-in owner's own name and email when you call a colleague. |
| Host presence / lease protection | Works | Works | Works | Works | The control plane gates admission and token exchange on the owner device lease. |
Live audio, video, and stage
| Capability | macOS Host | macOS Join | Web | iOS / iPadOS | Notes |
|---|---|---|---|---|---|
| Mute and unmute microphone | Works | Works | Works | Works | Available before joining and during the meeting. |
| Start and stop camera | Works | Works | Works | Works | Camera-off tiles retain participant identity across clients. |
| Choose camera, microphone, and output device | Works | Works | Works | Partial | Every surface picks camera and microphone before joining and from the same chevron beside mute and camera in the call. iOS output stays with the system audio-route picker. |
| Spatial audio: voices from where the tiles are | Works | Works | Works | Works | Meet places each remote microphone on an arc in front of you, where that person's tile is on the stage, and moves the voice when the tile moves. HRTF on headphones, plain panning on speakers. On by default, with a switch on every surface. Screen-share audio stays centred. |
| Participant video grid, participant count, and People panel | Works | Works | Works | Works | Tuned for small rooms with a hard ~100-participant guardrail. People lists who is in the meeting with microphone, camera, and screen-share state; host actions stay native. |
| Publish a screen share | Works | Works | Works | Not available | Mac uses a display / window picker; browsers also expose their native tab option. |
| Watch and identify a remote screen share | Works | Works | Works | Works | Shared tiles are named and visually distinguished from camera video. |
| Stop your own screen share | Works | Works | Works | Not available | iOS does not publish screen shares. |
| Host stops another participant’s screen share | Works | Not available | Not available | Works | Host surfaces only; it stops the active share but does not ban future sharing. |
| Host mutes a participant, or everyone else | Works | Not available | Not available | Works | Mac and iOS owners. Closes microphones and opens none — unmuting stays with the person muted, on every surface. |
| Told who muted you | Works | Works | Works | Works | The SFU mute is what silences the mic; the notice is what stops it reading as broken hardware. |
| Host removes a participant mid-call | Works | Not available | Not available | Works | Mac and iOS owners, with confirmation. Disconnects them and spends the admission, so re-entry is a fresh knock. |
| Told you were removed, not dropped | Works | Works | Works | Works | All clients distinguish removal from connection loss. iOS observes the session phase and shows an ended receipt with the reason and a way to join again. |
| Background blur and branded background effects | Works | Works | Works | Works | Mac, web, and iOS have blur, the same small set of Block themes, and your own picture (scaled down and re-encoded on the device, with no metadata carried over; 1.7.8). Segmentation runs on the device — the room sees only composited frames. |
| Hide self view | Works | Works | Works | Works | Hiding the preview does not stop publishing the camera. |
| Connection quality and reconnect handling | Works | Works | Works | Works | iOS shows per-person quality and an explicit reconnecting state in the participants panel. |
| Leave the meeting or end it for everyone | Works | Works | Works | Works | Guests and owner companions leave their own session. Mac and iOS hosts can end a personal room for everyone; ending the shared internal room for everyone is a separate confirmed action. |
In-meeting collaboration and captions
| Capability | macOS Host | macOS Join | Web | iOS / iPadOS | Notes |
|---|---|---|---|---|---|
| Room text chat | Works | Works | Works | Works | One room-wide text channel; file attachments and private DMs are not offered. |
| Embedded preview for a pasted link | Works | Works | Works | Works | The Worker reads the page and answers text; no client ever fetches a pasted link, so a site never learns who was in the room. In a meeting the read is authorized by the meeting itself, because a guest has no account. The page’s picture comes through the Worker too, on a signed address — without that signature the route would be an open image proxy. |
| Ephemeral emoji reactions | Works | Works | Works | Works | Six reactions float in the room and are not stored. |
| Reactions on a chat message | Works | Works | Works | Works | The same six emoji, on a message rather than on the room. Reliable rather than lossy, because a tally has to still be right in ten minutes — but stored nowhere: they last as long as the chat does, which is the call, and never reach the record or the summary. |
| Live captions from the owner device | Works | Works | Works | Works | Speech-to-text runs locally on whichever owner device is the host; only caption text is shared. |
| Show and hide the live transcript / captions view | Works | Works | Works | Works | iOS keeps the caption strip on the stage and opens the full transcript from More. |
| Finalized transcript and AI summary delivery | Works | Works | Works | Works | Read in Meet once finalized, by participants with artifact access; consent-filtered. Share a link to the meeting page (it grants nothing), copy the text, or download .md or .txt: on the web from the meeting page, on the Mac and iPhone from the live transcript. Nothing is emailed and nothing is recorded. |
| Meeting duration and ended receipt | Works | Works | Works | Works | Joining clients explain when the owner ended the room or the session was lost. |
Owner workspace, scheduling, and operations
| Capability | macOS Host | macOS Join | Web | iOS / iPadOS | Notes |
|---|---|---|---|---|---|
| Home / own room status / copy room link | Works | Not available | Works | Works | Home is today on web too — the clock, then the modules in the order you chose in Settings → Home, among them your room with its link, a copy button and Schedule…, with Home / Calendar / Work / Team / Docs navigation. The member room/Meet flow belongs to Home; `/join` remains a direct public room door. On the Mac the launch card is Host mode only. Starting the room is native (see Start room, admit / reject guests). |
| Connect Google Calendar and subscribed feeds, view the Upcoming agenda | Works | Works | Partial | Works | Account attachments, Google calendar selection, and subscribed-feed selection use the shared control-plane contract; refresh tokens stay encrypted there, not on the device. Home Upcoming includes selected Google calendars and subscribed feeds on Mac, iOS, and web; events marked Hide from Next are omitted there and from alerts, while remaining visible in Calendar. Web reads the Google week or month at `/calendar`, shows explicit travel duration metadata when present, and can start the Google connect flow. Its Calendars menu turns each account, Google calendar and the subscribed feeds on or off in the same owner-wide choice the Mac and iPhone read. It can create timed events, edit and delete writable ones, and answer an invitation. EventKit calendars are read on the Mac and iPhone only. |
| Native Calendar views (Google + EventKit + subscriptions) | Works | Works | Partial | Partial | Mac has the full window/sidebar and direct grid move/resize; iOS has day/2-day/3-day/week/month/agenda, source management, and deliberate long-press movement, while resize stays in the editor. Upcoming rows show explicit travel duration metadata when supplied; Meet never estimates routes. Envisioning Internal remains writable shared context but is not a move source or destination; Duplicate is the copy path. Web shows one Google week or one month at a time, with no day or multi-day grid and no drag. It adds read-only Events, Milestones, Tasks, and Core-computed My availability layers, which it toggles only in the browser. |
| Create a meeting invitation from the owner workspace | Works | Works | Partial | Works | Native clients create meeting invitations; web creates timed or all-day Google events with invitees, location and notes. Adding a Meet booking token remains native; visitor booking is separate. |
| Describe an event in one sentence | Works | Works | Works | Works | A field above the new-event form fills in title, times, place and guests from one sentence, on all three surfaces; nothing is saved until Add. One grammar in Swift and TypeScript on one fixture; a sentence it cannot read goes to the notes engine, and the form says so. |
| Forward a mail to calendar@ and add the events it describes | Works | Not available | Works | Works | A member forwards a booking or an invitation to calendar@ on the inbound domain; Home proposes each event on the INVITATIONS module with Add and Discard, on all three surfaces. Add writes to the primary Google calendar. The mail body is read once and not kept. Needs INBOUND_EMAIL_DOMAIN, which production does not have yet. |
| Calendar selection, display preferences, timezone/weather, public events, and contacts | Works | Works | Partial | Works | Source selection is one owner-wide choice that the Mac, iPhone and web Calendars menu all write, and Upcoming display policy is shared and editable from Settings on all three surfaces. Device-local grid preferences, timezone/weather, and contacts remain native. Web lists and locally toggles the read-only Events, Milestones, Tasks, and Core-computed My availability layers. Web edits all-day dates and chooses This event or All events on a recurring Google event; the Mac adds All future on EventKit calendars, which the browser does not read. |
| Start room, admit / reject guests, and end room | Works | Not available | Handoff | Works | iOS hosts its owner’s permanent room: start, waiting room, admit and decline, end. Web still explains the native requirement and offers “Join my room” while the room is open, rather than starting one. |
| Move the host between devices and members | Works | Works | Not available | Works | The host sees a Host badge on its tile, and so does everyone. Move host… hands the host to another Mac, iPhone or iPad in the call: another of the same member takes it at once; another Envisioning member is asked and, on yes, rejoins as the host, in any room. A connected Mac companion can also take the host; the current Mac drains local transcription and uploads pending text first. When the host leaves or its lease runs out, a connected companion Mac takes host on its own. The room owner keeps room settings and End meeting, and can take the host back. A live phone host is asked to hand over only when it offered the host itself. |
| Guest knock alerts and host wake protection | Works | Partial | Not available | Partial | Mac owns waiting-room sound / Dock alerts and the host wake assertion; in Join mode it still sounds and badges a knock at your own room, but holds no wake assertion. iOS posts a local knock notification while the app is running — there is no push — and holds the screen awake instead of a wake assertion. |
| Account, audio/video, captions, calendar, privacy, and update settings | Works | Works | Partial | Partial | Mac has the complete settings area, in either mode. Web has Settings at /settings from the header gear — account and picture, Google Calendar connection, the Gmail and Drive grant, appearance, about, sign out; audio, video and background stay in the in-meeting Settings. Privacy remains available from the site footer. iOS exposes its applicable subset. |
| Team presence — who at Envisioning is around, and call a peer | Works | Works | Works | Works | Members only, never guests. Every client reads the roster and offers Message, Wave, Call, and Join room from a person's context menu; a video mark on the shared avatar shows a live meeting. Agents are messageable but never waved or called. |
| Profile picture — one face per member, drawn everywhere a person is | Works | Works | Works | Works | Members only, never guests: the roster carries the version, the image is a member-gated read, and every surface falls back to the same initials. Uploaded from the Team window on macOS, the Team tab on iOS, and your own row at `/team`. Seeded once from the Google account picture, which an upload replaces. |
| Direct messages between members | Works | Works | Works | Works | Team opens DMs, notes to self and Everyone on all clients. Format message text with bold, italic, strikethrough, inline code, links, lists, quotes, and code blocks; each client renders the same Markdown subset. React to any message, including your own; copy your own text to private Quick Notes for the usual Work triage. Web supports send, older history, visible-tab polling, bounded read receipts, and per-member archive; a new message brings an archived DM back. |
| Interactive questions in agent conversations | Works | Works | Works | Works | An agent can ask a short informational question with two to eight choices in its DM or a thread it belongs to. A single choice submits immediately; people select several options and explicitly submit them. Meet stores one winning human reply and resumes the same Eve thread session. Available in Web, Mac and iOS chats. It does not request approval or authorization. |
| Private group conversations | Works | Works | Works | Works | A DM with more than one other person in it — same kind, same authorization, no name: the people in it are the name. Started from Team on every client, and found there again afterwards. Up to twelve people; past that the answer is Everyone. Not a channel, and not discoverable — you cannot browse to one, only be in one. |
| Channels on the work itself | Works | Works | Works | Works | One conversation on each project and lead, reached by opening the subject in Work — never by making a channel. Unread routes to Work on every client: the Mac launch button, the iOS tab badge and Home card, and Work's Mine pane, which lists subjects with something new first. Web opens the subject conversation from Talk in Work. |
| Projects and leads, with their tasks and issues | Works | Works | Works | Works | Work: Mine, Envisioning Projects, Projects and Leads — a foldable sidebar on Mac and a single work list on iOS, with the same work graph on web. New leads and projects require a Core organization; the Mac, iPhone/iPad and web pickers search Core and can create an organization inline. Create, assign, date, complete and file a task on GitHub; read, comment on, close and file GitHub issues on a linked project. Mine completes in place on every client (a tick on Mac and web, a swipe on iOS) and files on GitHub from the row natively. Team person details on every client also list assigned open tasks and, when GitHub is connected, issues; task rows open in the client task view, and New task starts the usual editor after a searchable project/lead choice. Recently finished work stays available for seven days on all three clients, with a Reopen action for tasks and issues. Overview lists UNOWNED below Mine on all three clients: open tasks and issues on any subject that nobody on Envisioning's side holds. All three clients create and edit supported project/lead fields through the Worker; Core stays the system of record. A member's Claude creates a lead through MCP `task` with `action: "create_lead"`, and Core posts "New Lead Created" in its channel. Web also creates, edits, comments on, closes/reopens and manages metadata for issues. |
| Goals on a project, decisions on any subject | Works | Works | Works | Works | A goal is a title with a status, a target date and an owner on a project; tasks and decisions point at it. A decision is something the team settled on a project, lead, partner or event, written once, with its source: typed, a channel line marked as one, a Claude through MCP, or the meeting notes. Both live in Core. Every client lists them on the subject, picks a goal on the task sheet, marks a channel line as a decision, and finds both in search; the web meeting page records or dismisses what the notes proposed. Meet#261, #262, #278. |
| A queue of decisions waiting on you | Works | Works | Works | Works | An agent puts a question to a member through MCP `ask_decision` — options, a recommendation and a default-by day — when nobody is in the conversation with it, instead of burying it in an issue comment. It is the first row in INBOX on every client, overdue first; one tap on an option answers it, with an optional note, and opening it shows the context and links. The agent reads the answer back through `now` or `ask_decision`. An answer on a subject is recorded as that subject's decision in Core. Past the default-by day a decision shows as overdue; the recommendation is applied only when somebody asks for it. |
| Interaction history on a project or lead | Works | Works | Works | Works | A read-only History pane shows durable Core history — Meet and Granola meetings, notes, calls, emails and web touches — with type, date, people, duration/status and a preview. |
| Every field on a project, lead or partner | Works | Works | Works | Works | A subject's Fields pane draws every field Core's registry lists for the record behind it — the project, the lead, or a partner's organization — and saves only what changed, when you say, as you. Core decides what you may change. Mac and iOS read Core with a device token; the web reads and writes through Meet as the member and holds no Core token. The web edits text, numbers, dates, toggles and choices; relations, lists, countries and industries show read-only there and edit on the Mac, the phone or in Core. An event's fields are its CMS page. |
| Core in search | Works | Works | Works | Works | Search lists each Core entity you can read. On Mac and iOS it opens that entity in Work's Core browser, and Search Core finds records across them. On the web the entity opens on Core's own page, and the palette finds Core records below Docs: a project or lead opens on its Fields in Work, anything else on its Core page. Browsing Core entity by entity stays on Mac and iOS. |
| Keep: client credentials in sealed vaults | Works | Works | Handoff | Works | Keep holds client credentials in vaults the server cannot read: every value is sealed on the device under keys only the vault's members hold. Mac and iOS open Keep from Work, and a project's menu opens its vault. The web is deliberately without Keep: a browser would have to trust whoever serves its JavaScript with the keys, so a project's Keep vault on the web says to open it on Mac or iPhone and never shows vault material. |
| Issues that read like GitHub's own | Works | Works | Partial | Works | Both native clients have labels, assignees, milestones, server-backed filters/sort, pagination, issue details, comments and activity, and metadata editing. iOS uses Foundation markdown with fallback text; Mac has its own richer reading surface. Web reads details/activity and supports issue actions with repository metadata pickers; description text preserves markdown source, while native reading remains richer. |
| Today's work on Home | Works | Not available | Works | Works | What is overdue and what is due today, on the Mac launch card and menu bar, on the iOS Home and on the web Home (its Work card), each row opening its subject in Work on the Tasks pane. Decided on the device, so "today" is the day you are in. Hidden when there is nothing. |
| Meet about a project or lead | Works | Not available | Not available | Works | Start your room from a subject in Work and the meeting is filed under it the moment it opens — notes and tasks land where the conversation is. On the Mac a filed meeting's CRM sidebar opens the subject in Work; the phone's hosting screen owns the session and has no door out. |
| A meeting's trail in its channel | Works | Works | Works | Works | A project or lead channel carries quiet lines the work graph writes: a meeting filed here, ended and how long it ran, notes filed, a task the meeting proposed and somebody accepted. Never unread on their own, never the preview. Web renders these event rows in Talk too. |
| A calendar event knows its project or lead | Works | Works | Partial | Works | File any event under a subject from the Mac inspector or the phone's event sheet; the choice is owner-wide. The web event editor names the subject an event is filed on and links to it, but cannot file one. A room started from that event is filed under it, Home and the launch card name it, and Google events arrive filed from the control plane. |
| Docs: the corpus, read and written from Meet | Works | Works | Works | Works | The fifth surface: newsletters, reports, research, notes and everything written from Meet, on the shared shell. Documents on a subject in Work are the contextual slice of the same store. Connecting is one act in Settings → Account. |
| Docs graph view | Works | Works | Works | Works | See up to 5,000 accessible Docs documents in the same graph across Mac, iPhone, iPad, and web. Folders group and color nodes; resolved wikilinks draw connections and pull related nodes closer. Filter groups, pan, zoom, fit visible nodes, and open documents. |
Call and task reading
| Capability | macOS Host | macOS Join | Web | iOS / iPadOS | Notes |
|---|---|---|---|---|---|
| Call an available colleague | Works | Works | Works | Works | Call asks an available colleague to open their room, waits up to 45 seconds, and joins through the ordinary admission flow when it opens. When a meeting is already live, the person menu offers Join room directly. |
| Answer an idle-room Call | Works | Not available | Handoff | Works | Native clients offer Open room / Not now; the browser explains the native hosting requirement and can decline. Calls do not enable notes by default on the answering native device; notes can be turned on deliberately. |
| Read a task directly from Mine | Works | Works | Works | Works | Every client opens task details and subject navigation from Mine, with edit and completion actions. iOS also opens the same reader from a subject task list. |
Clients, ops, and platform
| Capability | macOS Host | macOS Join | Web | iOS / iPadOS | Notes |
|---|---|---|---|---|---|
| CLI / agent control through `meetctl` | Works | Not available | Not available | Not available | Same-user local socket for status, host, lobby, media, transcript, and leave commands. |
| Native auto-update | Works | Works | Not available | Not available | Mac checks the signed update feed; iOS uses App Store / TestFlight distribution. |
| Notetakers attend as declared meeting participants | Works | Works | Works | Works | The listening slice works on every client; the row stays partial for the speaking half. A link-joining recording notetaker declares itself, waits for owner admission, is marked across the room, can be refused per room, and leaves a transcript consent line. Speaking agents, their room-side worker, and live MCP tools remain planned. |
| Agent activity in Admin | Not available | Not available | Works | Not available | Web Admin › Agents shows the last 30 days of handoffs, runtime acceptance or refusal, final replies observed by Meet, and watchdog reset outcomes. It does not show work inside an agent runtime or model costs. |
How it fits together
Every service Starlings runs on, what each one stores, and what data moves between them, down to each bucket and queue.
In the meeting
The devices a person is looking at.
- The hosting device
- One owner device opens the room, admits guests, and writes the transcript on its own hardware.
- Mac app
- AppKit. Host and Join, local speech-to-text, the five windows, and the
meetctlsocket. - iPhone and iPad app
- SwiftUI. Hosts, admits and transcribes on device, with the Live Activity and widgets beside it.
- Apple Watch
- A companion to the phone. Reads
agenda.jsonout of the app group; never a token. - Chrome extension
- Tells the Mac who is speaking in a call Meet did not host, so ambient capture has names.
- The browser
- Guests join at
/room/<slug>with no account; a signed-in member gets the five surfaces too. It never hosts.
Media
Audio and video, end to end, never recorded.
- LiveKit CloudLiveKit
- Carries audio, video and screen between the people in the room. Nothing is recorded, and no stream is stored.
The control plane
One Cloudflare Worker. Text only — it never sees a stream.
- Meet control planeCloudflare
- One Worker: the door, the routes, and the SPA in front of them. It holds text and never media.
- Room
- A Durable Object per room: who knocked, who was admitted, consent, the transcript text, the summary.
- Threads
- A Durable Object per conversation: messages, reactions, mentions, and the attachments' keys.
- Quick Notes
- A Durable Object per member: the notes taken in a hurry, from any surface.
- MCP door
- A member's Claude calls Meet's tools as that member, under a grant they issued.
- Static Assets
- The built web app, served by the same Worker. The Worker runs first, so every route is checked before the app answers.
- Rate limiting
- Seven per-minute burst guards: the knock, presence, feedback, error reports, link previews, the agent door and MCP.
- Cron trigger
- Every five minutes: the agent watchdog, the calendar sweep, favorites and GitHub sync, pruning, and the daily backup plan.
- Workers Logs
- One request in a hundred is logged. A failure is also counted in D1, and the count is what mails a person.
- Workers Builds
- Every push to main builds the web app and deploys the Worker, with its D1 migrations.
What it keeps
Room state, the words, the ledger, the files.
- Meet's own storeCloudflare
- The ledger, the tokens, the files and the job queue behind the Worker. Text and files — no media bucket.
- D1
meet-usage - The usage ledger, the people, their roles and their work preferences.
- KV namespaces
CALENDAR_TOKENS: the Google Calendar refresh tokens, one per owner who attached a calendar.CORE_CACHE: sixty seconds of the Core reads the board and the feed fan out to.- R2 buckets
- Four buckets:
meet-downloadsfor release zips,meet-avatars,meet-attachmentsfor the files in a conversation, andmeet-backups, the daily text backup of every Durable Object, kept in the EU for 30 days. No audio, no video. - Queue
meet-artifact-jobs - Finalization, CRM filing and the nightly backups, one consumer at a time. Three failures and a job waits on
meet-artifact-jobs-deadfor an admin. - Queue
meet-import-jobs - The Granola, GitHub and Slack imports, on their own queue so a bulk import never holds up a meeting's notes. Same policy, and its own dead queue,
meet-import-jobs-dead.
The rest of the company
Services Meet reads and writes on a member's behalf.
- CoreEnvisioning
- The CRM. Subjects, tasks and interactions, read and written over HMAC — a meeting is filed on the project it belongs to.
- DocsEnvisioning
- Where documents and their comments live. Every read goes through Meet's Worker; the browser never holds a Docs token.
- D1
docsCloudflare - Every document, its comments, who it is shared with, and the signatures on it.
- R2
docs-filesCloudflare - The images in a document, a saved link's preview, and a signature's image.
- The Docs WorkerCloudflare
- Static Assets for its own app. An hourly Cron that mirrors documents out to the surfaces that need them as files. Rate limiting on claiming a shared link and on signing. Workers Logs, with traces.
- KeepEnvisioning
- Where client credentials live. Meet reads what a member may see, over a service binding.
- The Keep WorkerCloudflare
- Static Assets for its own app. Rate limiting on revealing an item, 300 a minute. Workers Logs, with traces.
- D1
keepCloudflare - Every vault today: wrapped keys and sealed items, in Keep's own database.
- SupabaseSupabase
- A vault kept in Postgres as sealed rows. Supabase Vault adds nothing here; the item is already sealed on the device.Planned — envisioning/keep#1
- VercelVercel
- A vault kept in Vercel Marketplace storage, Neon Postgres or Blob, as sealed rows.Planned — envisioning/keep#1
- Google WorkspaceGoogle
- Both halves of Google: who is one of us at sign-in, and the owner's day once they attach a calendar.
- The models
- Where the writing happens: the notes after a meeting, a forwarded mail read into events, suggested tasks and filing.
- Workers AICloudflare
- The small models on the same account: the summary a meeting ends with, and the tasks it suggests from what was said.
- Vercel AI GatewayVercel
- One door, for the decision model that suggests where an imported Granola note should be filed.
- AgentsVercel
- Peers with no device. Each is one row in the roster; a hand-off is signed, and an unanswered one is reset every five minutes.
- Connectors
- Every outside source that writes meetings into Meet. One card each on
/admin/connectors; the next one is a card, not a page. - GitHubGitHub
- The Work board is issue labels on
envisioning/meet; the connector maps repositories to subjects. - SlackSlack
- Channel history read into the subject's channel by a paced job chain.
- BeeperBeeper
- Chat from every network in one client. Two ways in: straight into the subject's channel, and through Core's Mac helper, which syncs it too.
- GranolaGranola
- Notes from calls Meet did not host. Two ways in: Meet's own bridge on the webhook, and Core's Mac helper, which syncs them too.
- TurnstileCloudflare
- The bot check in front of the routes anyone may POST without signing in. Its keys are the switch; a native knock skips the widget.
- Cloudflare Email RoutingCloudflare
- Mail to a subject's address, or to
calendar@, handed to the Worker as one message from the member who sent it. The address exists once a zone is named. - The open web
- The page behind a link somebody pasted, fetched once so the message can show what it points at.
- A peer Meet
- Another organization's Meet: its people and agents reach ours through the door a member's Claude already uses, per shared subject, and neither company's conversations leave the Meet that holds them. Designed, not built.
- PostmarkPostmark
- Outbound mail — invitations and the notices a guest gets — sent from
contact@envisioning.com.
What runs between them
- The hosting device ↔ LiveKit CloudAudio, video and screen · WebRTCNever: A recording. Nothing is written to disk, here or anywhere.
- The browser ↔ LiveKit CloudAudio, video and screen · WebRTCNever: A recording, and never a stream before the owner has admitted you.
- The hosting device ↔ Meet control planeTranscript text, summaries, admissions and room state · HTTPSNever: Audio, video, or the screen. The words leave; the sound does not.
- The browser ↔ Meet control planeThe knock, admission status, chat, and every workspace read · WebSocket
- Meet control plane → LiveKit CloudA media token, minted only once the owner has admitted the guest · HTTPSNever: Media. No stream passes through the Worker.
- Meet control plane ↔ Meet's own storeRoom state, the words, the ledger, the files, the jobs · Cloudflare binding
- Meet control plane ↔ CoreThe meeting, its notes and its tasks, filed on a subject · HTTPS
- Meet control plane ↔ DocsDocuments and comments, on the member's behalf · Cloudflare bindingNever: A Docs token into the browser. The Worker keeps its own, per owner.
- Meet control plane ↔ Google WorkspaceThe owner's day, and the meetings scheduled from Meet · HTTPS
- Connectors ↔ Meet control planeMeetings from outside sources — a webhook in, a paced job pulling history · HTTPS
- Meet control plane ↔ The modelsTranscript text to write the notes from, and a mail to read into events · HTTPSNever: Audio. A model reads the words the device wrote, never the sound.
- Agents ↔ Meet control planeA signed hand-off out, the agent's answer back · HTTPSNever: A seat in the room. An agent has no device and no media.
- Chrome extension → Mac appWho is speaking in a call Meet did not host · On the device
- Apple Watch → iPhone and iPad app
agenda.json, out of the shared app group · On the deviceNever: A token. The watch holds no credential. - Mac app ↔ RoomThe outbox: transcript segments, idempotent by segment UUID · HTTPSNever: A tear-down of media when it fails. The room outlives the outbox.
- iPhone and iPad app ↔ RoomThe same outbox, from the phone when the phone is the host · HTTPS
- The browser ↔ ThreadsMessages, reactions and mentions, live · WebSocket
- The browser ↔ Quick NotesA note taken in a hurry, from whichever surface is open · HTTPS
- Room → Queue
meet-artifact-jobsA finalization job, once the meeting ends · Queue - Queue
meet-artifact-jobs→ CoreThe filed interaction, its tasks, and the subject it belongs to · HTTPS - Queue
meet-artifact-jobs↔ Workers AIA transcript to read, and the summary and tasks it comes back with · Cloudflare binding - Beeper → Meet control planeChat from every network, into the channel of the subject it is about · HTTPS
- Beeper → CoreThe conversations Core's Mac helper syncs, on their way to a subject · HTTPS
- Granola → CoreThe same notes, synced by Core's Mac helper as well · HTTPS
- Granola → Queue
meet-import-jobsA note from a call Meet did not host, on its webhook · HTTPS - Core → ThreadsGitHub events on a project — issues, pull requests, releases — into its channel · HTTPS
- Meet control plane ↔ GitHubThe Work board's issues and their
agent:*labels · HTTPS - Meet control plane → SlackChannel history, paced into the subject's channel · HTTPS
- Meet control plane ↔ Vercel AI GatewayWhich kind, which subject — the suggested filing for an imported note · HTTPSNever: A decision. The answer is drawn as a pre-filled control and never written on its own.
- The browser ↔ Google WorkspaceSign-in with the Workspace account that makes somebody one of us · HTTPS
- The hosting device ↔ Google WorkspaceThe same sign-in, natively, and the calendar the owner attached · HTTPS
- The browser ↔ TurnstileA bot check before a knock a stranger may send · HTTPS
- Meet control plane → TurnstileThe token from that check, verified before the knock is taken · HTTPS
- Cloudflare Email Routing → Meet control planeA forwarded mail, as one message from the member who sent it · HTTPS
- Meet control plane ↔ The open webOne fetch of a pasted link, to show what it points at · HTTPS
- A peer Meet ↔ MCP doorAn organization, reading and writing the subjects it shares with us · HTTPSNever: More than the shared subject. A peer is a third principal on one door, not a new one.
- Meet control plane ↔ KeepThe credentials a member may see · Cloudflare binding
- Meet control plane → PostmarkInvitations and the notices a guest gets · HTTPS
- Mac app → R2 bucketsA notarized release zip, on the updater's check · HTTPS
Surface snapshot 2026-10-01. Intent statuses are not a build tracker. packages/contracts/src/capabilities.ts.