PartyPortal
Early prototype · macOS · MIT

A link to one window.

Share a single window of your Mac with someone's browser. They see only that window and can use it within the rules you set. Open source. A direct connection is free.

One window travels as a link A Mac desktop with three windows. One is outlined and connected by a link to a browser and a phone, which show only that window. A masked area is hatched on the Mac and painted solid for the guest. The window's close button is blocked. https://…/#t=…
On your Mac you pick one window, hatch out what is private and block what is off-limits. Everything else on the screen is never captured. In their browser the guest gets that window and nothing else. Masked areas arrive already painted over.

For agents and developers

Your agent can hand you the window.

A coding agent running on your Mac builds the app, launches it, and then needs a human to look. With one command it starts a share and gets a URL back. You open it on your phone and poke the real thing: taps, drags and two-finger scroll all work on the guest page.

The link shows that one window. Not your editor, not your terminal, not the rest of the desktop.

Add --view-only when the guest should watch but not touch.

partyportal --window "Simulator" \
  --public --print-link --no-open
{"local":"http://127.0.0.1:7374/#t=…",
 "type":"link",
 "url":"https://….trycloudflare.com/#t=…",
 "window":"Simulator"}

One JSON line on stdout, as soon as the public link is up. The journal goes to stderr.


How it works

Pick, fence off, send.

  1. 01

    Pick a window

    The host panel lists the windows open on your Mac. Choose one. That window is the whole stream.

  2. 02

    Draw the rules

    Drag rectangles over what should be hidden or untouchable, and choose which shortcuts are off-limits.

  3. 03

    Send the link

    The guest opens it in a browser. Nothing to install, no account. You can cut them off with one button.


The rules

What the guest cannot do.

Every rule is enforced on your Mac, not in the guest's browser, so rewriting the page changes nothing.

  • See outside the window Only that window is captured. Other windows, the desktop and the menu bar are never in the stream.
  • See what you masked Masks are painted over on your Mac before the video is encoded. Those pixels never leave it.
  • Click where you said no A mask can also swallow clicks: the button is visible, or not, but pressing it does nothing.
  • Close, minimise, resize or move it The window buttons and edges do not take the guest's clicks, and a window that moved is put back.
  • Leave the window ⌘Tab, Mission Control and Spotlight are always refused. Input flows only while that window is in front.
  • Use shortcuts you block ⌘Q, ⌘W and friends are blocked by default. Add your own, or refuse every ⌘ combination.

These are rules on input, not a sandbox. What the guest does inside the window with the keys and clicks you allow is up to them.


Transport

Straight from your Mac to their browser.

Video, the app's sound and the guest's input travel peer to peer over UDP (WebRTC) whenever the two networks allow it. If they do not, PartyPortal falls back to a tunnel on its own and says so on screen.

  • 13 msAverage delay of a frame behind real time at 8 Mbps, measured on one network.
  • H.264 + OpusHardware-encoded video and the shared app's audio. Silence is not sent.
  • FreeA direct connection costs nobody anything. A relay for strict NATs is planned as the paid part.

For friends

One computer. Take turns.

Remember when there was one PC and everyone waited for their go? Send a friend the link to your game window and let them play on your machine while you watch.

Not shipped yet: spectators, and passing control around between several guests. Today it is one guest at a time. Those are next.


Install

Build it from source.

There are no downloads yet. You need Xcode's command line tools; the script builds the app and puts it in ~/Applications.

git clone https://github.com/inchidev/partyportal
cd partyportal
./scripts/build-app.sh
open ~/Applications/PartyPortal.app

On first run macOS asks for two permissions: Screen Recording, to show the window, and Accessibility, so the guest's mouse and keyboard can reach it.

Status
Early prototype
Host
macOS 14 or later. Tested on Apple Silicon.
Guest
A recent Chrome, Edge or Safari. Phones too.
License
MIT

Known gaps

  • One guest at a time.
  • Menus and dialogs of the shared app are separate windows, so the guest cannot see them.
  • No Windows host yet.