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.
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.
-
01
Pick a window
The host panel lists the windows open on your Mac. Choose one. That window is the whole stream.
-
02
Draw the rules
Drag rectangles over what should be hidden or untouchable, and choose which shortcuts are off-limits.
-
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.