Open tools for molecular engineering

See exactly when a molecule becomes a simulation.

Begin with atoms on a screen. Add topology, energy, force, mass, and time—one understandable layer at a time. The same open scene model carries each example from the browser to native rendering and scientific tooling.

O
H
H

Start with your goal

What do you want to do with a molecule?

Choose a workflow to see the scientific steps, the libraries involved, and a runnable example. You do not need to learn the entire toolkit before doing useful work.

Workflow 01

Open and inspect a structure

Drop in a molecular file, preserve its cell and chemistry, validate it, and inspect atoms directly in the browser.

Open the file playground
  1. 01Parse the source
  2. 02Validate the scene
  3. 03Fit and inspect the structure
ProducesA checked, interactive molecular scene
molscenemolscene-schemabrowser-renderer

Browser-native interoperability

Open a real molecular file. Keep its meaning.

Drop in XYZ, extended XYZ, CIF/mmCIF, MOL/SDF, or MolScene JSON. Parsing, schema validation, camera fitting, and rendering happen locally in your browser.

benzene.molMOL

Canonical MolScene · schema valid

parsed locallyangstrom · molecule
Atoms12
Bonds12
Framesstatic
CompositionC6 · H6

More than a renderer

Use the libraries. Watch the meaning survive.

These examples execute the real packages in your browser. Change an input and follow the result from molecular identity through geometry, topology, and an explainable scientific output.

Example 02

Is it movement—or a molecular edit?

Compare revisions with stable atom identity, rigid alignment, RMSD, and explicit bond or composition changes.

01 parse MOL02 validate scene03 align geometry04 diff meaning
two valid MolScenes

Same molecule, rigidly transformed coordinates

Every atom was rotated and translated together. Alignment should erase the apparent motion without erasing identity. These controlled MOL fixtures keep corresponding atoms in the same row order, so the parser generates matching IDs; arbitrary MOL revisions do not inherently carry durable IDs.

molscenemoldiff
ReferenceCH₃OH
6 atoms · 5 bonds
CandidateCH₃OH
6 atoms · 5 bonds
Stable matchatom-1
ElementC
Direct shift2.492 Å
Compared shift<0.001 Å
Matched bystable ID
Example 03

Build a surface, then explain its chemistry.

Create defects and adsorbates as immutable structure edits, then convert topology changes into readable reaction chapters.

generated in your browserCO above the surface
Atoms34no change
Bonds38no change
Events1topology changes
Chapters2explainable steps
Try the modelChoose an atom, frame, or construction above
Example 04

Start watching before the file finishes loading.

Stream trajectory frames through a bounded queue, pause the renderer, and see backpressure stop unnecessary parsing.

idleplain XYZ · 1,193 bytes
frame time = 0.0 source value
Displayed0 / 12frames
Ready ahead0 / 2bounded
Input read0%0 chunks

Click an atom to inspect its stable identity and current coordinates.

Interactive introduction

Complexity should arrive with a reason.

Every step adds one scientific idea and keeps everything you already understand.

interactive scene3 atoms · 1 molecule
Potential16.6kJ/mol
KinetickJ/mol
TemperatureK

Click an atom to inspect its stable identity.

Open-source foundation

Eleven focused libraries.
One molecular language.

Small packages compose into a complete workflow without trapping structures in a proprietary application. Use one package or carry the same scene through all of them.

01

@molecular-renderer/molscene

implemented

One typed scene format with XYZ/extXYZ, CIF/mmCIF, MOL/SDF, cells, trajectories, annotations, and provenance.

Open a file
02

@molecular-renderer/molscene-schema

implemented

A generated JSON Schema distribution with AJV conformance tests for APIs, editors, databases, and non-TypeScript clients.

See the schema role
03

@molecular-renderer/mechanics

implemented

Readable force terms and velocity Verlet integration for teaching and rapid browser prototypes.

Run mechanics
04

@molecular-renderer/browser-renderer

implemented

A dependency-light Canvas renderer with picking, cameras, force vectors, and browser-native interaction.

Inspect a structure
05

@molecular-renderer/moldiff

implemented

Semantic structure comparison: atom mapping, movement, coordination, topology, and cell changes.

Compare revisions
06

@molecular-renderer/surfacekit

implemented

Build crystals, slabs, defects, substitutions, passivation sites, and adsorbate placements.

Build a surface
07

@molecular-renderer/reaction-storyboard

implemented

Turn trajectories into explainable chapters with bond events, energy cues, and camera direction.

Read a reaction
08

@molecular-renderer/trajectory-stream

implemented

Incremental XYZ, extXYZ, and LAMMPS ingestion with bounded buffering, cancellation, progress, and a Web Worker protocol.

Stream frames
09

@molecular-renderer/molrender-cli

implemented

Inspect and render molecular scenes reproducibly from scripts, notebooks, and continuous integration.

See where scripts fit
10

@molecular-renderer/mol-ci

implemented

Validate structures, periodic geometry, overlaps, bonds, valence, and bounds in local or continuous-integration workflows.

See where CI fits
11

@molecular-renderer/adapters

implemented

Connect ASE, OpenMM-style data, and LAMMPS trajectories to the canonical scene without silently inventing chemistry.

Trace the architecture

Architecture

A scene is the contract.
Everything else is a capability.

XYZCIFASELAMMPSOpenMM
canonical contractmolscene

identity · geometry · topology
trajectory · provenance

browsernativediffCIstoryboard
01

Portable by default

Human-readable scenes and stable atom identity survive every tool boundary.

02

Science stays inspectable

Examples expose force terms and integration instead of hiding them behind animation.

03

Backends stay replaceable

Canvas today, native ray tracing tomorrow—the molecular document does not change.

First runnable slice

From an XYZ file to a checked, explainable scene.

The repository now contains working foundations, tests, examples, and the browser mechanics lab above.

import { parseXyz, validateScene } from
  "@molecular-renderer/molscene";
import { createWaterPair, step } from
  "@molecular-renderer/mechanics";

const scene = parseXyz(waterXyz);
const diagnostics = validateScene(scene);

const system = createWaterPair();
step(system, 0.00025); // ps