Skip to content
sysml-rs is pre-alpha: a partial SysML v2 implementation with no OMG conformance claim. Interfaces change without deprecation while the version stays 0.x.

The Simulation App

sysml-rs toolingExperimental / partial supportstatus: pre-alpha

You want to see a model — browse its structure, drive a live simulation, watch verification verdicts land — without writing a query for every step. The SysML v2 Simulation App (in editors/simulation-app) is the project’s workbench frontend: a React + TypeScript app that runs in your browser and talks to a local sysml-api server. It holds no model state of its own — everything on screen is the same service layer the CLI, LSP, and MCP interfaces expose.

One model, several focused workbenches:

  • Browse — the model tree, element details, source, and diagram views.
  • Run — live simulation sessions over the runtime: start an orchestrator, step, inject, watch timeseries.
  • Verify — verification cases and the verdict matrix.
  • Requirements — the requirements workbench: documents, traces, suspect links.
  • Analyze — analysis cases, sweeps, and trade studies.
  • Compare — a Simulate mode (reached from the session switcher or Cmd-K, not a nav tab) for diffing forked simulation branches.

Two processes: the backend on :8080, the app’s Vite dev server on :3010, which proxies API, session-WebSocket, and /lsp traffic to the backend.

Terminal window
# from the repo root
cargo build --release -p sysml-api
./target/release/sysml-api
# in a second terminal
cd editors/simulation-app
npm install
npm run dev # http://localhost:3010

Then open a workspace by deep link — the ?workspace= parameter auto-loads a model folder:

http://localhost:3010/run?workspace=/abs/path/to/examples/espresso-production-cell

The canonical guided tour is the espresso production cell example (examples/espresso-production-cell in the repository): drive a live orchestrator session in Run, watch group-head temperatures climb into the brew band, read the verdict matrix in Verify — and the compact examples/espresso-pump-hybrid for breakpoints and fork-and-compare on the Compare canvas.

Other package.json scripts: npm run build (production build), npm run typecheck, npm run test (vitest), npm run test:e2e (Playwright). A Tauri desktop shell exists behind npm run dev:desktop / npm run build:desktop.

Experimental / partial support. The app is developed against the pre-alpha backend and is not packaged or released — running from a source checkout as above is the only supported path today. Expect rough edges, UI churn, and no compatibility commitment; the backend it fronts binds to loopback by default with the security defaults of a local development server.

The same codebase ships embed.html, a standalone build of the app’s diagram renderer. It is what powers the interactive diagrams in the SysML v2 Book: export a view as ViewModel JSON, drop the static embed build next to it, and the diagram renders with no live server. The export-and-embed workflow is documented on views and diagrams.

Every button in the app dispatches a service command over the HTTP API — the app’s dev proxy forwards to GET /commands-catalogued endpoints and the session WebSocket. If you want to automate a workflow you first clicked through in the app, the service API page shows the same operations as curl calls.