Skip to content

Open-MBEE · RDF · SPARQL 1.1 · SysML v2 API

Model management for models that are graphs.

Flexo is Open-MBEE's architecture for model management. At its core, Flexo MMS stores a model as RDF in a SPARQL quadstore and gives it the shape of a version-controlled repository: organisations, repositories, branches, commits, locks and diffs, with SPARQL to read and write and policies deciding who may. On top of that one store sit the OMG SysML v2 API and Services, so standard modelling tools get real branching and history without knowing what is underneath — and around it a git-style CLI, MCP servers for AI assistants, Python clients and a web modeler.

Apache-2.0 · every service a container image · one quadstore, one token, many services

A repository: commits on master, a feature branch that merges back, a lock naming one commit, and the RDF model graph a commit holdsopenmbee / rovermastermass-budgetrootmergelock v1.0the model at this commit — an RDF graph, read and written with SPARQL:Rover:chassis:roboticArm"184.0"^^xsd:decimal:Part:part:part:massrdf:type
A branch is a sequence of commits, each a SPARQL update; a lock names a commit; every commit is an RDF graph. Layer 1
Two APIs over one store: SysML v2 projects, branches, commits and elements map onto Layer 1 repositories, branches, commits and graphs, all in one SPARQL quadstoreSysML v2 API and Servicesthe OMG standard, for modelling toolsFlexo Layer 1 APIREST and SPARQL, for anything RDFProjectRepositoryBranchBranchCommitCommitElementGraphis aone SPARQL 1.1 quadstoreFuseki · GraphDB · …a SysML v2 project is a Layer 1 repository and a SysML v2 commit a Layer 1 commit — one history, reachable either way
The OMG SysML v2 API and the Layer 1 API expose the same graph, the same history. The SysML v2 API
The stack in four layers: clients and tools, domain APIs, the Flexo MMS Layer 1 services, and storage, each talking to the one below over a standard protocolClients and toolsFlexo CLIMCP serversPythonWeb ModelerSysIDEJama SDKLayer 2 · domain APIsSysML v2 API and ServicesGraphQLLayer 1 · Flexo MMSLayer 1 serviceAuth serviceStore serviceLayer 0 · storageSPARQL 1.1 quadstoreS3 object storeLayer 0 dashboardHTTPS · bearer JWTREST · SPARQL 1.1SPARQL 1.1 · S3
Small services, each a repository and a container image, over any SPARQL 1.1 quadstore. Architecture
The clients and tools around Flexo: the CLI, MCP servers, Python clients, the SysML v2 Web Modeler, SysIDE and the Jama SDK, all speaking to the Layer 1 or SysML v2 APIFlexoLayer 1 APISysML v2 APIFlexo CLIpush, pull, branch, mergeMCP serversfor AI assistantsPythonSysML v2 client · flexo_sysideWeb ModelerSysML v2 in the browserSysIDEtextual SysML v2 in and outJama · PR Managerrequirements · model reviews
A git-style CLI, MCP servers for AI assistants, Python, and a web modeler. Clients and tools
Access control: a credential becomes a signed JWT at the Auth service; Layer 1, the SysML v2 API and the MCP servers all accept it, and Layer 1 evaluates policies on every requestuser or serviceAuth serviceLDAP bind · OIDC login · API keyJWTtrusted by every serviceLayer 1orgs · repos · branchesSysML v2 APIprojects · commitsMCP servertools for an assistantthrough Layer 1policies · groups · collections — evaluated on every requestwhomay readmay writemay branchmay lockon whatan unauthorised request may be answered 404, not 403: a caller cannot learn what exists
One JWT for every service; policies decide what it may do on each request. Authentication

The services

Clients and tools

Get started

# Flexo MMS: LDAP, Fuseki, MinIO, and the Auth, Store and Layer 1 services
git clone https://github.com/Open-MBEE/flexo-mms-deployment.git
cd flexo-mms-deployment/docker-compose && docker compose up

# The SysML v2 API, with its Flexo MMS prerequisites
git clone https://github.com/Open-MBEE/flexo-mms-sysmlv2.git
cd flexo-mms-sysmlv2 && docker compose -f docker-compose/docker-compose.yml up -d

Layer 1 answers on localhost:8080 and the SysML v2 API on localhost:8083; the getting started page has the first requests, and the deployment page covers Kubernetes.

How it fits together

The layers, what each service is for, and how a request travels from a client to the quadstore and back.

On GitHub

Every service, client and tool is a repository under Open-MBEE, Apache-2.0 licensed, developed in the open.

Community

Slack, the mailing list and the wiki — where Flexo is discussed and how to contribute.

Flexo

Flexo is Open-MBEE's architecture for model management. At its centre is Flexo MMS, a collection of microservices that make up a version-controlled store for model data whose native form is RDF, so a model is a graph other tools can query, diff and merge rather than a file they have to parse. Around it are domain APIs, clients and tools that share one contract — a SPARQL 1.1 quadstore underneath, JSON Web Tokens between them — and each lives in its own repository with its own documentation. This site is the map.

Where to go

  • Architecture — the layers, what each service is for, and how a request travels from a client to the quadstore and back.
  • Getting started — the Docker Compose stacks that bring up Flexo MMS, and the SysML v2 API on top of it, on one machine.
  • Services — every service: Layer 1, Store, Authentication, the SysML v2 API, GraphQL, the Layer 0 dashboard and the deployment manifests.
  • Clients and tools — the git-style CLI, the MCP servers, the Python client, the SysML v2 Web Modeler, and the libraries and integrations around them.
  • Community — where the conversation happens and how to contribute.

Two APIs, one store

Flexo exposes the same versioned graph through two APIs, and a deployment can run either or both.

API Speaks For
Flexo MMS Layer 1 REST over orgs, repos, branches, locks and commits; SPARQL 1.1 query and update against any of them Anything expressed as RDF: requirements from Jama, ontologies, a system model, tabular data lifted to a graph
SysML v2 API and Services The OMG Systems Modeling API and Services REST platform-specific model — projects, commits, branches, tags, elements SysML v2 modelling tools and clients that speak the standard, without knowing what is underneath

The SysML v2 API translates onto Layer 1, so a SysML v2 project is a Layer 1 repository and a SysML v2 commit is a Layer 1 commit: the same history, reachable either way.

Flexo MMS and the earlier MMS

Flexo MMS is not a drop-in replacement for the earlier, document-oriented MMS (now exec-mms), which stores JSON documents and is documented at mms-reference-implementation.readthedocs.io. Flexo MMS stores RDF and versions the graph itself. Older repositories, images and documents still call it MMS5; the two names refer to the same services.