Open systems
Shareable project URLs meet agent control
Projektor exposes a project as a portable URL and the editor as an MCP control surface. Together they make a mapping setup forkable and scriptable.
- Filed
- Read
- 11 minutes
- Note
- 05 / 05
Put the project inside the link
Projektor serializes the stage, surfaces, media configuration, groups, and Looks into a versioned project document. For sharing, that document is compressed into the URL fragment after #p=. Opening the link decodes and validates the payload, then loads a fork into the editor.
The fragment remains in the browser rather than being sent to the web server as part of the page request. There is no Projektor account or hosted project record behind the link. The URL itself carries the setup.
https://projektor.example/editor#p=<compressed-project>
stage + surfaces + warp + shader source + Looks
→ compressed URL fragment
→ validated on open
→ loaded as an editable forkKnow what can travel
Geometry, test patterns, live shader source, image or video URLs, and Looks can be represented in the project. A local file selected from one laptop is exposed as a temporary browser object, so it cannot be reconstructed on another device. Webcam and screen-capture sources are local by nature as well.
The Share panel calls out media that will not travel. Use URL-backed assets or self-contained shaders when portability matters, and use a saved .projektor file as another checkpoint. The iframe form renders the project read-only, which is useful for a site or installation surface that should not expose editor controls.
- Travels: geometry, mix settings, Looks, shader code, test patterns, URL-backed media.
- Stays local: uploaded files, webcam streams, screen capture, live line-art camera.
- A share link opens a fresh copy. It does not stream the operator's current live session.
Expose the editor as a control surface
Projektor also ships an MCP server that drives the same editor state a person manipulates. An agent can inspect a project, add a surface, set corners, assign media, adjust opacity and color, and capture a Look. The editor remains the visible instrument, so changes can be checked on the stage and undone through its normal history.
Live-affecting and destructive operations require explicit confirmation at the tool boundary. For example, recall_scene can change the active output, and delete_surface removes geometry. The MCP server does not make those consequences invisible.
list_state
add_surface type: quad
set_corners surface: surface_04
assign_media surface: surface_04
capture_scene name: Opening
recall_scene scene: Opening, confirm: trueUse the two interfaces together
A shared URL is a portable starting state. MCP is an active editing interface. Hand an agent a known shareable setup, let it make a bounded change, then inspect and save the result as another link or project file. That loop is closer to forking a CodePen than remotely controlling a closed desktop document.
The approach is useful for repetitive layout setup, generating variations from an existing rig, or preparing a cue list from explicit instructions. It is not a substitute for watching the real beam. An agent cannot infer projector focus, venue light, wall texture, or whether the output misses the physical edge unless a human or camera supplies that evidence.
Why the open architecture matters
The browser makes a project linkable and embeddable. The MIT license makes the engine, editor, and MCP server forkable. Raw WebGL2 keeps the rendering path inspectable. Those properties reinforce one another: a setup can be opened, understood, changed, and passed on without a proprietary project service.
There are honest limits. Projektor's Go Live output is local to one machine and browser profile. It does not provide native NDI, Syphon, Spout, DMX, or a multi-projector media-server pipeline. The open interfaces are a different advantage, not a claim that a browser tab replaces every production rig.