Repo layout
Top-level directories
app/: main-thread entrypoint + Host contract wiringbackend/: Worker backend wrapper (spawns the Worker, exposes a UI/plugin-friendly surface)bridge/: forge/WASM bridge helpers (heap views,MjSimLite)core/: shared runtime defaults/types/URL param helpers/logging helpersenvironment/: sky/environment managerrenderer/: renderer pipeline + controllers + overlaysui/: UI store/state/actions + control manager + panels/sectionsworker/: module Worker entrypoint + generated protocol/dispatchassets/: static assets (e.g., HDRIs)model/: built-in demo modelsplugins/: built-in demo pluginstools/: generators and small CI/maintenance scriptstests/: tests and tooling (unit:tests/unit/, Playwright:tests/e2e/)local_tools/: local-only utilities/artifacts (gitignored)
Key runtime entrypoints
index.html: static page + import mapapp/main.mjs: main entrypoint (UI + renderer + Worker backend + Host API)worker/physics.worker.mjs: Worker entrypoint (loads forge + runs MuJoCo)
Key runtime modules
backend/backend_core.mjs: backend (createBackend(...); wraps the Worker protocol)core/viewer_runtime.mjs: logging, strict/compat/perf helpers, URL param helpersui/state.mjs: viewer store/state/actions + snapshot mergeui/control_manager.mjs: DOM wiring + UI panels/controlsrenderer/pipeline.mjs: renderer pipeline +createRendererManager(...)renderer/controllers.mjs: camera + picking controllersenvironment/environment.mjs: sky/environment presets + runtime managerbridge/heap_views.mjs/bridge/mj_sim_lite.mjs: forge/WASM bridge helpersworker/snapshot_pool.mjs: worker snapshot pool policy/state
Generated artifacts
Generated files are committed for the static runtime and GitHub Pages.
Worker protocol: - Source:
tools/worker_protocol.json- Generator:tools/generate_worker_protocol.mjs- Outputs:worker/protocol.gen.mjs,worker/dispatch.gen.mjsUI artifacts / types: - Source:
spec/ui_spec.json(+ schema/index) - Generator:tools/generate_ui_artifacts.mjs- Outputs (examples):core/viewer_structs.mjs,core/viewer_state_types.ts
Forge dist bundles
This repo may vendor one or more forge bundles under dist/<ver>/ for
local/demo convenience, but the build pipeline for these artifacts lives in the
forge repo (mujoco-wasm-forge).