PONNE

One browser source for the whole broadcast

Most people set PONNE Broadcast up the slow way first: one browser source per graphic — there are twenty of them — each sized by hand. It works, and then one source is 1600×900 while the rest are 1920×1080, the driver cam sits slightly too far left on stream but looks right in the Studio, and you spend a race night wondering which of you is lying.

There is one step instead.

Add one source

In OBS: + → Browser, and give it exactly this:

URL     http://localhost:4600/program.html
Width   1920
Height  1080

Then set the source's position to 0, 0 and leave its size alone. No scaling, no cropping, no stretching to fit.

That is the whole setup. Every graphic — timing tower, lower thirds, the battle graphic, pit ticker, race control, the stewards card, track map, start grid, results, championship standings, casters, the ticker, slates, moment banners, the replay wrapper and your decor layer — lives inside that one page, layered and positioned by PONNE.

Why one source and not twenty

Match the numbers to your stream

The size of the browser source must match your output resolution, not your monitor:

Streaming at Browser source
1080p 1920 × 1080
720p 1280 × 720
1440p 2560 × 1440

If those disagree, OBS scales the page and your type goes soft. Check Settings → Video → Output (Scaled) Resolution and use that number.

Scene variants

Sometimes you want a scene with less on it — a clean camera shot with only the tower, say. Add the same URL with a filter on the end:

http://localhost:4600/program.html?only=timing-tower,lower-third
http://localhost:4600/program.html?skip=track-map

only= lists what you want; skip= lists what you don't. Everything else behaves exactly as it does in the full feed, so a variant scene never gets its own layout problems.

Common snags

The page is blank. PONNE Broadcast has to be running — the graphics are served by the app itself, so nothing answers on port 4600 without it. Start the app, then hit Refresh on the source.

Nothing is on air. The feed is deliberately empty until the console puts something up. Open the console, click a graphic in the ON AIR row, and it appears. A blank feed is the app being disciplined, not broken.

A scroll bar on stream. Set the source to exactly your output size at position 0,0. If it is a pixel or two smaller than the page, some versions of Streamlabs draw a scroller. (OBS Studio hides it; Streamlabs does not, which is how we found this.)

Port 4600 is taken. Another program has it, or a previous PONNE Broadcast is still running in the background. The app will tell you which; Task Manager settles the second case.

If you prefer the individual pages

They still work, and they are still there — http://localhost:4600/timing-tower.html and the rest. Use them if you want a graphic on a different scene from the others, or you are compositing in something that is not OBS. Everything in this guide applies to each of them; you just do it once per graphic.

If you run your own relay

PONNE's hosted relay is the default and needs no setup. If your league runs its own (tools/team-relay.mjs), know that a self-hosted relay fails open: it does not check that anybody has PONNE Broadcast access, and it cannot. Your room keys are the security — the spotter key is the director's authority, the follower key is a shared link, and only the viewer key is meant for strangers. The relay's own README says this at length, and it is worth reading before you hand the follower key to twenty people.