Getting started¶
Two Docker Compose stacks bring Flexo up on one machine. Both need Docker with Compose.
Flexo MMS¶
The deployment repository starts
OpenLDAP, Apache Jena Fuseki and MinIO, then the Auth, Store and Layer 1 services against
them, on a bridged network. A pre-generated cluster.trig seeds Fuseki with the root
context and policies that make the default LDAP users administrators.
git clone https://github.com/Open-MBEE/flexo-mms-deployment.git
cd flexo-mms-deployment/docker-compose
docker compose up
The API is ready when Layer 1 logs Responding at http://0.0.0.0:8080. Two users exist
by default, user01 / password1 and user02 / password2. Log in against the Auth
service and use the token it returns as a bearer token for Layer 1:
TOKEN=$(curl -su user01:password1 http://localhost:8082/login | jq -r .token)
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/orgs
From there the
Layer 1 API documentation lists every
endpoint, and the directory holds a Postman collection and a Bruno collection that walk
through creating an organisation and a repository, loading a model, querying it and
committing a change. docker compose -f docker-compose-graphdb.yml up swaps Fuseki for
GraphDB; the README explains the one-time repository setup GraphDB needs.
The SysML v2 API¶
The SysML v2 service repository carries a Compose stack of its own that starts the Flexo MMS prerequisites and the SysML v2 API in front of them:
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
The API listens on port 8083 and the bearer token it expects is in
docker-compose/env/flexo-sysmlv2.env. Then http://localhost:8083/projects answers, and any client of the OMG Systems Modeling API — the
Python client, the Web Modeler, the
SysML v2 MCP server — points at it. A Postman collection and a Bruno
collection in the repository cover the endpoints.
From a terminal¶
The Flexo CLI folds the Layer 1 stack into one command. flexo init
starts Fuseki and Layer 1 in Docker, loads the cluster configuration, creates a default
organisation, repository and branch, and writes ~/.flexo/config; after that, push,
pull, branch, merge and remote work the way they do in git.
Running it for real¶
For a cluster, the deployment repository's Kubernetes manifests split the same stack into deployments, services, an SSL ingress, and config maps for Layer 1, JWT, S3, LDAP and logging. The deployment page describes what to fill in, and each service's own documentation lists its environment variables.