Skip to main content

sysml2kit

CI PyPI Python License

API-first Python tooling for building, querying, validating, and automating SysML v2 models.

Status: pre-alpha. The 0.0.x releases claim the package name and publish the skeleton while the core lands. Pin an exact version if you depend on it.

sysml2kit is the requirements/architecture/traceability layer for engineering automation stacks: build a system model in Python, emit standard SysML v2 textual notation and Systems Modeling API JSON, run traceability queries (which requirements are unsatisfied? unverified? allocated where?), validate, and diff. It targets the OMG SysML v2 standard, not any vendor tool.

What it does

  • Object model: a documented subset of SysML v2 (packages, parts, ports, attributes with units, requirements, satisfy/verify/derive/allocate, analysis cases) as pydantic models, with an opaque passthrough for elements outside the subset so richer models survive a round trip.
  • Textual notation writer: deterministic .sysml output. Parsing is delegated to a pluggable backend (pip install sysml2kit[parse] installs sysmlpy); the kit itself does not reimplement the grammar.
  • JSON interchange: read/write the Systems Modeling API serialization, the format the standard REST API speaks.
  • Traceability queries: unsatisfied/unverified requirements, allocation tables, requirement-to-part trace matrices.
  • Validation and diff: rule-based model checks and element-level diffs.
  • API client: a thin HTTP client for the OMG Systems Modeling API and Services endpoints.

Install

pip install sysml2kit            # core: build, write, query, validate, diff
pip install "sysml2kit[parse]"   # + read .sysml files (sysmlpy backend)
pip install "sysml2kit[graph]"   # + NetworkX export

Quick start

from sysml2kit import Model, builder

model = Model()
pkg = builder.pkg(model, "Vehicle")
battery = builder.part(model, "battery", owner=pkg)
range_req = builder.req(
    model,
    "REQ-001",
    "Range",
    owner=pkg,
    text="The vehicle shall travel at least 400 km on one charge.",
)
builder.satisfy(model, source=battery, target=range_req)

from sysml2kit.text import write_model

print(write_model(model))  # standard SysML v2 textual notation

from sysml2kit.query import unverified_requirements

print(unverified_requirements(model))  # [REQ-001] — no verify link yet

Architecture

sysml2kit
├── model         # element classes, Model container, builder API
├── text          # SysML v2 textual notation writer
├── interchange   # Systems Modeling API JSON reader/writer
├── query         # traceability queries
├── validation    # rule-based checks (S2K001...)
├── diff          # element-level model diff
├── api           # Systems Modeling API HTTP client
├── backends      # parser backends (sysmlpy behind the [parse] extra)
├── interop       # tool-agnostic requirement extraction
└── cli           # `sysml2kit` command line

The spec pin, element subset, and known deviations are documented in SPEC.md. Reference spec release: OMG SysML-v2-Release tag 2026-05.

Domain content lives outside the kit. For antenna/RF systems engineering, see sysml2kit-rf-library, a SysML v2 model library consumed through this package.

For agents

The CLI (sysml2kit show | validate | diff | export) is the current automation surface. An MCP server is planned for v0.2 under sysml2kit.mcp.

Development

uv sync --all-extras --group dev
uv run pytest                     # core suite (no extras needed)
uv run pytest -m parse            # round-trip tests against sysmlpy
uv run ruff check . && uv run ruff format --check .
uv run mypy
scripts/slopcheck.sh              # prose lint, advisory
uv run mkdocs serve               # docs preview

Citation

@software{hodge2026sysml2kit,
  author  = {Hodge, John},
  title   = {sysml2kit: API-first Python tooling for SysML v2 models},
  year    = {2026},
  url     = {https://github.com/jman4162/sysml2kit},
  license = {Apache-2.0}
}

License

Apache-2.0. See LICENSE and NOTICE. This project contains no code or model text from the EPL-2.0 OMG pilot implementation; conformance checks run it out of process only.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sysml2kit-0.0.1.tar.gz (125.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sysml2kit-0.0.1-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file sysml2kit-0.0.1.tar.gz.

File metadata

  • Download URL: sysml2kit-0.0.1.tar.gz
  • Upload date:
  • Size: 125.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sysml2kit-0.0.1.tar.gz
Algorithm Hash digest
SHA256 b22fc19fcdf7d4b8636e39d80eda164118c3a12bb8ea0c82b26d6d89654e0423
MD5 8c909dddab5fd1b84b94660e280d4549
BLAKE2b-256 eafd1e5a053a9db67c647b185fe1245b7ab597c6290e14089b4949c14d102c5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sysml2kit-0.0.1.tar.gz:

Publisher: release.yml on jman4162/sysml2kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sysml2kit-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: sysml2kit-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sysml2kit-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd7fc7cd54baf99640373fff7305770cf893ef8d55acf15a629626ea0fc42376
MD5 5e1a9c434c59f5e8b549b2cea7f5d046
BLAKE2b-256 e0ddbc43baa4dd53540fdb6d103dd74fa7376fa21413f7a88141426a8e8fa15f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sysml2kit-0.0.1-py3-none-any.whl:

Publisher: release.yml on jman4162/sysml2kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

This release

0.0.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page