Skip to content

About

Browser-based 3D-HMI for industrial automation — Three.js/TypeScript viewer for realvirtual digital twins

Topics

Resources

Contributing

Stars

182 stars

Watchers

4 watching

Forks

Latest commit

 

History

76 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

realvirtual

The browser platform for industrial digital twins — 3D HMI, virtual commissioning, Machine Information System, simulation and layout planning

License: AGPL v3 TypeScript Three.js AI-Driven Development

realvirtual — browser-based 3D HMI and digital twin platform

realvirtual (formerly realvirtual WEB) is an open-source, browser-based 3D HMI and digital twin platform for manufacturing. Open GLB/glTF models in the browser, simulate drives and material flow, connect real or simulated PLCs for virtual commissioning, and build operator dashboards. Simulation components use rv_extras metadata, which you can export from realvirtual for Unity Professional or author with your own tools. Viewers need no desktop installation; developers can build the Community application with Node.js.

One link. Any device. Live Digital Twin. Try it: web.realvirtual.io/demo

This repository is the Community edition under AGPL. It includes the viewer, HMI, transport simulation, layout planner and the discrete event simulation (DES) core with run statistics. The DES experiment manager (variants, replications, confidence intervals, batch runs) is a commercial module. Browser asset authoring, CAD import and additional simulation modules are commercial extensions. See Community Edition vs. Commercial.

Made by realvirtual GmbH. realvirtual runs in the browser; realvirtual for Unity — a Unity Verified Solution — is the option for Unity developers and native builds.

What It Does

realvirtual replaces traditional desktop HMI and SCADA visualization with a modern, browser-based 3D experience. Connect real PLCs and robot controllers through realvirtual CONNECT, and operators see live machine states — drive positions, sensor readings, alarms, KPIs — all in the context of the machine's 3D layout. Unlike flat panel HMIs, operators see what is happening, where it is happening, and why.

Key Capabilities

  • Workspace Modes — Viewer for presentation, HMI for operation, Planner for layouts, and Commissioning for commissioning workflows. The DES core (event-driven simulation, fast forward, statistics, snapshots, scripting) is included in Community; the Editor and the DES experiment manager are commercial modules. Select a workspace from the toolbar or use ?mode=viewer, hmi, planner, commissioning, des or editor; selecting a mode does not install its required features.
  • Live 3D HMI — Real-time PLC signal visualization. Machines connect through realvirtual CONNECT — Siemens S7, TwinCAT ADS, OPC UA, EtherNet/IP, Modbus, MQTT, ctrlX, robot controllers and more. Drive monitoring, sensor states, KPI overlays, alarm dashboards, and production charts powered by Apache ECharts.
  • Virtual Commissioning — Test PLC programs against the digital twin before the machine exists. Connect a real or simulated controller (e.g. Siemens PLCSIM Advanced, SIMIT, TwinCAT) through realvirtual CONNECT, link signals to drives and sensors, force and monitor signals, and jog axes in the dedicated Commissioning workspace — all in the browser.
  • Signal Linking by Drag & Drop — Drag a live interface signal straight onto a component slot (Forward, TargetSpeed, SensorOccupied, …). Direction and value type are checked, connections are saved with the layout, and signals can be monitored and forced.
  • Collision Detection — Give a node one of six collision roles (Tool, Workpiece, Machine, Robot, Environment, None); while the simulation runs, every pair of bodies with different roles is checked against each other.
  • Machine Information System — Attach documents, maintenance guides, technical drawings, and manuals directly to 3D components. Technicians click a part and see its documentation in context — accessible from any device on the shop floor.
  • Transport Simulation — Full in-browser simulation engine at 60 Hz fixed timestep: conveyor surfaces, sources, sinks, sensors with AABB collision, grippers, and material flow.
  • LogicStep Sequencing — Serial/parallel containers, signal conditions, delays, drive commands — ported from realvirtual for Unity Professional.
  • WebXR (VR/AR) — Immersive visualization in compatible WebXR browsers and devices. VR, AR and surface detection depend on browser and device capabilities.
  • Layout Planning — Assemble factory layouts directly in the browser: drag reusable parts from a library onto a grid, connect them with typed snap points, and position them with transform gizmos. Ships with a standard parts library and can load any GLB catalog straight from a GitHub repository.
  • Multiuser Sessions (Beta) — Real-time collaboration with avatars, shared camera views, role management, and late-join state sync.
  • Plugin Architecture — Extend with custom plugins for project-specific HMI, KPI dashboards, maintenance workflows, and industrial interfaces.
  • AI-Ready (MCP) — Let an AI assistant inspect drives, read and write signals, query the scene and debug simulation through the browser MCP bridge. Connect through the separately installed realvirtual CONNECT gateway or the Node development fallback; see AI setup.

Community Edition vs. Commercial

This repository is the community edition of realvirtual. It contains the complete viewer and HMI runtime under AGPL-3.0 and builds and runs entirely on its own — the commercial extension modules resolve to no-op stubs (src/private-stubs/), so the corresponding features are simply absent from a public build.

Feature Community (AGPL) Commercial Public demo
Visualize & HMI
3D viewer and HMI (GLB with rv_extras, panels, overlays, camera views, PDF links, machine information) Included Included Included · Try it
WebXR (VR/AR in the browser) Included Included Included
Cinematic rendering and video recording — Included Included
Virtual camera displays — Included Included
Stereo 3D (Beta) — Included Included
Display walls (Beta) — Included Included
Flystick control (Beta) — Included Included
Ray-traced render mode (Beta) — Included Included
Guided maintenance (the machine follows the steps) — Included Included
Simulate
Transport simulation (drives, sensors, conveyors, sources/sinks, grippers, LogicSteps) Included Included Included
Collision detection Included Included Included
Smooth drive motion — Included Included
Physics (Beta) — Included Included
Detail physics (MuJoCo) (Beta) — Included Included · Try it
Discrete event simulation Included Included Included · Try it
DES experiment manager — Included Included · Try it
Machining simulation (Beta) — Included Included
Virtual PLC (Structured Text in the browser) — Included Included · Try it
Build the twin
Layout planner Included Included Included · Try it
Asset and kinematics editor — Included Included
CAD import (STEP, JT, USD, FBX, Onshape, Unity Asset Manager) — Included Included
Robot inverse kinematics (Beta) — Included Included
Kinematic mechanisms (cranks, couplers, parallel kinematics) — Included Included · Try it
Connect
Signals and PLC connectivity (WebSocket, MQTT, ctrlX, REST; drag-and-drop signal linking) Included Included Included
Multiuser sessions (Beta) Included Included Included
Industrial interfaces (realvirtual CONNECT)
Siemens (S7, PLCSIM Advanced) Free tier: 20 signals Unlimited* Free tier: 20 signals
OPC UA, MQTT, Modbus TCP (client and server) Free tier: 20 signals Unlimited* Free tier: 20 signals
Controllers (Beckhoff TwinCAT ADS, EtherNet/IP for Allen-Bradley and Omron, B&R PVI, Mitsubishi MELSEC, Keba, Festo AX / PLCnext, Bosch Rexroth ctrlX) Free tier: 20 signals Unlimited* Free tier: 20 signals
Robots (FANUC, KUKA, ABB, Universal Robots, Denso, igus, RoboDK, Wandelbots NOVA) Free tier: 20 signals Unlimited* Free tier: 20 signals
Simulation and custom couplings (SIMIT, WINMOD, shared memory, UDP telegrams, WebSocket Realtime) Free tier: 20 signals Unlimited* Free tier: 20 signals
CAD conversion (STEP, JT) Not included (CAD import is part of the editor) Unlimited* Free tier: 25 MB STEP / 12 MB JT
Integrate
Plugin system and MCP bridge for AI assistants Included Included Included
USD live link to NVIDIA Isaac Sim (incl. Kit extension) Included Included Included
USD export — Included Included
USD animation recording — Included Included

Industrial interfaces (realvirtual CONNECT): * with a realvirtual CONNECT licence (annual or lifetime) or a licensed realvirtual site. Every tier supports every protocol.

Community (AGPL) is this repository. Commercial adds the modules marked "—" in the Community (AGPL) column; they are not part of this repository, and a public build resolves them to no-op stubs. The DES experiment manager is a commercial module. (Beta) marks features that are usable but still changing.

Public demo: web.realvirtual.io/demo runs every Community (AGPL) and Commercial feature and is free to use for evaluation and non-commercial purposes. Compared with Commercial, it runs on the free tier of realvirtual CONNECT (20 signals, STEP files up to 25 MB, JT files up to 12 MB), comes without source code, cannot be extended with your own plugins, and is provided as is, without support or warranty. A local Community (AGPL) build does not gain the Commercial modules by opening the same model.

Two related commercial products complete the platform and are separate from this repository:

  • realvirtual for Unity — Professional — the Unity runtime for Unity developers and native builds (.exe, Linux, XR); it exports rv_extras-enriched GLBs and bridges 15+ native industrial protocols (Siemens S7, Beckhoff ADS, OPC UA, and more).
  • realvirtual CONNECT — the gateway that makes Live mode work (industrial protocols → WebSocket) and hosts the built-in MCP server.

A commercial license additionally allows proprietary/closed-source use, keeping your own plugins and extensions confidential when you deliver, and the right to remove or replace the attribution notice — see License.

Use Cases

3D HMI / Operator Dashboards

Web-based HMI connected to real PLCs through realvirtual CONNECT. Live signal visualization, KPI overlays, drive monitoring — replacing desktop HMI applications with a browser link.

HMI Overview — KPI cards, message panel, button panel, search bar, camera presets

Machine Information System

Attach PDFs, maintenance guides, technical drawings, operating manuals, and spare part lists directly to individual 3D components. Technicians open a link on their tablet, click on a motor or valve, and immediately see its documentation, maintenance history, and real-time status — all in 3D context, on-site or remotely. No more searching through binders or file shares.

Sales & Product Presentation

Interactive 3D models that let prospects explore machines live in the browser. More convincing than slides, more accessible than installed software. Share a link — done.

Product Configurators

Build browser-based 3D product configurators where customers select options, variants, and accessories — and see the result rendered in real time. Combine with the plugin system to add pricing, BOM generation, or quote workflows.

Layout Planning

Assemble factory layouts directly in the browser — drag conveyors, robots, fixtures, and pallets from a parts library onto a grid, connect them with typed snap points, and arrange them with transform gizmos. Ships with a standard parts library, and can additionally load GLB catalogs from a URL or GitHub repository.

Layout Planner — the library panel with conveyors and pallets, placing a snap-connected chain conveyor on the grid

Try it live: Open the public demo and choose Layout planning on the welcome screen.

Material Flow Simulation (DES)

Answer planning questions with discrete event simulation directly in the browser: how many AGVs or forklifts a line needs, how large a buffer must be, where the bottleneck is, and what a layout variant changes in throughput. The simulation jumps from event to event, so a simulated day takes seconds; you can still watch it animated at real time or 5x to 50x.

  • Statistics — utilization and output per hour for every source, conveyor, sink and vehicle, as in-scene badges and in a statistics window, with a warm-up period before measuring.
  • Repeatable runs — a fixed random seed gives the same run on every reset; every component draws from its own random stream.
  • Checkpoints and snapshots — save the state of a run, load it later and continue event by event.
  • Scripting — model scripts for component behaviour and TypeScript project code for larger control logic.
  • Experiment manager (commercial module) — compare variants side by side with repeated runs, matching random seeds and 95 % confidence intervals.

DES — the PalletYard example at 50x after a 1 h warm-up: in-scene badges with utilization and output per hour above conveyors and forklifts

Try it live: Open the PalletYard example in the public demo, where the experiment manager is fully usable. Documentation: Discrete event simulation.

Virtual Commissioning

Validate PLC code against the simulated machine instead of on the shop floor. Connect the controller — real hardware or a virtual PLC such as Siemens PLCSIM Advanced — through realvirtual CONNECT and open the model in the Commissioning workspace (?mode=commissioning): link interface signals to drives and sensors by drag & drop, force and monitor signals, test axes, and run the transport simulation against the live PLC. Because the twin runs in the browser, automation engineers, integrators and customers can commission together from anywhere — no Unity or desktop installation required.

Training & Onboarding

Operators learn machine behavior interactively before touching the real system. No software installation, no VPN, no IT department required.

Remote Acceptance & Support

Share virtual commissioning models with customers for review and sign-off — worldwide, instantly.

Quick Start

Follow the complete Community walkthrough for project saving, reopening and self-hosting.

To put a project online — on the CDN zone realvirtual provisioned for you, on your own Bunny account, or on any static host — see Publishing a project (npm run publish:project -- --list to start).

# Use Node.js 22 or 24 LTS
# Clone the standalone Community repository
git clone https://github.com/game4automation/realvirtual-WEB.git
cd realvirtual-WEB

npm ci
npm run dev          # Vite dev server with HMR

Load your own model in one of three ways — there is no folder that gets scanned:

  • Import it in the app — open the import dialog and choose the GLB File tab, then drop .glb files or pick them from disk. Files stay in your browser; nothing is uploaded.
  • Link to it — ?glb=https://host/your-model.glb loads a GLB from any host you control (GitHub raw, a CDN, your own server). Nothing is uploaded and no sign-in is needed.
  • Put it in a project — a project declares what it holds in its own project.json (documents[]), and that manifest is the single source of truth. The bundled demo in public/demo-realvirtual/ is a working example. This is the path a delivered project uses: it keeps its documents in the project itself (root-level, models/, library/ — the folder is a place, not a type).
npm run build        # Production build -> dist/ (local only, nothing published)
npm run preview      # Preview production build
npx tsc --noEmit     # Type check (community view)
npx playwright install chromium  # Install the browser before browser tests
npm test             # Run browser tests (headless Chromium via Playwright)
npm run test:node    # Run Node.js tests (fs, glob, ESLint instance)
npm run test:all     # Run both Node + browser tests
npm run build:embed  # Build the embed app required by the E2E preview server
npm run e2e          # Run Playwright end-to-end tests (e2e/)
npm run lint         # ESLint (flat-config, boundaries rule)

Type checking: plain npx tsc --noEmit is the community view — the base tsconfig.json excludes the generated list of private-dependent tests (tests/private-dependent-tests.json), so it type-checks exactly what a clone of this repository actually contains. npm run typecheck is the maintainer full check: it uses tsconfig.full.json and requires the private sibling repository ../realvirtual-WebViewer-Private~, which is not part of this repository — running it without that folder produces a wall of unresolvable @rv-private/* errors. Use npx tsc --noEmit.

Publishing is maintainer-only: npm run deploy uploads to realvirtual's own Bunny CDN (web.realvirtual.io) and needs BUNNY_* credentials that ship with no clone. To host a build yourself, serve the dist/ folder produced by npm run build from any static web server — see doc-deploy.md for the deployment details.

Operating Modes

Mode Description
Standalone Pure browser simulation — no gateway, no PLC. The fixed-timestep simulation loop runs the full digital twin offline.
Live Connected to a realvirtual CONNECT gateway over WebSocket — CONNECT talks to the PLC and streams signals into the browser in real time. This is the usual arrangement for PLC protocols (OPC UA, S7, ADS, Modbus, …), because the browser cannot speak them directly.
Direct The browser connects straight to the equipment over a browser-capable protocol (MQTT over WebSocket, REST) — no gateway in the loop.

realvirtual CONNECT is the gateway that makes Live mode work: it speaks the industrial protocols a browser cannot, and hands the signals to the browser over one WebSocket. It is a separate product and is documented at realvirtual.io/doc/web/connect — this repository holds only the browser side of the contract (see doc-webviewer-interface.md).

Deployment Options

  • Self-hosted application — Build with npm run build and serve dist/ from your own static host. See hosting and deployment.
  • Embedded viewer — Build with npm run build:embed and integrate the custom element or lightweight viewer API into your site. See embedding.
  • Project delivery — Keep project.json, models, attachments and compiled plugins together. See projects and saving.
  • Kiosk display — Hide configuration controls for shop-floor panels. Configure access restrictions on your hosting infrastructure; a hidden control or an unguessable link is not authentication.

Publishing to realvirtual's hosted demo uses maintainer credentials and infrastructure.

Tech Stack

Component Technology
3D Rendering Three.js (WebGL + WebGPU (Beta) + WebXR)
UI Framework React 19 + MUI 7
Charts Apache ECharts 6
Build Tool Vite 6
Language TypeScript 5.9
Testing Vitest (browser-mode) + Playwright

Industrial Connectivity

Machines connect through realvirtual CONNECT. CONNECT is a native gateway that runs next to the machine (IPC or edge PC). It speaks the controllers' own protocols and streams every signal into the browser over one WebSocket (the openly documented WebSocket Realtime v2 protocol). Interfaces are configured and monitored in the browser, signal by signal. The free CONNECT tier covers all interfaces with up to 20 signals.

Category Interfaces in realvirtual CONNECT
PLCs Siemens S7 (S7-300/400/1200/1500) · Siemens PLCSIM Advanced (native API) · Beckhoff TwinCAT ADS · OPC UA · EtherNet/IP (Allen-Bradley, Omron) · Modbus TCP client and server · Bosch Rexroth ctrlX (native Data Layer or bridge) · Keba Kemro X · Festo AX / Phoenix Contact PLCnext
IoT MQTT — topics, Siemens process image, flat JSON (SEW MOVI-C)
Robots FANUC (RoboGuide / Robot-IF) · Denso (b-CAP / WinCaps VRC) · ABB RobotStudio
Simulation Siemens SIMIT (shared memory)

Full list with addressing and settings: CONNECT interfaces.

Without a gateway, the browser can also connect directly to equipment that speaks a browser-capable protocol:

Interface Description
WebSocket Realtime v2 Your own bridge or server speaking the open realvirtual protocol
MQTT over WebSocket Brokers that offer a WebSocket listener
REST API Polling-based signal access

realvirtual for Unity Professional has its own 25+ interfaces that run inside Unity — no separate gateway is needed there.

Architecture

realvirtual loads GLB/glTF geometry from compatible exporters. Project setup and loading options are covered in Getting started.

The GLB stores model geometry and rv_extras metadata such as signal bindings, drives and sensors. The project manifest (project.json) identifies documents and their plugin bindings; attachments and compiled project plugins can be separate files. Keep these together when delivering a project. realvirtual for Unity Professional can export enriched GLBs, and the metadata format is also documented for other toolchains.

src/
  core/
    engine/          # Simulation engine (drives, sensors, transport)
    hmi/             # React HMI components (panels, tooltips, settings)
  hooks/             # React hooks
  interfaces/        # Industrial protocol adapters (WebSocket, MQTT, ctrlX)
  plugins/           # Built-in plugins (multiuser, annotations, FPV, XR)
    demo/            # Demo charts and HMI (OEE, cycle time, energy, drive/sensor overlays)
    models/          # Built-in model plugin packs compiled into the application
  private-stubs/     # No-op stubs for commercial modules — what makes this community
                     #   edition build and run without the private sibling repository
  embed/             # Lightweight embedding entry points
examples/community-first-project/  # Portable project with a TypeScript plugin
tests/               # Vitest browser and Node tests
e2e/                 # Playwright E2E tests
public/demo-realvirtual/  # Bundled demo project: its GLBs and its project.json manifest

Extending realvirtual

Plugins can contribute UI components to predefined slots in the HMI layout — KPI bar, button panel, message panel, settings tabs, and more. The built-in demo plugin uses all of these:

Drive Monitor — real-time ECharts overlay showing all drive positions

Hierarchy Browser — scene tree with component type filters and search

Settings Panel — tabbed configuration for model, visual, interfaces, and AI

For a project-specific extension, start with the runnable Community plugin example. It binds a TypeScript module to a document through documents[].scriptRef in the project manifest:

{
  "id": "doc_triangle_dkqhmg",
  "name": "Community triangle",
  "path": "triangle.glb",
  "scriptRef": "plugins/counter.ts"
}

Prepare and compile the example from the repository root:

node examples/community-first-project/prepare.mjs
npm run build:project-scripts -- examples/community-first-project

Open the project folder in the application and allow its native project code after reviewing it. The counter plugin exports paired registerModelPlugins and unregisterModelPlugins functions. It demonstrates viewer.use(), signal subscriptions, and cleanup on model close, plugin disable and disposal. Distribute the compiled .js alongside the .ts source and manifest.

Built-in model plugin packs under src/plugins/models/ are compiled into the application. Use project scriptRef bindings for extensions that should travel with a project. For JavaScript behaviors stored inside a GLB, see Component Scripting.

For the full plugin API — UI slots, event bus, hooks, context menus, and tooltip extensions — see doc-extending-webviewer.md.

Documentation

End users start at the realvirtual documentation site. For this Community checkout, start with Getting started, then the project plugin example or Architecture. The full in-repo documentation set:

Getting started & architecture

Document Contents
Architecture Full architecture, component reference, configuration, workspace modes
Getting started Standalone Community install, first project, build and hosting
Projects and saving Documents, save/autosave, recovery and moving projects
Publishing a project Put a project on a CDN zone: realvirtual-hosted, your own Bunny account, or any static host
Project plugin example Runnable public scriptRef project with cleanup
Embedding Custom element and direct lightweight viewer API
Migration Move older projects to current contracts
AGV and fleet control Paths, tasks, docking and project control
Virtual PLC (commercial beta) Requires an enabled commercial build; not in Community
From Unity to the Web Porting patterns and the AI coding-agent workflow
Lifecycle Runtime lifecycle: model load, fixed-step loop, pause, reset, dispose, events
Node Paths How component, signal and kinematic references are written and resolved

Building & extending

Document Contents
Plugin Development Plugin system, custom components, UI slots, hooks
Entity stream Objects moved by an external simulation: telegram in, smooth instanced motion out
Events & Hooks Typed event bus and plugin/component lifecycle hooks
Component Behaviors Per-node TypeScript behaviors and naming conventions
Component Scripting JavaScript behaviors authored inside the GLB, run in a QuickJS sandbox
Behavior Modelling Continuous vs DES material-flow modelling (beginner's guide)
Signal Architecture Signal store: GLB import to React UI, PLC direction, batching
Signal Connection Logic Slots, connection states, drag & drop linking, forcing, persistence
UI Visibility Which axis decides what is shown: plugin modes vs. UI visibility rules

Authoring & operations

Document Contents
Layout Planner Library objects, catalogs, snap points, pivots, deep-links
Persistence Document model, GLB drafts, autosave, recovery and storage backends
Document Linking PDF/AASX datasheet linking and metadata

Connectivity & collaboration

Document Contents
Industrial Interfaces WebSocket Realtime, ctrlX, MQTT, signal flow, new-interface guide
Multiuser System Sessions, shared views, avatars
AI Integration AI integration and the MCP bridge
MCP Tools MCP tools reference (read state, set signals, build layouts)

Deploy & debug

Document Contents
Building & Deploying Community self-hosting and separate maintainer publishing workflows
Debugging Guide Debugging tools, debug API, E2E tests, workflow

Documentation checks

Run npm run docs:generate after changing ViewerEvents, then npm run docs:check. The check validates the working tree, including new untracked files. Before publishing, run node scripts/assert-docs-publishable.mjs after adding the intended files to Git; its default mode validates the tracked mirror payload.

AI-Enabled Development (MCP)

realvirtual and realvirtual for Unity are fully AI-enabled through the Model Context Protocol (MCP). AI coding assistants like Claude Code can drive the running scene directly.

realvirtual CONNECT is a separate installation and the default MCP host. Once installed and configured, it exposes http://localhost:5100/mcp; the browser bridge connects to CONNECT to make the web_* tools available. A local Node bridge is also supported for development. Follow AI Integration for setup, registration requirements and troubleshooting.

  • realvirtual (browser) — list drives and positions, read/write PLC signals, query the scene hierarchy, inspect sensor states, debug transport simulation, take screenshots of the running scene.
  • Unity Editor (optional) — with realvirtual for Unity Professional, the separate realvirtual MCP package adds 80+ editor tools: create GameObjects, set component properties, run simulations, manage scenes, run tests.

This means AI assistants can design, build, test, and debug industrial digital twins end-to-end.

Getting Started with AI Development

This repo includes guidance for AI coding assistants such as Claude Code:

  • CLAUDE.md — Project conventions, architecture overview, and coding guidelines for AI assistants
  • webviewer.mcp.md — MCP tools reference for browser-side scene inspection

Open this project in Claude Code, start the dev server and connect the MCP bridge as described in AI Integration — then inspect drives, signals and the scene through natural language.

One Platform, Two Runtimes

realvirtual is the browser platform and the default way to work. Both runtimes share the same data — GLB files with rv_extras — and connect to machines through realvirtual CONNECT.

realvirtual (browser) realvirtual for Unity
For Drag & drop users and everyone building 3D HMIs, Machine Information Systems or their own web apps Unity developers and teams that need native builds
Scope 3D HMI, virtual commissioning, Machine Information System, simulation, DES, layout planning, collaboration; commercial asset authoring and CAD import Engineering in the Unity Editor, virtual commissioning, native protocol drivers
Technology Three.js, TypeScript, React Unity Engine, C#
Deployment Any modern browser Desktop (.exe, Linux), XR headsets, mobile
PLC connection realvirtual CONNECT gateway, or direct WebSocket, MQTT over WebSocket and REST Native protocol drivers

Contributing

Contributions are welcome. Please note that realvirtual is dual-licensed (AGPL-3.0-only + commercial): by submitting a pull request or any other contribution, you agree to the grant of rights described in CONTRIBUTING.md, which allows realvirtual GmbH to also license your contribution under its commercial license.

License

Copyright (C) 2025–2026 realvirtual GmbH

This program is licensed under the GNU Affero General Public License v3 (AGPL-3.0).

What this means: Using realvirtual yourself is free, also commercially. If you change it and let others use the changed version over a network, also colleagues, offer them its source (AGPL section 13). The obligations start when you deliver realvirtual to other people (your own hosted link, a delivery package, an offline installation): everyone who receives it must be able to get the complete source of the delivered software under AGPL-3.0 — realvirtual with your changes, tightly coupled plugins and HMI components, and embedded scripts that take over core code. For a public link that is every visitor. You do not have to publish it to the world, but recipients may pass it on, and you may not forbid that.

Your model data stays yours. Geometry, layout, parameters and the metadata of a GLB are your own data; AGPL does not require you to disclose them, also not when you deliver them with realvirtual. Handing over only a GLB file usually triggers nothing.

The attribution notice stays. Every AGPL build shows "Powered by realvirtual WEB · AGPL-3.0" with a link to the source. Keeping it reasonably visible and legible is an additional term under AGPL section 7(b), see NOTICE.md. You may adapt its position, size and style; you may not remove it, cover it or make it illegible.

When you need a commercial license: removing the notice or replacing it with your own brand; the commercial modules (Editor, CAD import, …) in your own deployment; keeping plugins or extensions confidential in a delivery whose source you would otherwise have to provide. Offline delivery, your own plugins and your own brand next to the notice are possible under AGPL as long as you meet its obligations. Details and our reading of borderline cases: Licensing the viewer.

See LICENSE for the full license text and NOTICE.md for the additional terms. The 3D models and library components are covered by CONTENT-LICENSE.md; files listed in CONTENT-MANIFEST.md that were published before 2026-11-02 remain available under AGPL-3.0 as well.

SPDX-License-Identifier: AGPL-3.0-only

Third-party components

realvirtual WEB includes third-party software and content that is not covered by the AGPL-3.0 and remains under its own licence or terms:

  • npm dependencies and bundled assets — every build writes THIRD-PARTY-NOTICES.txt (and third-party-notices.json) next to index.html, listing each shipped component with its licence, copyright and source. The inventory and licence policy live in third-party/.
  • Demo content provided by third parties — for example public/pdf/fanuc-crx-educational-cell-manual.pdf (FANUC). It is included for demonstration purposes only, remains the property of its owner and may not be reused outside this demo.
  • public/pdf.worker.min.js — pdf.js, Mozilla, Apache-2.0.
  • public/envmaps/empty_warehouse_01_1k.hdr — Poly Haven, CC0-1.0.

Commercial License

If you want to use realvirtual in proprietary or closed-source products — or keep your own plugins and extensions confidential when you deliver — a commercial license is available.

Contact: realvirtual.io/en/company/license


realvirtual.io | Live Demo | realvirtual Documentation | realvirtual for Unity Documentation | YouTube | Forum

About

Browser-based 3D-HMI for industrial automation — Three.js/TypeScript viewer for realvirtual digital twins

Topics

Resources

Contributing

Stars

182 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages