A living geospatial simulation that records itself as it runs.
You define a scenario once — the terrain, the physics, the inputs that change over time — and the engine advances it step by step on the GPU. Every change it computes is written down as it happens, so the run you watch live is a file you can replay, branch, and prove long after it finishes.
Three capabilities come for free, because they all read from the same recorded truth rather than a separate export — and a fourth because that truth is written in a format you already own.
Move frame-by-frame through a finished run, or stream it to a remote viewer that cannot tell replay from live. The past is always reconstructable, exactly.
Branch the run at any saved point into a what-if timeline. The branch shares its ancestor's history byte-for-byte and only diverges forward — so comparisons are honest.
Recompute the checkpoints and confirm that what the viewer showed is exactly what the engine computed. The recording verifies against itself, on demand.
The recording is a published format, not a private one. Hand a finished run to a reviewer who has never installed anything of ours, and the GIS tools they already have will open it.
From a locked definition to a file that can be replayed, branched, and proven — the recording is written as the run happens, not exported afterward.
A change becomes visible — on screen, on the network, to any consumer — only after it is durably written to the recording. Nothing is ever displayed that was not first recorded. That is why replay, forking and audit are exact rather than approximate, and why “saved” and “shown” are the same moment: if you can see it, it survived a power loss.
Two worked demonstrations, each read back off its own recording. One asks what a decision costs; the other asks whether the engine can be trusted to answer.
A GPU flood simulation over real SRTM terrain runs to epoch 54 and is paused mid-event, then forked in place. One decision is overridden in the branch — release rate, ten times higher — and the ledger conserves water across the split.
Read the showcase →
A conserved scalar carried on a wind while it spreads, held against the closed-form Gaussian solutions and reported to the decimal — then taken to a coastal what-if where one anchor becomes six worlds in a single recording.
Read the showcase →Four products cover the full lifecycle — authoring, persistence, operating, and remote viewing. They interoperate through fixed contracts, not shared code, which is why you can mix and match them.
| Product | Your role with it | What it does for you |
|---|---|---|
| ForgeGIS Studio™ | Author & operate | The analyst's seat. Build a scenario on a canvas, run it, pace it, pause it, fork it, and scrub the replay — all in one browser workbench. |
| ForgeGIS™ (engine) | Computes & records | The runtime that advances the simulation on the GPU, publishes each step, and writes the recording. Also serves runs live over the wire. |
| ForgeData™ | Stores & catalogs | Production-grade persistence. Recordings land in a catalog by reference, with the same durability and integrity guarantees as the engine's own ledger. |
| Seaglass Globe™ | View remotely | A lightweight remote viewer that renders live or replayed runs on a 3D globe over the network — without ever embedding the engine. |
Why “by contract” matters to you: the four products agree on fixed, published formats rather than private internals. A recording written today opens with tomorrow's reader; a viewer built against the spec works against any conformant run. Nothing breaks silently when one piece evolves.
Operating a twin is a small, stable vocabulary of actions. You issue them from Studio's panels or from the headless MCP interface — the same verbs either way.
Define the scenario and freeze its identity
Advance it epoch by epoch
Throttle to wall-clock for viewing
Hold and continue cleanly
Branch a what-if timeline
Drain and finalize the recording
Move to any past frame
Prove the recording's integrity
Read frames, epochs and snapshots
Pacing is a viewing convenience, not a change to the result. A run throttled for a live audience and a run let loose at full speed produce a bit-identical recording — the wall-clock timing lives only in annotations that are stripped before anything is compared. You never have to choose between “watchable” and “correct.”
These properties hold no matter which product you are using or how the run was driven. They are what make a twin trustworthy as evidence, not just as a visualization.
A change becomes visible — in the registry, in Studio, on the wire — only once it is durably written. There is no window in which a consumer can act on state the engine has not yet committed, because that window does not exist.
A remote viewer cannot distinguish a recording being replayed from a run happening now. The same client code, unchanged, handles both — demonstrated end to end with zero modifications.
A twin's identity is computed from what it actually is — its structure, its code, its terrain. Two twins that would compute different numbers can never share an identity, so results cannot be quietly swapped.
A what-if branch inherits its parent's past byte-for-byte and diverges only after the fork point. Any difference you observe downstream is caused by your change — nothing else.
Unknown data, uncertified physics, a missing terrain hash, an oversized frame — every one is a named refusal, not a silent substitution. A gap can only exist because you explicitly chose it.
Every performance option — how the run is paced, whether the viewer shares the GPU — is invisible to the record. Turn them on, off, or let one fail mid-run: the recording is byte-for-byte the same. You never trade correctness for throughput.
Re-running the same scenario on the same backend is bit-identical. Across different hardware, agreement is within tolerance — the system is honest about where exact parity is and isn't a property of correct math.
The same recording serves very different consumers at the same time, each reading only what it needs through a shared, published surface.
| Connection | What crosses it, in plain terms |
|---|---|
| Studio → Engine | Scenario definitions and run control — start, pace, pause, fork, stop — plus status and integrity checks, all in-process. |
| Engine → Recording | Every published step, written durably before it is announced anywhere. The acknowledgment is the publication. |
| Engine → Globe | Live and replayed frames over the network, with automatic recovery if a viewer falls behind — it is told exactly where to resume. |
| Engine ↔ Globe (same GPU) | On a large-VRAM workstation, state moves as on-device copies through shared graphics memory. Meaning and the durable record still travel the normal path. |
| ForgeData ↔ Engine | A second, independent storage implementation producing identical bytes — proof the format is a real contract, not one program's habit. |
| Recording → QGIS | A finished run is a plain GeoPackage. Standard GIS tools open its snapshots directly, no ForgeGIS runtime required. |
All on one machine. Studio embeds the engine; you author, run, scrub and fork in a single process, recordings on local disk.
Headless / automated. Drive twins by command through the MCP interface, exposing a live endpoint for a Globe on the same network.
Catalog-backed. Recordings land in ForgeData's catalog by reference; every consumer reads the identical format.
Playback with nothing installed. A sealed recording is served or opened on its own — the format guarantees third-party readability.
Co-resident on a large-VRAM workstation. Engine and viewer share one GPU, so twin state reaches the renderer without leaving the card. Optional, off by default, and the recording is identical either way.
On a workstation with a large graphics card, the engine and the viewer can share it directly. Twin state then reaches the display without ever leaving the GPU — no copy back to main memory, no trip across the network.
The saving scales with scene size rather than being a flat speedup — the bigger the raster, the more the skipped copying matters. And because the state is already on the GPU next to the renderer, the viewer can compute over live twin state as it displays it instead of making a separate pass.
What it does not change is the part that counts. The recording is byte-for-byte identical whether the mode is on or off — enforced by test, including when the feature is switched off mid-run or fails outright. The simulation never waits on the display: if the viewer cannot keep up, frames are skipped rather than the run being slowed. Engine and viewer keep separate graphics contexts, so co-residency never reduces how many other applications can use the card, and any fault falls back to the network path loudly and automatically. It is an accelerator, never a second source of truth.
When it applies: this is built for large-VRAM systems — roughly 24 GB-class cards and up. On smaller hardware there is nothing to gain, and the mode simply stays off. It is optional everywhere and disabled by default.
Four seats, one recording.
Runs scenarios on a canvas, watches them evolve, and branches alternatives — without writing code or managing the plumbing underneath.
Receives a self-contained recording and can independently replay it, verify its integrity, and confirm the visualization matches the computation.
Writes against fixed specifications, confident that a conformant client works with any conformant run — today's and tomorrow's alike.
Drives twins headless and automated, streams them to remote viewers, and stores them at scale — with durability and recovery built in.
The digital twin is a ForgeGIS engine capability, driven from the ForgeGIS Studio canvas, and shipped in 1.2.3. This page describes capabilities and interoperability at a user level; for normative detail, the frozen format and contract specifications are authoritative.
The showcases carry the validation blocks this page leaves out — definition hashes, run identifiers, fork ordinals, and the recorded API exchanges behind every figure. Seaglass Foundry™ is happy to walk an evaluator through it.
rich@seaglassfoundry.com