CLI Commands
Command |
Description |
|---|---|
Validate models for semantic errors and warnings |
|
Format SysML v2 models according to a consistent style |
|
viz Labs |
Generate diagrams from SysML v2 models |
Check command
Validates models for semantic errors and warnings.
Basic Usage
Validate specific files
syside check /path/to/analyzed_model.sysml /path/to/analyzed_model_2.sysml
Validate all files in current directory recursively
syside checkNote
When using
syside checkwithout explicitly listing out the files, Syside ignores hidden files and files from hidden directories (starting with., e.g..venvor.git). To analyze files from these directories, list them explicitly.
Output
If Syside does not find any errors or warnings, there will be no output. If Syside does find anything, the output will look similar to this:
/path/to/analyzed_model.sysml:5:28: error (type-error): 'Non-Conforming Types 1'::a does not conform to ScalarValues::String
5 | attribute b : String = a;
| ^
/path/to/analyzed_model.sysml:12:30: error (type-error): ScalarValues::Integer does not conform to ScalarValues::Positive
12 | attribute b : Positive = -42;
| ^^^
/path/to/analyzed_model.sysml:30:27: error (type-error): Collect::A does not conform to Collect::B
30 | attribute b : B [*] = (1..10)->collect { in attribute x : Positive; new A(x) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/path/to/analyzed_model.sysml:38:34: error (type-error): ScalarValues::Integer does not conform to ScalarValues::Positive
38 | attribute b : Positive [*] = (-1..10)->select { true };
| ^^^^^^^^^^^^^^^^^^^^^^^^^
The output contains the source file path, line number, character number, diagnostic code, message, and code snippet.
Available Options
Option |
Description |
|---|---|
|
Display the help message with all available flags and short descriptions |
|
Choose which files to validate: |
|
Treat warnings as errors, exiting with a non-zero code if any warning is found |
|
Suppress main output |
|
Print all analyzed files and the number of diagnostics found in each |
|
Print how long analysis took per file. Combine with |
|
Colorize output: |
|
Write |
|
Path to a |
|
Concurrency level, 1 to 8 (default: 4) |
|
Additional paths to include as external libraries |
|
Paths or glob patterns to exclude from analysis |
|
Path to the |
|
Automatic crash report handling: |
Usage Examples
Run validation in CI/CD pipeline:
syside check
Format command
Formats SysML v2 models according to a consistent style. Useful when working in a team and using version control systems to prevent whitespace-only changes in history.
Basic Usage
Format specific files
syside format /path/to/formatted_model.sysml /path/to/formatted_model_2.sysml
Format all files in current directory recursively
syside formatNote
When using
syside formatwithout explicitly listing out the files, Syside ignores hidden files and files from hidden directories (starting with., e.g..venvor.git). To format files from these directories, either list them explicitly or use--includeCLI option.
Output
After running the format command, you should see output similar to:
$ syside format
/path/to/formatted_model.sysml: formatted
1 file reformatted, 0 files left unchanged
The output shows the path of the file(s) that were reformatted, as well as the number of files that did not need reformatting.
Check Mode
The syside format --check command can act as a quality gate without editing the
files:
If none of the files need reformatting, Syside outputs
<num> file[s] already formattedand exits with code 0 (success)If at least one file needs reformatting, Syside exits with code 1 (failure) and outputs:
/path/to/formatted_model.sysml: would be formatted 1 file would be reformatted, 0 files already formatted
If syntax errors are found, Syside exits with code 2 (failure)
Note
For semantic validation, use syside check command. The format command only
checks syntax errors.
Available Options
Option |
Description |
|---|---|
|
Display the help message with all available flags and short descriptions |
|
Check whether files need reformatting without editing them |
|
Suppress main output |
|
Maximum line length the formatter will target |
|
Indent using tabs instead of spaces |
|
Number of spaces per indentation level. Only applies if not using |
|
Path to a |
|
Concurrency level, 1 to 8 (default: 4) |
|
Paths or glob patterns to exclude from formatting |
|
Automatic crash report handling: |
Usage Examples
Use in Git pre-commit hooks to prevent commits with bad formatting:
#!/bin/bash
# .git/hooks/pre-commit
syside format --check
For more information about Git hooks, see Git documentation.
Viz command Labs
Note
The feature is provided until 2026-06-01 under Syside Modeler while still being actively improved and refined by the teams of Sensmetry and Tom Sawyer Software. The licensing terms for further use are to be clarified in the meantime.
Tip
On headless Linux servers (no display), prepend xvfb-run -a to visualization
commands (syside viz). This creates a virtual display that the Tom Sawyer
visualization engine requires to render diagrams.
Install it with sudo apt-get install -y xvfb (Ubuntu/Debian).
Element command
Generates diagrams for individual model elements by qualified name, without requiring view definitions in the model.
Basic Usage
Pass a qualified name and one or more model files or directories:
syside viz element <qualified-name> <paths...> --output-file <file>
<qualified-name>- qualified name of the element to visualize<paths...>- one or more.sysml/.kermlfiles or directories (searched recursively)--output-file- path to save the image; format is inferred from extension (default:element.svg)
Tip
In SysML v2, element names can contain spaces and special characters (e.g. 'Flight
Controller v2' or 'Motor "Type A"'). When passing qualified names that contain
such names, make sure to quote or escape them appropriately for your shell. For
example, names with spaces should be wrapped in double quotes:
syside viz element "DroneModel::'Flight Controller v2'" drone-model/
Alternatively, use simple names without spaces or special characters.
Available Options
Option |
Description |
|---|---|
|
Display the help message with all available flags and short descriptions |
|
How many levels of descendants to render. |
|
Layout style: |
|
Zoom level for rendering. Applicable only to PNG output (default: |
|
Path to save the image. Format is determined by extension ( |
|
Path to a |
|
Additional paths to include as external libraries |
|
Paths or glob patterns to exclude from file discovery |
Usage Examples
The following examples use the drone model from the reference files section.
DroneModel.sysml
package DroneModel {
doc
/* This example illustrates how to define views that can be visualized
* using `syside viz view` command. Please see the documentation in
* file `DroneModelViews.sysml`.
*/
private import ScalarValues::*;
part def Drone {
part battery : Battery;
part motors : Motor [4..6];
part controller : FlightController;
part droneFrame : DroneFrame;
}
part def Battery {
attribute capacity : Real;
attribute voltage : Real;
attribute mass : Real;
}
part def Motor {
attribute maxSpeed : Real;
attribute power : Real;
attribute mass : Real;
}
part def FlightController {
attribute processorSpeed : Real;
attribute mass : Real;
}
part def DroneFrame {
attribute mass : Real;
attribute material : String;
}
part def DroneSystem {
part myDrone : Drone {
part :>> motors [4] : Motor;
}
part someoneElsesDrone : Drone {
part :>> motors [6] : Motor;
}
}
}
Render
DroneSystemwith one level of depth:syside viz element "DroneModel::DroneSystem" drone-model/ --depth=1 --output-file DroneSystem.png
Render the full
Dronedefinition with all descendants:syside viz element "DroneModel::Drone" drone-model/ --output-file DroneFull.png
Same diagram as SVG:
syside viz element "DroneModel::Drone" drone-model/ --output-file DroneFull.svg
Render as a tree layout instead of nested:
syside viz element "DroneModel::DroneSystem" drone-model/ --rendering asTreeDiagram --output-file DroneSystem_Tree.png
View command
Renders diagrams from SysML v2 view definitions in the model. This is the recommended approach for repeatable, version-controlled diagram generation.
See SysML v2 Views for details on view definitions and available attributes.
Basic Usage
syside viz view <paths...>
By default, this renders all view definitions found in the model.
Available Options
Option |
Description |
|---|---|
|
Display the help message with all available flags and short descriptions |
|
Render only the specified view(s). Can be repeated. Defaults to all views in the model |
|
Directory to save rendered images (default: |
|
Path to a |
|
Additional paths to include as external libraries |
|
Paths or glob patterns to exclude from file discovery |
Usage Examples
The following examples extend the drone model with view definitions. See reference files for the full model.
DroneModelViews.sysml
package DroneModelViews {
private import Views::asTreeDiagram;
doc
/* View definitions for the drone model. Each view lists elements
* to render via `expose` statements and controls rendering options
* through string attributes.
*/
part def DroneSystemViews {
view myNestedView {
expose DroneModel::DroneSystem::myDrone;
filter @ SysML::PartUsage;
}
view myTreeView {
expose DroneModel::DroneSystem::myDrone;
expose DroneModel::DroneSystem::someoneElsesDrone;
filter @ SysML::PartUsage;
attribute depth = 3;
attribute fileName = "tree.svg";
render asTreeDiagram;
}
view myTreeView_Zoom2 {
expose DroneModel::DroneSystem::myDrone;
expose DroneModel::DroneSystem::someoneElsesDrone;
filter @ SysML::PartUsage;
// depth defaults to 1
attribute depth = 2;
// fileName defaults to "diagram-{viewName}.{fileType}"
attribute fileName = "tree-zoom.png";
// fileType defaults to "SVG"
attribute fileType = "PNG";
// zoomLevel defaults to "3.0"
attribute zoomLevel = 2.0;
// omitting render defaults to nested diagram
render asTreeDiagram;
}
}
}
Render all views in the model:
syside viz view drone-model/ --output-dir views_all
Render a specific view by qualified name:
syside viz view drone-model/ --qualified-name "DroneModelViews::DroneSystemViews::myNestedView" --output-dir views_myNestedView