SPHERE Virtual Lab: Operate a Metrology Lab in Your Browser
An interactive 3D simulator of the measurement laboratory proposed by Project S.P.H.E.R.E., built by Michael P. Goodman. Run the instruments, practice a guided scan, diagnose injected faults, and ask the lab technician for help, with nothing to install and nothing physical connected.
Showing the most recent saved copy (Oct 25, 2026). The live feed refreshes this section when GitHub is reachable.
Educational simulation, not measurement
The Virtual Lab does not connect to, drive or read any physical equipment, and its modeled results are not scientific validation or evidence for or against the S.P.H.E.R.E. hypothesis. Project S.P.H.E.R.E. is at the proposal stage. Instrument panels are conceptual and are not affiliated with any manufacturer.
Inside the virtual lab
Workspaces are grouped the way a real lab day flows: bring the systems up, work with the instruments, plan and record runs, then practice until the procedure is routine.
Operations
Lab overview, operator console, 3D chamber and stage, and a rule-based copilot for day-to-day control of the simulated lab.
Instruments
Vector network analyzer, laser Doppler vibrometer, oscilloscope, Rubidium frequency reference and a spatial field explorer.
Research
Planned experiment runs with validated scan plans, a run ledger, and a tagged lab notebook with Markdown export.
Learning
Guided scan training, troubleshooting challenges and a fault injector for practicing diagnosis safely.
A 3D lab with a technician on the phone
Walk a detailed WebGL laboratory with a vacuum chamber, instrument rack, security cameras and a working wall clock. Dr. Wire, the simulated lab technician, answers questions by voice or text, can carry out lab tasks on request, and always respects the same safety interlocks as the controls.
Built for learning and review
Students, prospective contributors and anyone reviewing the S.P.H.E.R.E. protocol can rehearse the 5×5 serpentine scan, trigger faults such as Rubidium clock drift, and export notes locally. Session data stays in the browser.
Latest updates
Release notes come straight from the project's changelog on GitHub. When a new version ships, it appears here automatically.
Version 2.0.0 Latest
Changed
The realistic 3D lab (Three.js) and its audio and technician-voice code now download only after the 2D operator dashboard has painted and the browser is idle, so the dashboard is no longer competing with the 3D assets for the initial load.
Academic release metadata (Zenodo and ORCID) is included in package.json and CITATION.cff.
Version 1.7.0
Added
Dr. Wire's everyday conversation is about ten times larger: 134 topics, nearly 400 differently worded answers and over 600 example questions, all answered offline and in character.
He keeps a conversation going: he sometimes asks something back ("What about you?"), reacts to your answer (dogs, kids, coffee, sports), and then steers gently back to the lab.
"When do you get off work" now has time-aware, natural answers (nearly done, plenty of day left, already ended).
One consistent character (personaBible.ts) shared by the offline answers and the AI persona, so improvised answers cannot contradict the scripted ones.
Changed
Everything he says now passes through a fluency layer: contractions, "Cause / Effect / Check / Fix" labels turned into spoken sentences, and a lead-in or closing question on longer explanations.
The AI persona prompt now asks for connected, flowing speech instead of lists of facts.
Version 1.6.0
Fixed
High quality is no longer washed out: the bloom pass that smeared every bright metal highlight into a white haze is removed, the exposure is lower, the chamber lamp and ceiling light panels are dimmer so the polished chamber liner no longer flares, and the walls and floor are a little darker so there is contrast to see.
Added
A right-hand wall and many more lab objects: fume hood with a sash and exhaust duct, a bench with a sink, tap, towel dispenser and reagent shelf, an eyewash and drench shower, a tall chemical storage cabinet, a rolling tool chest, waste and recycling bins, stools, a gas cylinder rack, a coat rack with a spare lab coat, a wet-floor sign, an anti-fatigue mat, overhead ductwork, a cable tray, sprinkler heads, exit signs, a first-aid kit, a fire alarm pull station, an extinguisher and a hazards poster.
Dr. Wire looks more lifelike: skin with pores and colour variation, flushed cheeks and a five o'clock shadow, sheen on skin and hair, strand-textured hair with a fringe and fuller back, limbal rings and catchlights in the eyes, nostrils, shaped lips, fingernails, woven-cloth bump on the lab coat, shirt and trousers, shirt buttons and a belt buckle.
Version 1.5.0
Added
Ask Dr. Wire for any lab action on the phone, by voice or typing.
Wall clock that shows Eastern time (America/New_York, EST or EDT as it applies) whatever the visitor's own time zone, and a wall calendar that shows the current Eastern date and redraws when the date changes.
Realistic lab audio: layered footsteps (heel thud, contact click, sole scuff, occasional rubber squeak, alternating feet, per-step variation) with room reverb and stereo position and loudness that follow the camera; an ambient bed with HVAC, light hum, rack fans, a roughing pump and a turbo whine that follow the real instrument state; a quiet wall-clock tick; better latch and relay sounds.
Changed
The call panel is much smaller (about 264 px wide, 11 px text), translucent, shows the last three lines, and keeps the audio and microphone controls behind an Options button.
The two computer monitors are larger again (0.96 m by 0.56 m, up from 0.74 m by 0.43 m).
Version 1.4.0
Added
Natural "studio" voice for Dr. Wire: a neural text-to-speech service (/api/tts, ElevenLabs or OpenAI) plays instead of the browser voice when a key is set on the server (ELEVENLABS_API_KEY or OPENAI_API_KEY).
The studio endpoint has the same guards as the other endpoints: same-origin only, a per-client rate limit, a daily spend cap (TECHNICIAN_TTS_DAILY_CAP_USD, default 2 USD), short bodies, and text and audio are never logged.
Performance test (tests/e2e/perf.e2e.py) that checks the draw-call saving and that the merged scene looks identical, including the moving parts.
Changed
Much smoother 3D lab: the static parts of the room are fused into a few meshes per material (about 830 down to about 290 draw calls per frame, half the triangles), the shadow map refreshes every second or third frame instead of every frame, the bloom runs at half resolution, SMAA is skipped on high-DPI screens, and phones and tablets skip 4x MSAA.
The speech bubble no longer forces a page layout on every frame.
Version 1.3.0
Added
Dr. Wire asks who he is speaking with when he picks up the phone and uses the first name now and then (not in every sentence).
Many different ways of not knowing: ten "I don't know" phrasings, eight "let me look it up" lead-ins, "I'm not sure, but..." hedges for weak matches, and the language model is told to vary its wording too.
Search almost any topic: Brave Search (if BRAVE_SEARCH_API_KEY is set) or Claude web search, then Claude's general knowledge when search is unavailable (clearly labelled "not a live search"), then Wikipedia straight from the browser when the service is not set up.
A more natural voice: lab abbreviations and units are pronounced properly (V N A, kilohertz, 1e-3), speech is cut into phrases with their own pace, pitch and pauses (questions rise, "Hmm," is slower), the best male English voice the browser offers is chosen automatically, and a voice picker appears in the call bar.
A realistic Dr. Wire: a solid, shaded figure with proportioned head, face, glasses, hair, a blue shirt, trousers, shoes and an open white lab coat.
Screensaver on his left monitor after 90 seconds of no use (a turning copper sphere and a 230 kHz trace).
Three security cameras mounted in the lab (blinking red lights) and a Cameras control: Cam 1 (overview), Cam 2 (workstation), Cam 3 (chamber and rack) as fixed views with a time stamp and REC light, plus an All cams grid.
It is a free, interactive, browser-based simulator of the measurement laboratory proposed by Project S.P.H.E.R.E. You can explore a 3D lab, operate simulated instruments, follow a guided scan procedure, practice troubleshooting, and talk to a simulated lab technician. It runs at lab.spheredesci.org.
Does the Virtual Lab produce real measurements?
No. It is an educational simulation. No physical equipment is connected, nothing is measured, and its output is not scientific evidence for or against any hypothesis. Project S.P.H.E.R.E. is at the proposal stage.
Who built it?
Michael P. Goodman designed and developed the application. It is published for SPHERE Research, LLC, and the source code is public on GitHub.
How does this page stay current?
The version number, release notes and recent commits on this page are read directly from the project's public GitHub repository each time the page loads. A scheduled job also refreshes the saved copy, so new releases appear here without anyone editing this site.
Where can I read the full project description?
The project description, scope and limitations are published at spheredesci.org/vl. The simulator itself is at lab.spheredesci.org, and the complete source and change history are in the GitHub repository.
Can I use this approach for my organization?
Yes. The same engineering applies to internal training simulators, digital twins and operator tools. Michael builds private, self-hosted systems for organizations that cannot send data to public cloud services; start with the services page or send an email.
Need an interactive tool or private AI system built?
From simulators and operator dashboards to self-hosted AI, the engineering is the same: clear requirements, tested code and systems you own.