Their screen,
at the resolution it actually is.
Most tools shrink your screen before they encode it. Peerglass doesn't: up to four viewers it sends your display at its native resolution, straight from your browser to theirs. Send a link, and anyone watches in theirs. No install, no account, nothing stored.
Sharing needs a desktop browser. Watching works anywhere.
Built for watching a coding agent from your phone.
You're live
peerglass.app/v/h4gzd8er
Copy
Any camera. No app, no account.
PASS auth/token.spec.ts PASS auth/session.spec.ts FAIL auth/refresh.spec.ts ● refresh() rotates the token - Expected "rt_9f3c1a" + Received "rt_9f3c1a " at refresh.spec.ts:41:22
A stack trace you have to squint at
is not a shared screen.
The line number dissolves because it was thrown away before the encoder ever saw it: most tools downscale your screen to a fixed size first, so a 1440p editor arrives as 1080p and every letterform is resampled. Peerglass puts no resolution constraint on capture — peer-to-peer, the encoder gets the grid your display actually has. And when the network tightens it spends frames rather than pixels, so the picture goes stale instead of soft. Text survives. Motion is what gives.
2560×1440 → 1792×1008 → back · drawn live, in your browser
2560×1440 · untouched
A live demonstration of resampling, not a capture and not a claim about
any particular product: the left panel is the same text genuinely
downscaled and restored, so the softening is the resampler's, not a
filter. What a specific tool does to your screen is a question for the
meter that ships inside Peerglass — open any session with
?measure=1.
Fetched from this server when you loaded the page. Open the file yourself.
Sub-second by construction
Small sessions never touch a media server. The stream goes straight from your machine to theirs — the shortest path there is.
Nothing to install
You share from a browser tab. They watch in a browser tab. A link is the entire onboarding.
The server never sees your screen
Peer-to-peer media is encrypted between the two endpoints and never reaches us — we broker the introduction and get out of the way. Sessions that grow past four viewers relay through a broadcast server instead.
Direct while it can be.
Scaled when it has to be.
One viewer or four, your machine sends to them directly — lowest latency, no server in the media path. When a fifth arrives, the session promotes itself onto a selective forwarding unit mid-stream: you encode once, the server fans it out, and nobody watching notices the handover.
Record without a server
Recording captures the source, not the compressed stream — so it is full quality, works in either mode, and costs nothing to host.
Point at their screen
Grant a viewer control and their cursor appears on your display. Send text straight to the host, ready to paste.
Small enough to trust
One Node process and a static folder run the whole service. Peer-to-peer, no vendor sits in your media path — including us.
Watching works everywhere.
Any browser on any device can watch a session — that is the whole point of a link. Sharing out is where the web still has an edge: no mobile browser can capture its own screen, so phones present through a small native app instead. We would rather say that than pretend otherwise.
| Platform | Share your screen | Watch a session |
|---|---|---|
| Windows · macOS · Linux | Browser | Browser |
| iPhone · iPad | Peerglass app | Browser |
| Android | Peerglass app | Browser |
Two calls, and it is
inside your product.
The same engine, as an SDK. Your backend mints a scoped token, your frontend starts a session, and usage comes back in participant-minutes. Or drop an iframe in and skip the JavaScript entirely.
// The SDK follows a session from peer-to-peer onto the SFU by itself. import { Peerglass } from 'https://peerglass.app/sdk/peerglass.js'; const pg = new Peerglass({ server: 'https://peerglass.app', token }); const session = await pg.share(); session.on('viewers', n => setBadge(n)); // …and on the other side of your app await pg.view({ room: session.room, element: myDiv });
Tokens, not API keys
Your server signs a short-lived token scoped to present or view — optionally to a single session. The secret never reaches a browser.
Metered honestly
Participant-minutes per key, attributed to whoever hosted the session. Read them over the API and bill however you like.
One line, if you prefer
An iframe embed renders a live session with no JavaScript at all. Useful when the surrounding app is not yours to change.
Priced for the link,
not the seat count.
Sharing a screen should not require a procurement conversation.
- Up to 4 viewers per session
- Unlimited sessions, no time limit
- No account to share, none to watch
- Remote pointer and prompt relay
- Recording, saved to your own disk
- 2-minute reconnect window if your connection drops
Peer-to-peer costs us nothing to carry, so this stays free rather than becoming a trial.
- Up to 12 viewers, carried by our broadcast servers
- Everything in Free
- 5-minute reconnect window if your connection drops
- Priority on new features
Or $180 a year. Cancel any time; the plan runs to the end of the period you paid for.
- Up to 25 viewers, carried by our broadcast servers
- Everything in Pro
- 10-minute reconnect window if your connection drops
Or $470 a year. Cancel any time; the plan runs to the end of the period you paid for.
- The SDK inside your own product
- Scoped tokens and a usage API
- Priced on participant-minutes
The SDK is built and documented; pricing is set per customer while we learn what the shapes are.
Bought a plan on another device? Restore it here. Plans live in the browser you activated them in.
Send a link.
Show them the pixels.
No sign-up to start. Your first session is one click away, and the person watching does not need anything at all.