Status: Alpha - Active development, APIs may change
A Rust-based parser and tooling for SysML v2 (Systems Modeling Language) and KerML (Kernel Modeling Language).
graph TB
subgraph "SysML v2 Files"
SysML[".sysml / .kerml"]
end
subgraph "Core (Rust)"
Base[base<br/>Parser, AST, Semantic Analysis]
CLI[cli<br/>Command Line Tool]
LSP[language-server<br/>LSP Implementation]
end
subgraph "VS Code Extensions (TypeScript)"
Client[language-client<br/>LSP Extension]
Modeller[modeller<br/>Diagram Editor]
Viewer[viewer<br/>Diagram Viewer]
end
subgraph "Diagram Library (TypeScript)"
Core[diagram-core<br/>Types & Layout]
UI[diagram-ui<br/>React Components]
end
SysML --> Base
Base --> CLI
Base --> LSP
LSP <--> Client
Core --> UI
UI --> Modeller
UI --> Viewer
Client --> Modeller
Client --> Viewer
Feature-based organization with independent submodules for versioning flexibility.
syster/
├── base/ # Parser, AST, semantic analysis
├── cli/ # Command-line tool
├── language-server/ # Language Server Protocol implementation
├── language-client/ # VS Code LSP extension
├── modeller/ # VS Code modeller extension
├── viewer/ # VS Code viewer extension
├── diagram-core/ # Diagram types and layout (TypeScript)
├── diagram-ui/ # React Flow components (TypeScript)
└── pipelines/ # CI/CD pipeline templates
| Feature | Path | Repository | Description |
|---|---|---|---|
| Base | base/ |
syster-base | Parser, AST, semantic analysis |
| CLI | cli/ |
syster-cli | Command-line tool |
| LSP Server | language-server/ |
syster-lsp | Language Server Protocol |
| LSP Client | language-client/ |
syster-vscode-lsp | VS Code language support |
| Diagram Core | diagram-core/ |
syster-diagram-core | Diagram types (TS) |
| Diagram UI | diagram-ui/ |
syster-diagram-ui | React Flow components |
| Modeller | modeller/ |
syster-vscode-modeller | VS Code modeller |
| Viewer | viewer/ |
syster-vscode-viewer | VS Code viewer |
| Pipelines | pipelines/ |
syster-pipelines | CI/CD templates |
This repository includes a VS Code dev container with all development tools pre-installed:
- Open the repository in VS Code
- When prompted, click "Reopen in Container" (or run
Dev Containers: Reopen in Containerfrom the command palette) - The container will automatically:
- Initialize all git submodules
- Install Rust, Node.js, and Bun
- Set up dependencies
# Clone with all submodules
git clone --recurse-submodules https://github.com/jade-codes/syster.git
# Or if already cloned, initialize submodules
git submodule update --init --recursiveEach submodule is built independently. Navigate to the submodule directory and follow its README:
# Build the base parser
cd base && cargo build && cargo test
# Build the CLI
cd cli && cargo build
# Build the LSP server
cd language-server && cargo build
# Build VS Code extensions
cd language-client && npm install && npm run compile
cd modeller && npm install && npm run compile
cd viewer && npm install && npm run compile-
Build the LSP binary:
cd language-server && cargo build --release
-
Build the extension:
cd language-client && npm install && npm run esbuild
-
Press
F5in VS Code to launch the extension in a new window
Documentation lives in each component's repository:
- syster-base - Core architecture, SysML primer, contributing guide
- syster-lsp - LSP features and VS Code extension usage
MIT License - see LICENSE.md