Sysight
SysML v2 and KerML models in VS Code, understood by Modelware's
model server: the whole model checked as you type, names followed across files and libraries,
values computed and requirements decided where they are written, and SPARQL queries over it all.
Features
- Diagnostics for the whole workspace in the Problems view, as you type: syntax, names that
do not resolve, the specification's rules, and asserted constraints and requirements that
fail. Files you have not opened are checked too.
- Navigation: the outline, go to definition and find references, across the workspace's
files and into the libraries, whose documents open read-only; folding by declaration.
- Completion of the names in scope, for what the place asks: types after
:, features
after :>, a package's members after ::, a feature's after .; keywords and snippets at
the start of a member. Names that need quoting are quoted.
- Rename (F2) a name declared in your files, everywhere it is spelled, with VS Code's
preview. The libraries' names stay as they are.
- Formatting (Format Document, Format Selection, or
editor.formatOnSave) in the
notation's canonical style, keeping your notes and blank lines. Put // sysight-format ignore
before a member to keep it as written. A [format] table in sysight.toml sets the
indentation and when and/or chains break, for everyone on the project.
- Semantic highlighting: definitions, usages, attributes, parameters, packages and the
libraries' names each in their own color, as resolved, not guessed from the words.
- Insight on hover: what an element is, what it specializes, types and redefines, its
documentation (else its type's or a supertype's), its computed value, and a constraint's or
requirement's verdict (satisfied, violated or undetermined, and why).
- Inlay hints: computed values (
= 2214000 kg), and what the language implies but the text
does not say: the library elements a definition or usage specializes, by its kind and its
place (part def Engine :> Parts::Part; a part inside a part :> Items::Item::subparts; a
port of a part :> Parts::Part::ownedPorts; and the rest of the specification's rules), less
what its written relationships already reach; private before an import that states no
visibility (double-click to write it); public before other members (off by default); and
the name an unnamed element takes (:>> engine.mass is named mass). Each kind has a setting.
- The Sysight panel, docked on the right with the agents (in the activity bar before VS Code
1.106), and laid out like them: the answers above, the query at the bottom. The query editor
helps write SPARQL: whole queries and patterns as idioms whose variables are fields to fill
in (Tab to the next); after
;, , or a subject, the properties that apply to it (those of
its type first, with their descriptions, domains and ranges); after a property, a variable
named for what it holds; classes after a; the eval: functions in expressions. Variables
are drawn as boxes, and editing one renames it everywhere. Each answer comes in
the view that suits it: a table (verdicts as badges; an element, the model's or a
library's, opens at its declaration), a bar chart for a label and a number per row, a headline for a single value,
yes or no for ASK, and a card per resource for CONSTRUCT and DESCRIBE. Queries are
saved by name in the model's queries folder (or the one sysight.queriesFolder names), to
commit with the model and recall later.
- Sessions, as in Claude Code: each conversation of queries and answers is a session,
titled by its first query (rename it as you like). The panel's title opens the list of past
sessions, to search and reopen; + starts a new one; and a session opens in an editor tab
too (Sysight: New Session in an Editor Tab), to keep several side by side. They are kept as
Claude Code keeps its conversations: a JSON Lines file per session, in
~/.sysight/sessions/<project>/.
- Query files run in the panel: Run in Sysight above every
.rq file (or Sysight: Run
Query in Sysight on the selection, from the editor's context menu) runs it in the panel's
session, with its views and history. So a query an agent writes is a click away: ask it to save
the query in queries/ (as <name>.rq), and it is in the panel's saved queries too. The prefixes kerml:, sysml: and eval: need no
declaring; queries see subclasses (sysml:Part includes every kind of part).
- The graph view: the model's elements and relationships as a graph in an editor tab, as in
Obsidian. Sysight: Open Model Graph draws the whole model (or a file or folder, from the
Explorer's context menu); Sysight: Show in Graph, in an editor's context menu, an element and
its neighbors; Open as graph on any CONSTRUCT or DESCRIBE answer in the panel, or above a
query file, draws that answer. Hover an element to bring out its neighbors, click it for what
it is and how it relates, double-click to open its declaration, drag to pin it; Expand adds
its neighbors. Settings, as in Obsidian: filters (ownership, library elements, orphans, each
relationship), groups (color by kind, package or file), display (labels, arrows, sizes) and
forces. Save keeps the view as a query file whose first line holds its settings
(
# graph: {...}), committed with the model; it follows the model as it changes. Agents can
show you a graph too: the MCP tool graph opens one here.
- Syntax highlighting for
.sysml and .kerml, from the OMG grammars.
The standard KerML and SysML libraries are built in. A model's sysight.toml (at its root) can
name other libraries, exclude paths, and more; the same server answers the sysight command,
agents (MCP) and other windows, so they all see the same model, unsaved text included. The
server keeps running for a while after the last window closes (15 minutes by default), so
reopening is instant; sysight start in a terminal keeps it running until sysight stop.
The manual covers all of this, and
using Sysight with agents, on the command line, in CI and from programs.
Requirements
Packages for macOS, Linux and Windows carry the sysight command. Elsewhere, install it
(instructions) or set sysight.path.
Commands and settings
| Command |
|
| Sysight: Show Query Panel |
Open the Sysight panel (⌘Enter / Ctrl+Enter runs the query in it) |
| Sysight: New Session in an Editor Tab |
A new session, in a tab of its own |
| Sysight: Run Query in Sysight |
Run the selection, or the query file, in the panel |
| Sysight: Show Model Server |
The server's workspace, release, lifetime, files, libraries and editors |
| Sysight: Restart Model Server |
Restart the servers with the current build and configuration, and attach again |
| Sysight: Show Output |
The extension's log |
| Setting |
|
sysight.path |
The sysight command to run (default: the one carried, else the PATH's) |
sysight.queriesFolder |
Where the panel saves queries, relative to the model's root (default queries) |
sysight.inlayHints.values |
Show computed values (default on) |
sysight.inlayHints.impliedSpecializations |
Show the library specializations the notation implies (default on) |
sysight.inlayHints.defaultVisibility |
Show private before imports without a visibility (default on) |
sysight.inlayHints.memberVisibility |
Show public before other members without a visibility (default off) |
sysight.inlayHints.effectiveNames |
Show the names unnamed elements take (default on) |
sysight.trace.server |
Log the language server messages |
Support
Sysight is free to use, and its standard support is through issues:
report problems, request features and ask questions there. For organizations that need committed
response times, priority fixes or help adopting it, Modelware offers enterprise support
packages: info@modelware.io.
License
Proprietary software, free to use directly by individuals and organizations (companies
included) under its license (LICENSE.md); commercial use of Sysight itself (reselling,
redistributing, hosting, building products on it) needs a license from info@modelware.io. Third-party software included is listed with its licenses
in THIRD_PARTY_LICENSES.txt.
| |