Modeler CLI

Syside Modeler CLI is a standalone command-line tool for validating and formatting SysML v2 models. It provides fast, lightweight model checking without requiring VS Code or any editor, making it ideal for CI/CD pipelines, git hooks, and team workflows.

Prerequisites

To run and use Syside Modeler CLI, you need:


Download CLI

Download Syside Modeler CLI for your platform:

Other platforms: Windows | macOS (Intel) | macOS (ARM) | Linux

Install CLI

Option A: Manual Installation

  1. Extract the .zip file to %LOCALAPPDATA%\Programs\Syside

  2. Add to PATH via Environment Variables:

    1. Open “Environment Variables” (search in Start menu)

    2. Under “User variables”, select “Path” and click “Edit”

    3. Click “New” and add %LOCALAPPDATA%\Programs\Syside

    4. Click “OK” to save

Option B: PowerShell Installation

Run these commands in PowerShell:

# Create directory and extract
mkdir "$env:LOCALAPPDATA\Programs\Syside" -Force
tar -xf syside-0.8.1-x86_64-windows.zip -C "$env:LOCALAPPDATA\Programs\Syside"

# Add to PATH
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newPath = "$env:LOCALAPPDATA\Programs\Syside"
if ($currentPath -notlike "*$newPath*") {
   [Environment]::SetEnvironmentVariable("Path", "$currentPath;$newPath", "User")
}

Note

Restart your terminal after installation for PATH changes to take effect.

Version History
  • v0.8.2: Syside bundle was renamed from SysIDE.app to Syside.app.

  1. Open the downloaded .dmg file and drag Syside.app to ~/Applications/

  2. Create a symlink to run syside from anywhere:

    mkdir -p ~/.local/bin
    ln -s ~/Applications/Syside.app/Contents/MacOS/syside ~/.local/bin/syside
    
  3. Add ~/.local/bin to your PATH by adding this line to ~/.zshrc:

    export PATH="$HOME/.local/bin:$PATH"
    
  4. Reload your shell configuration:

    source ~/.zshrc
    
  1. Extract the downloaded .tar.xz file to ~/.local:

    mkdir -p ~/.local
    tar -xJf syside-<version>-x86_64-linux-glibc.tar.xz --directory ~/.local
    
  2. Add ~/.local/bin to your PATH by adding this line to ~/.bashrc:

    export PATH="$HOME/.local/bin:$PATH"
    
  3. Reload your shell configuration:

    source ~/.bashrc
    

Verify Installation

Once Syside Modeler CLI is installed, quickly verify it is working as expected.

  1. Open a terminal

  2. Run the following command:

    syside --version
    

    You should see output similar to: 0.8.1 (4bb41581f62d5fe422a57c1c381aa42cb41203b3)


Commands

Command

Description

check

Validate models for semantic errors and warnings

format

Format SysML v2 models according to a consistent style

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 check
    

    Note

    When using syside check without explicitly listing out the files, Syside ignores hidden files and files from hidden directories (starting with ., e.g. .venv or .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

-h, --help

Display the help message with all available flags and short descriptions

-v, --version

Display the version number of Syside

-j THREADS

The level of concurrency to use. Allowed values depend on the machine Syside is used on: from 1 to the number of logical threads. Default value: number of logical threads divided by 2

--std DIRECTORY

The path to the sysml.library directory that contains the standard library. If not given, Syside will use the standard library bundled with it

-i, --include FILE_PATTERN

Additional paths to be included as external libraries for analysis

-e, --exclude FILE_PATTERN

Paths or files that should be omitted from analysis

-d, --diagnose

Choose which files should be analyzed. Options: project (default, does not validate external libraries or standard library), external (additionally validates external libraries), all (additionally validates standard library)

-q, --quiet

Suppress main output

-s, --stats

Print all the files analyzed and the number of diagnostics found in each

-t, --time

Print all the files analyzed and how long the analysis took for each file. Needs to be combined with --stats

-c, --colour

Controls whether to colorize the output. Options: auto (default), yes, no

-o, --output OUTPUT

Output results of --stats and --time to a file at the given path

--crash-reports

Controls whether to send automatic crash reports or not. More information at Telemetry.

Usage Examples

Run validation in CI/CD pipeline:

syside check --quiet
if [ $? -ne 0 ]; then
  echo "Model validation failed"
  exit 1
fi

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 format
    

    Note

    When using syside format without explicitly listing out the files, Syside ignores hidden files and files from hidden directories (starting with ., e.g. .venv or .git). To format files from these directories, either list them explicitly or use --include CLI 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 formatted and 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

-h, --help

Display the help message with all available flags and short descriptions

-v, --version

Display the version number of Syside

-j THREADS

The level of concurrency to use. Values allowed: from 1 to 8. Default value: 4

-e, --exclude FILE_PATTERN

Paths or files that should be omitted from analysis

-q, --quiet

Suppress main output

--check

Check whether the files can be reformatted without editing them

--line-width, --line-length LENGTH

Set the maximum acceptable line length. Default value: 100

--tabs

Use tabs for indentations instead of spaces

--tab-width WIDTH

Number of spaces to use for indentation. Only applies if not using --tabs. Default value: 4

Usage Examples

Use in Git pre-commit hooks to prevent commits with bad formatting:

#!/bin/bash
# .git/hooks/pre-commit

syside format --check
if [ $? -ne 0 ]; then
  echo "Please run 'syside format' before committing"
  exit 1
fi

For more information about Git hooks, see Git documentation.


Update CLI

Syside Modeler CLI does not have a built-in updater. To update to a new version:

  1. Download the latest version from Download CLI section above

  2. Repeat the Install CLI steps to install the new version

  3. Verify the update:

    syside --version
    

Tip

Your license activation will be preserved during the update.