The problem

3D editors are dense and stateful. An artist can see which object matters; an agent needs stable identities, exact properties, and the current revision. Pixel automation guesses through controls, while a detached API pulls the work out of the artist's spatial context. That leaves a bad choice: manually repeat the agent's suggestions, or trust an invisible write.

GoSX 3D Studio keeps person and agent aligned before anything becomes canonical.

What it does

The webpage itself is a shared collaboration surface. It registers exactly four focused tools with document.modelContext.registerTool(...):

scene_get_state reads canonical scene state and its revision. scene_find_objects searches stable IDs and names with typed filters. scene_focus_object brings the hierarchy and Inspector to the object under discussion without changing canonical state. scene_preview_actions validates and stages 1–12 reversible operations at an exact revision.

A browser agent can inspect 150 entities, resolve Board to stable ID board, focus the visible Studio, and stage a rename plus material assignment. The artist sees the exact before/after diff in the live 3D viewport, can orbit the reversible result, and keeps the only Apply action. There is intentionally no WebMCP commit tool.

The review retains affected IDs, actor, policy evidence, revision boundary, and result fingerprint. Apply sends only an opaque proposal ID; the server commits the exact stored transaction through the existing revision-safe engine. Stale work is rejected. Activity distinguishes agent://webmcp proposal authorship from human://webmcp-review approval.

That makes WebMCP the product interaction model, not a badge or generic CRUD wrapper: the person and agent point at the same stable object, reason from the same revision, and create an auditable handoff from machine-prepared preview to human-approved canonical state.

Why the experience is better

Agents handle precise hierarchy search and proposal preparation without taking commit authority. Artists stay inside the spatial context of the real editor instead of translating detached advice. Focus, preview, approval, and discard reconcile in the same document without tearing down the Scene3D canvas. Every staged edit is bounded, policy-checked, attributable, and visibly reversible. A persistent viewport outcome makes the R → R+1 handoff obvious after approval.

Implementation browser agent -> four WebMCP tools -> same-origin proposal service -> server checks -> Workspace.Execute(propose, revision R) -> visible non-applied review card -> human Apply UI -> exact stored transaction -> Workspace.Execute(direct, revision R) -> canonical R+1

Both human and agent paths reuse Workspace.Execute; WebMCP is an adapter over the same SceneDoc and typed SceneIR used by the Studio. Proposals are session-owned and one-use, expire, carry revision checks, and are committed through CSRF-protected UI actions. Server-side review checks fail closed and expose pass evidence for each staged operation.

The demo uses GoSX server rendering, WebGPU-first Scene3D with WebGL fallback, Go, JavaScript, and Kubernetes deployment by immutable image digest.

Challenge-period work

GoSX 3D Studio existed before August 25, 2026. It already had its SceneDoc model, 3D workbench, stable IDs, fingerprints, undo/redo, revision conflicts, and a shared transaction path for human and agent commands. Those foundations are not claimed as Challenge work.

During the submission period we added the WebMCP adapter; structured inspection, search, and focus; session-owned non-canonical proposals; server checks; the visible review and exact-commit boundary; typed-call evidence; shared-demo reset; focused tests; and deployment materials. We also added same-document Scene3D reconciliation, WebGPU-first rendering, a compact evidence dock, and a refined PBR sample scene. Final polish added the in-app native-tool disclosure, presentation-size reversible diff, sticky human-only approval, persistent revision outcome, race-safe reset, conflict-free hierarchy keyboard behavior, and a recorder that verifies the exact handoff.

The pre-Challenge comparison point is commit a216194ebc0f415a011aa780386773c0750bccf9 from July 29, 2026.

How we used AI

A WebMCP-capable browser agent interprets the artist's goal, chooses page tools, finds relevant objects, and prepares a typed proposal with rationale. The Studio retains schema validation, revision checks, policy, fingerprints, authority, and canonical state; it does not hide a second chat backend or give the agent a privileged write path.

OpenAI Codex helped trace the architecture, connect WebMCP to Workspace.Execute, implement and review boundaries, author tests, debug native-browser behavior, run checks, and prepare documentation and demo materials. Buckley generated and pushed the final structured commit, and Buckbot ran the pre-merge review.

Verified public flow

The current immutable deployment was built from main merge commit 1e68684cbe6d5a8a10257c1ea9b85e40c9046125 and pinned as sha256:facffa246e9377d49db38c5d0c008e4e6db1a593f10e1e5ebfaff8f2475e9b9c.

On September 4, native Windows Chrome 152 completed the deployed flow at 1920×1080 using native document.modelContext and WebGPU:

exactly four registered page tools and 145 rendered meshes; Inspect, Find, Focus, and Stage completed against stable ID board; the exact Board → Launch Board and Carved Wood → Brushed Steel proposal left canonical revision 3 unchanged; the visible Apply control advanced the scene exactly once to revision 4; PROPOSED and APPROVED activity shared the same plan token; Evidence remained 31/31 current; the same mounted WebGPU canvas survived with zero document reloads and three managed same-document transitions; the shared demo was then visibly reset to a clean canonical Board at revision 5 for judges.

The repository's CI also passes the GoSX component contract, server checks contract, vet, unit/integration tests, WebMCP lifecycle tests, race detector, browser-free frame/ray smoke evidence, deterministic certification, production packaging, and unreleased-sibling drift check.

Try it

Open gosx3d.m31labs.dev in ChatGPT's in-app browser, or Chrome 149+ with chrome://flags/#enable-webmcp-testing enabled. No credentials are required. Choose Reset clean demo if another visitor has edited the shared ephemeral scene, then wait for Agent tools ready · 4 tools. In an agent-enabled client, choose Copy demo prompt and send it unchanged. In Chrome alone, open DevTools → Application → WebMCP and invoke scene_get_state, scene_find_objects, scene_focus_object, and scene_preview_actions. Confirm Inspect → Find → Focus → Stage, stable ID board, the exact two-edit proposal, passed review checks, fingerprint, and canonical revision R unchanged. Orbit the live Brushed Steel preview, then click Apply 2 exact edits. Confirm Launch Board, Brushed Steel, revision R+1, and separate agent proposal/human approval activity.

Links

Live demo: https://gosx3d.m31labs.dev Public MIT source: https://github.com/M31-Labs/gosx3d-studio

Known limitations

The public demo is one shared, process-local, ephemeral workspace with revision-conflict safety, not a private account workspace or realtime CRDT room. WebMCP exposes only three reversible operation kinds, and every staged edit requires visible human approval. Broader editor capabilities remain honestly marked partial or planned; the submission claim is limited to the verified scene workflow.

Built With

Share this project:

Updates

Submission history