Skip to content
slcornford edited this page Sep 30, 2026 · 23 revisions

This is a web interface — doesn't that mean our data goes to a server?

No. Kotar is a serverless web application that runs locally in your browser.

Model processing and normal file operations happen locally. Your workspace does not need to be uploaded to a WebIDE backend in order to edit, parse, validate, visualize, or otherwise work with your models.

The following diagram shows the deployment architecture. Components inside the Laptop boundary execute locally. Connections to enterprise services such as a remote Flexo repository are optional.

Kotar deployment architecture

Kotar also supports direct access to files on your machine through the browser's File System Access capabilities.

This is different from web applications where the browser primarily acts as a front end and sends your content to a remote server for processing.

Remote communication only occurs when you explicitly use functionality configured to communicate with an external or shared service, such as a remote enterprise Flexo instance.

How do you pronounce Kotar?

It is pronounced KOH-tar.

KOH sounds like the "ko" in Kodak, tar rhymes with "car" or "jar".

How does Kotar interact with my local file system?

Kotar supports the browser's File System Access capabilities, allowing you to open and work directly with files stored on your local machine.

You can open a local workspace and work with its files directly from Kotar. The files remain normal files on your machine and are not uploaded to some Kotar server.

Can I edit the same files outside Kotar?

Yes.

Files opened through local File System Access are normal files on your machine and can also be edited using other applications and development tools.

Changes made outside Kotar are supported, allowing Kotar to participate in normal local development workflows with tools such as:

  • Git clients
  • Other text editors and IDEs
  • Scripts
  • Command-line utilities

From a file-access perspective, Kotar therefore behaves much like a locally installed application: both Kotar and your other local tools can work with the same files.

Does using local File System Access upload my files?

No.

Granting Kotar access to a local file or directory allows the browser application to work with that file on your machine. It does not, by itself, upload the file to a remote Kotar service.

Remote communication only occurs when you explicitly use functionality configured to communicate with a remote service.

If Kotar runs in a browser, what is different from running a local desktop application?

For normal file-based workflows, very little.

Kotar can access an explicitly opened local workspace through the browser's File System Access capabilities, and files can be modified both inside and outside Kotar.

The main difference is access to other local services. Because Kotar runs within the browser's security environment, connecting directly to arbitrary local services may require those services to be exposed appropriately.

Support for accessing local services through file:///-based configuration can also be added where required.

Is Kotar qualified for EAR 7x export-controlled or proprietary material?

Kotar is designed so that modeling can be performed entirely locally, without sending model data to a WebIDE backend.

The hosted Kotar is a serverless web application: the application is delivered through the browser, while the modeling environment, workspace, and local Flexo instance run locally. A desktop-installable version is also available.

However, technical data locality should not be confused with formal authorization to handle export-controlled or company-proprietary information.

Whether Kotar is approved for EAR-controlled data, proprietary information, or a particular security classification depends on the applicable organizational IT, cybersecurity, export-control, and deployment requirements.

For environments with specific security requirements, the desktop/local deployment can be evaluated and approved through the applicable organizational security process.

What about the Flexo integration — can Flexo run locally?

Yes.

Kotar includes a local, in-browser Flexo instance. This Flexo instance is private to the individual user and does not require a separately deployed Flexo server.

For enterprise collaboration, the Enterprise Edition can optionally connect to a remote, shared Flexo instance. This enables workflows such as:

  • Cloning models from a shared repository
  • Pulling model changes
  • Pushing model changes
  • Collaborating through a shared model repository

Using a remote Flexo instance is optional.

Where is the local Flexo repository stored?

Kotar includes a local, in-browser Flexo instance. Its model repository is local to the user's environment and is not a shared remote repository.

The local Flexo instance provides model persistence and identity management while allowing Kotar to operate without a separately deployed Flexo server.

Note: The exact browser persistence/storage mechanism is an implementation detail and may change. Applications should interact with the model through the provided interfaces rather than depending on the underlying storage representation.

Is Flexo required?

No.

Git can be used for source-based model management without Flexo.

However, Flexo provides additional model repository capabilities, including persistence of model identities and graph-based model information.

Kotar therefore supports a hybrid configuration-management approach in which Git and Flexo work together.

Every valid model can be automatically committed during editing, providing fine-grained ("micro-commit") model history while Flexo maintains the repository-level model representation.

Can Kotar work with a repository other than Flexo?

Potentially.

The architecture is designed around standard SysML v2 APIs rather than requiring Kotar itself to depend on a specific repository implementation.

A different repository implementation could therefore potentially be integrated if it provides the required compatible APIs and semantics.

Flexo is the currently integrated model repository and provides functionality beyond basic Git-based storage.

Could Kotar integrate with Teamwork Cloud?

Potentially, but this is not currently a supported integration.

Kotar is designed around SysML v2 APIs and repository interfaces. If Teamwork Cloud, or an integration layer in front of it, exposes compatible APIs and the required model semantics, an integration could potentially be developed.

The currently integrated solution uses Flexo/OpenMBEE together with Git.

How are model UUIDs handled?

Flexo persists model identities, including UUIDs, as part of the repository representation.

The textual SysML v2 representation currently does not contain all of the information necessary to independently preserve UUID identity through arbitrary text operations.

For this reason, Kotar combines textual model management with repository-level identity management rather than relying exclusively on text files for model identity.

Does Git contain the UUIDs as well as the SysML v2 text?

Currently, UUIDs are not directly tracked in the SysML v2 textual representation.

Git therefore primarily versions the textual model, while Flexo maintains repository-level model identities.

Kotar combines the two mechanisms so that Git can provide familiar source configuration management while Flexo provides model-aware persistence.

How does model versioning and diffing work?

Kotar uses a hybrid Git + Flexo configuration-management approach.

Git provides fine-grained version history of the textual SysML v2 model. Valid model states can be automatically committed while editing, providing a micro-commit history.

Because a purely textual diff is not always sufficient to understand semantic model changes, model-aware diff capabilities are also being developed.

Kotar has an initial model diff capability, and integration with LieberLieber LemonTree is being investigated/developed for more advanced model comparison.

What kind of model queries are supported?

Kotar lets you develop and test queries directly from files in your workspace. This can be more convenient for developing and experimenting with queries than using the web service's stored-query functionality.

The query type is determined by the file extension:

Extension Query Type Target
.json / .jsonc JSON query Model/query services
.rq SPARQL MMS
.sql SQL Relational database
.kq KerML Query Live, in-memory model

To workshop a query, create a file with the appropriate extension in your workspace, enter the query, and execute it from Kotar.

For example, create a .json or .jsonc file to develop a JSON-based model query:

JSON query example

Similarly:

  • Use .rq files for SPARQL queries against MMS
  • Use .sql files for SQL queries against the relational database
  • Use .kq files for KerML queries against the live, in-memory model

Why are some SysML v2 properties missing when I query the RDF graph?

The RDF graph uses a minified storage representation of the SysML v2 model.

To reduce database size and avoid storing redundant information, flexo-sysml does not persist properties that are implied by the model or can be re-derived from other information.

This does not mean that these properties are lost. When accessing the model through the SysML v2 service endpoints, the service reconstructs the omitted properties and returns the expected SysML v2 representation.

As a result, there is an important distinction between:

  • SysML v2 API queries — return the reconstructed SysML v2 model, including properties that can be derived from the stored representation.
  • Direct SPARQL queries against the RDF graph — currently operate on the lower-level, minified RDF storage representation and may therefore not expose all properties that would appear in the SysML v2 API representation.

A future capability is planned to provide a SysML v2 view of the RDF graph for SPARQL queries. This may use a rule engine or "magic property" layer to derive omitted properties dynamically, allowing SPARQL queries to operate against a logically fully materialized SysML v2 representation without requiring all derived information to be physically stored in the graph.

Note: This SysML v2 SPARQL view has not yet been implemented. When writing .rq queries today, be aware that you are querying the minified RDF storage representation directly.

Is the diagram generator based on Tom Sawyer?

Kotar includes an in-house diagram generator.

Tom Sawyer can also be used as an option for diagram generation where its automatic layout capabilities are desired.

Can automatic detection of source changes be turned off?

User control over automatic source-change detection has been identified as a desired capability.

If this option is not present in the current release, it is planned to be added.

Can Kotar be deployed without an enterprise backend?

Yes.

There are two primary deployment approaches:

  • Hosted serverless Kotar — delivered as a web application with no WebIDE application backend.
  • Desktop installation — installable locally for environments where a browser-hosted deployment is not appropriate.

A shared backend is only required for capabilities that inherently require shared services, such as collaborative model repository access.

Can Kotar run locally and connect to our GitLab?

Yes, with some current limitations.

Kotar can use GitLab as the remote Git repository for model and workspace files. A separately deployed Flexo backend is not required.

Currently:

  • GitLab repositories can be accessed using Kotar's built-in terminal.
  • Git operations are routed through a same-origin Git proxy.
  • The graphical Open from GitHub workflow currently only accepts github.com repository URLs.
  • Direct GitLab support in the graphical clone workflow is planned.

Note: GitLab integration is currently being validated. If you encounter an issue with clone, fetch, pull, or push, please report it through Kotar support repository.

Do we need to deploy a Flexo server if we already use GitLab?

No.

Flexo is included as a local, in-browser service and does not require a separately deployed backend.

If GitLab is your existing collaboration and source-control platform, you can initially use GitLab as the remote Git backend without deploying an enterprise Flexo instance.

A remote Flexo instance can be added later if you want shared model-repository features such as persistent model identities, model queries, clone/push/pull of graph-based model revisions, or other collaborative Flexo capabilities.

How do I connect Kotar to GitLab?

The current deployment approach uses a same-origin Git proxy.

  1. Deploy Kotar.
  2. Provide a Git proxy at /git-proxy/ on the same origin as Kotar.
  3. Configure the proxy to forward Git smart-HTTP requests to your GitLab server.
  4. Have the proxy attach the required GitLab credentials server-side.
  5. Clone the GitLab repository using the Kotar terminal:
git clone https://<gitlab-host>/<group>/<project>.git

The GitLab credential can be held by the proxy and does not need to be exposed to the browser.

What does the Git proxy need to support?

The Kotar Git client follows the isomorphic-git CORS proxy convention.

By default, Git requests are routed through:

/git-proxy/

A request to:

/git-proxy/<host>/<path>

is forwarded to:

https://<host>/<path>

The proxy needs to support the standard Git smart-HTTP operations used for clone, fetch, pull, and push, including:

  • GET /info/refs?service=git-upload-pack
  • POST /git-upload-pack
  • git-receive-pack for push operations

Relevant headers, including authorization, content-type, accept, and git-protocol, should be forwarded appropriately.

Note: The exact proxy requirements are still being validated against GitLab deployments.

Can we keep our GitLab credentials out of the browser?

Yes.

The recommended deployment keeps the GitLab credential in the server-side Git proxy.

The proxy attaches the credential when forwarding Git requests to GitLab, so the credential does not need to be exposed to browser-side Kotar code.

Can we use a different Git proxy URL?

Yes.

The default Git proxy path is:

/git-proxy/

When using the built-in terminal, another proxy can currently be selected using the GIT_CORS_PROXY environment variable.

Deployment-level configuration of the proxy URL is planned so administrators can configure the proxy once for an entire Kotar deployment.

Why can't I open a GitLab repository using "Open from GitHub"?

The current graphical clone workflow only accepts github.com repository URLs.

Until GitLab support is added to the graphical clone workflow, use the built-in terminal:

git clone https://<gitlab-host>/<group>/<project>.git

Direct GitLab support in the graphical clone workflow is planned.

Do we need to deploy a Flexo server if we already use GitLab?

No.

Flexo is included as a local, in-browser service and does not require a separately deployed backend.

If GitLab is your existing collaboration and source-control platform, GitLab can be used as the remote Git backend while the local Flexo instance continues to run in the browser.

A remote Flexo instance is only required if shared model-repository capabilities are desired in addition to Git-based collaboration.

Can Kotar be deployed behind our existing OAuth2 authentication?

Yes.

Kotar is a static web application and can be deployed behind an OAuth2 authentication proxy or similar middleware using an organization's existing identity provider.

For a GitLab deployment, Kotar and its /git-proxy/ should normally be exposed through the same origin. This avoids introducing an additional browser CORS boundary between Kotar and Git proxy.

Authentication can therefore be separated into:

  • Kotar authentication — OAuth2 Proxy or another identity provider authenticates users accessing Kotar.
  • GitLab authentication — the Git proxy authenticates outbound Git operations to GitLab.

The exact configuration depends on the organization's infrastructure.

Can we launch Kotar already connected to a specific Git repository?

This is an intended deployment workflow.

A user could, for example, select Open in Kotar from another engineering portal and launch Kotar with the appropriate project and Git remote already configured.

This would allow an organization to integrate Kotar into an existing engineering environment without requiring users to manually configure the repository each time.

Some of the packaging and deployment details for this workflow are still being developed.

Can we launch Kotar already connected to a specific Git repository?

This is an intended deployment workflow but is not yet fully implemented.

For example, an engineering portal could provide an Open in Kotar action that launches Kotar with the appropriate project, Git remote, and deployment configuration.

Until this workflow is available, GitLab repositories can be cloned using the built-in terminal.

Is Kotar open source?

Kotar itself is permanently free to use but is not open source.

The underlying OpenMBEE SysML v2 kernel is being released as open source under the Apache 2.0 license.

The kernel provides the core SysML v2 capabilities used by Kotar, including parsing, validation, command-line tooling, and model-processing functionality.

Can I use the SysML v2 kernel outside Kotar?

Yes.

The kernel is intended to be usable independently of Kotar, including through command-line tools and SDKs.

This allows applications, scripts, CI/CD pipelines, engineering tools, and other integrations to use the same SysML v2 parsing and model-processing capabilities without requiring Kotar itself.

Will there be Python bindings for the SysML v2 kernel?

Yes. Python support is planned as part of the SysML v2 SDK.

The goal is to allow developers to install and use the SysML v2 kernel directly from a Python environment, so Python-based engineering tools can parse, inspect, generate, and manipulate SysML v2 models without depending on Kotar.

Python SDK support is still under development.

What other programming-language SDKs are planned?

The SysML v2 SDK is being developed for multiple programming environments, including:

  • Python
  • TypeScript
  • C#

The intention is to make the kernel usable as a general-purpose SysML v2 library for applications, automation, CI/CD pipelines, and engineering-tool integrations.

Can I use the kernel from TypeScript code outside Kotar?

That is the intended direction.

Kotar already uses strongly typed TypeScript interfaces for scripting and transformations. The longer-term goal is for the same capabilities to be available as a reusable SDK dependency outside Kotar.

Standalone SDK packaging and usage are still being finalized.

Does Kotar support scripting and transformations?

Yes.

Kotar supports scripting and model transformations directly in the workspace.

For example, tabular data such as CSV files can be loaded, filtered, and transformed into SysML v2 model elements using transformation scripts.

Kotar currently supports scripting with technologies including:

  • TypeScript
  • Python

Transformation scripts can work with workspace files, structured data, model elements, and other local data sources.

Can external engineering tools connect to the model while Kotar is running?

Yes.

The local Flexo stack exposes the standard SysML v2 API, even though it is running locally with Kotar.

This means other local engineering tools can interact with the active model through the SysML v2 API.

For example, a locally running Jupyter environment or another engineering application can query or modify the model through the API while the user is working in Kotar.

Can specialty engineering tools update the model and have the changes appear in Kotar?

This is an important intended integration pattern.

Because Kotar operates on a live SysML v2 model and exposes the SysML v2 API, external tools can potentially interact with the same model session.

This enables workflows where specialty engineering tools perform analyses or generate model changes and those changes are reflected back into the engineering environment.

The exact live synchronization and integration mechanisms for external tools are still being developed.

Can Kotar be integrated with analysis and optimization tools?

Yes.

A core design goal is to make SysML v2 the integration layer between systems models and discipline-specific engineering tools.

External tools can interact with the model through:

  • SysML v2 APIs
  • SDKs
  • Scripts and transformation pipelines
  • Git-based workflows
  • Model queries

This makes it possible to integrate analysis, optimization, requirements, simulation, and other engineering tools into automated digital-engineering workflows.

Does Kotar support CI/CD workflows?

Yes.

Automation and CI/CD are core design goals of Kotar and the surrounding SysML v2 tooling.

Git repositories can contain not only SysML v2 models, but also scripts, analysis code, transformations, and other supporting files.

These artifacts can then participate in normal Git-based CI/CD workflows for tasks such as:

  • Model validation
  • Model transformations
  • Analysis execution
  • Verification
  • Documentation generation
  • Integration with external engineering tools

Flexo can be used alongside Git when model-aware persistence and repository capabilities are required.

Can model changes be tracked with normal Git?

Yes.

Git can track the complete workspace, including:

  • .sysml files
  • Python scripts
  • TypeScript scripts
  • Configuration files
  • Data files
  • Other engineering artifacts

Kotar can use Git and Flexo together. Git provides conventional source-control history, while Flexo provides model-aware persistence and identity management.

When a Git commit is created, it can be associated with the corresponding Flexo model revision.

What happens if someone edits the SysML v2 files outside Kotar?

External editing is supported.

Users can clone a repository, edit the SysML v2 text using another editor, and push those changes through normal Git workflows.

Kotar and kernel can reconstruct model information from the changed textual notation when the files are loaded again.

However, preservation of persistent model identities across arbitrary text-only edits is currently a best-effort process. Model identity is more reliable when changes are made through tooling that integrates the SysML v2 kernel.

Does Kotar support document generation?

Document generation is under active development.

The planned approach is based on the OpenMBEE View Editor concept, where model information can be transcluded into model-based documents.

The SysML v2 implementation is intended to use:

  • Views
  • Viewpoints
  • Queries
  • Model-linked document content

This will support generation of documents that remain connected to the underlying SysML v2 model.

Can a SysML v2 View defined in the model be opened directly as a diagram?

This is on the roadmap but is not yet implemented.

The goal is to allow SysML v2 Views and Viewpoints defined in textual notation to drive graphical and document-oriented representations inside Kotar.

How does Kotar support AI and LLM integration?

The broader Starforge environment uses SysML v2 as a semantic backbone for AI-assisted engineering.

The general approach is to allow AI systems to interact with structured engineering models, rather than treating engineering information only as unstructured text.

This can enable AI-assisted workflows involving model queries, analysis, transformations, engineering automation, and interaction with other digital-engineering services.

More detailed AI integration capabilities are part of the broader Starforge platform rather than only the standalone Kotar.

Why can't I push a // comment to the remote Flexo?

In SysML v2, // creates a note, which the textual notation ignores. It is not a model element. /* ... */ creates a Comment, which is a real element in the model.

When you add a // note, the text of the file changes, so Kotar still records an automatic local Flexo commit. But the model itself hasn't changed. The Model Remotes panel compares model revisions, so it has nothing to show as Ahead and nothing to push.

To share a comment through the remote Flexo, write it as a model comment:

/* This comment is part of the model and will be pushed. */
// This note is ignored by the model and will not be pushed.

Note: // notes stay in the .sysml text, so they are still shared if you collaborate through Git. They are only left out of Flexo, which stores the model rather than the text.

Why doesn't my remote Flexo connection appear when I open Kotar on another machine?

Remote Flexo connections are saved locally, not to your account.

Kotar is a serverless application, so settings such as remote Flexo connections are stored in your local browser environment, the same way the local Flexo repository is. They are not synced between machines.

If you use Kotar on more than one machine, add the remote Flexo connection to the settings JSON on each one.

Clone this wiki locally