Bohemian SysML ViewerΒΆ
Transform Your SysML Models into Production CodeΒΆ
Bohemian is a powerful, cross-platform SysML model viewer designed specifically for defence and military vehicle systems. Built with Qt6 and C++17, it provides seamless integration with IBM Rational Rhapsody projects and generates production-ready OMG IDL files for DDS-based communication systems.
Why Bohemian?ΒΆ
| Challenge | Bohemian Solution |
|---|---|
| π Expensive Rhapsody Licenses | View and export models without a Rhapsody license |
| β‘ Manual IDL Translation | Automatic code generation following GVA standards |
| π Complex CI/CD Integration | Headless mode for automated build pipelines |
| π Model Validation | Visual inspection of class diagrams, state charts, and interactions |
| π€ Domain Design Complexity | AI agent assists with creating new domains and integrations |
Key FeaturesΒΆ
ποΈ Rhapsody Project SupportΒΆ
- Native .rpyx parsing - Open IBM Rhapsody projects directly
- SBSX file support - Load individual model files from directories
- Cross-reference resolution - Automatic GUID-based element linking
- Rich metadata extraction - Stereotypes, tagged values, descriptions
π€ AI-Powered Domain CreationΒΆ
- Intelligent assistant - Create new LDM domains with AI guidance
- Convention awareness - Automatically applies LDM naming conventions
- Standards knowledge - Understands MIL-STD, STANAG, and NATO formats
- Protocol translation - Convert JSON, XML, and binary formats to LDM types
π SysML Diagram VisualizationΒΆ
Explore your models with interactive, zoomable diagrams:
Class DiagramsΒΆ
View blocks with attributes, operations, and relationships:
Interaction DiagramsΒΆ
Visualize sequence diagrams and message flows:
State ChartsΒΆ
Explore state machines and transitions:
Domain ModelsΒΆ
Navigate package hierarchies and dependencies:
βοΈ IDL Code GenerationΒΆ
Generate standards-compliant OMG IDL with a single click:
// Auto-generated by Bohemian SysML Viewer
module P_Alarms_PSM {
const string KC_Alarm_TopicName = "gva/alarms/alarm";
@appendable
struct C_Alarm {
@key uint32 A_alarmId;
string<256> A_description;
T_AlarmSeverity A_severity;
T_Timestamp A_timestamp;
};
};
Supported Mappings:
| SysML Element | IDL Output |
|---|---|
| Package | IDL module (P_<PackageName>) |
| Class | IDL struct (C_<ClassName>) |
| Enumeration | IDL enum (T_<TypeName>) |
| Structure Type | IDL struct (T_<TypeName>) |
| Attribute | Struct member (A_<AttributeName>) |
| Operation | Command struct with parameters |
Development WorkflowΒΆ
Bohemian seamlessly integrates into your model-driven development process:
SysML Model")] B["Export
.rpyx Project"] end subgraph Bohemian["π§ Bohemian"] C["Parse &
Validate Model"] D["Generate
OMG IDL"] end subgraph Build["ποΈ Build Phase"] E["IDL Compiler"] F["C++ Types &
DDS Topics"] G["Qt Wrappers"] end subgraph Deploy["π Deployment"] H["GVA Vehicle
Subsystems"] end A --> B B --> C C --> D D --> E E --> F F --> G G --> H style A fill:#0072FF,stroke:#00FFFF,color:#fff style D fill:#00ff88,stroke:#00FFFF,color:#012141 style H fill:#ffaa00,stroke:#00FFFF,color:#012141 style Design fill:#012141,stroke:#0072FF,color:#00FFFF style Bohemian fill:#012141,stroke:#00ff88,color:#00FFFF style Build fill:#012141,stroke:#0072FF,color:#00FFFF style Deploy fill:#012141,stroke:#ffaa00,color:#00FFFF
Complete Model-to-Code PipelineΒΆ
Extract Elements"] validate["β Validate
Relationships"] detect["π― LDM Pattern
Detection"] export["π€ IDL Export
Engine"] end subgraph Output["π€ Generated Output"] direction LR idl["π OMG IDL Files"] docs["π Documentation"] end subgraph Integration["π LDM SDK Integration"] direction TB cmake["π§ CMake Build"] cpp["π» C++ Types"] qt["π¨ Qt Wrappers"] dds["π‘ DDS Topics"] end rpyx --> parse sbsx --> parse dir --> parse parse --> validate validate --> detect detect --> export export --> idl export --> docs idl --> cmake cmake --> cpp cmake --> qt cmake --> dds style Input fill:#012141,stroke:#0072FF,color:#00FFFF style Bohemian fill:#012141,stroke:#00ff88,color:#00FFFF style Output fill:#012141,stroke:#00FFFF,color:#00FFFF style Integration fill:#012141,stroke:#ffaa00,color:#00FFFF style parse fill:#0072FF,stroke:#00FFFF,color:#fff style export fill:#00ff88,stroke:#00FFFF,color:#012141 style dds fill:#ffaa00,stroke:#00FFFF,color:#012141
CI/CD IntegrationΒΆ
Automated IDL GenerationΒΆ
Bohemian's headless mode enables seamless integration with your build pipeline:
SysML Models"] end subgraph CI["π CI/CD Pipeline"] trigger["Commit Trigger"] bohemian["Bohemian
--export-idl"] build["CMake Build"] test["Unit Tests"] end subgraph Deploy["π Artifacts"] deb["π¦ .deb Package"] docker["π³ Container"] end repo --> trigger trigger --> bohemian bohemian --> build build --> test test --> deb test --> docker style VCS fill:#012141,stroke:#0072FF,color:#00FFFF style CI fill:#012141,stroke:#00ff88,color:#00FFFF style Deploy fill:#012141,stroke:#ffaa00,color:#00FFFF style bohemian fill:#0072FF,stroke:#00FFFF,color:#fff style deb fill:#00ff88,stroke:#00FFFF,color:#012141
Pipeline Command:
# Headless IDL export for CI/CD
./bohemian --export-idl ./generated/idl /path/to/project.rpyx
# Or from a directory of model files
./bohemian --export-idl ./generated/idl /path/to/model/directory
Quick StartΒΆ
InstallationΒΆ
=== "Debian/Ubuntu"
```bash
# Download the latest release
wget https://github.com/AstuteSystems/ldm/releases/latest/download/bohemian_latest_amd64.deb
# Install the package
sudo dpkg -i bohemian_latest_amd64.deb
sudo apt-get install -f # Resolve dependencies
```
=== "Build from Source"
```bash
# Clone the LDM SDK repository
git clone https://github.com/AstuteSystems/ldm.git
cd ldm
# Build Bohemian
mkdir -p build && cd build
cmake -DBUILD_EXAMPLES=ON ..
make external -j$(nproc)
cmake ..
make bohemian -j$(nproc)
# Run
./bin/bohemian
```
RequirementsΒΆ
| Component | Version |
|---|---|
| Qt | 6.5.0+ |
| CMake | 3.16+ |
| C++ Compiler | C++17 support |
| OS | Linux (Ubuntu 22.04+, Fedora 38+) |
ArchitectureΒΆ
Bohemian is built on a clean, modular architecture:
Keyboard ShortcutsΒΆ
| Shortcut | Action |
|---|---|
Ctrl+O |
Open project |
Ctrl+E |
Export IDL |
Ctrl++ |
Zoom in |
Ctrl+- |
Zoom out |
Ctrl+0 |
Reset zoom |
Ctrl+F |
Fit to window |
Ctrl+Q |
Quit |
GVA Land Data Model SupportΒΆ
Bohemian includes built-in support for the UK Generic Vehicle Architecture (GVA) Land Data Model:
Independent Model"] PSM["Platform
Specific Model"] IDL["OMG IDL
Interface"] end subgraph Domains["π¦ LDM Domains"] Sensors["Sensors"] Actuators["Actuators"] Alarms["Alarms"] Navigation["Navigation"] Weapons["Weapons"] Power["Power"] end subgraph Output["π DDS Integration"] Topics["DDS Topics"] PubSub["Publish/Subscribe"] QoS["QoS Policies"] end PIM --> PSM PSM --> IDL Sensors --> IDL Actuators --> IDL Alarms --> IDL Navigation --> IDL Weapons --> IDL Power --> IDL IDL --> Topics Topics --> PubSub PubSub --> QoS style GVA fill:#012141,stroke:#00FFFF,color:#00FFFF style Domains fill:#012141,stroke:#0072FF,color:#00FFFF style Output fill:#012141,stroke:#ffaa00,color:#00FFFF style PIM fill:#0072FF,stroke:#00FFFF,color:#fff style IDL fill:#00ff88,stroke:#00FFFF,color:#012141 style Topics fill:#ffaa00,stroke:#00FFFF,color:#012141
Automatic Pattern DetectionΒΆ
Bohemian automatically identifies GVA patterns in your models:
- Domain packages - Core system domains (sensors, actuators, etc.)
- Common types - Shared primitives and enumerations
- PIM/PSM layers - Model transformation artifacts
- Command patterns - Operation-based interfaces
AI-Powered Domain CreationΒΆ
Bohemian includes an integrated AI agent that assists with creating new LDM domains. The AI agent understands LDM modelling conventions and can help you design, validate, and generate IDL code for new domains.
Setting Up the Claude API KeyΒΆ
The AI agent uses Anthropic's Claude API. You'll need to configure your API key before using the agent:
- Get an API Key: Visit console.anthropic.com to create an account and generate an API key
- Open Settings: In Bohemian, go to Edit > Preferences or press
Ctrl+, - Navigate to AI Settings: Select the AI Agent tab in the settings dialog
- Enter Your API Key: Paste your Claude API key in the API Key field
- Select Model: Choose your preferred Claude model (claude-sonnet-4-20250514 recommended)
- Click OK: Your settings are saved automatically

API Key Security
Your API key is stored locally in your user settings and is never transmitted except to Anthropic's API servers. The key is obfuscated in the settings file but treat it as sensitive data.
Usage Costs
Claude API usage is billed based on tokens processed. Creating a typical domain uses approximately 10,000-50,000 tokens. Monitor your usage at console.anthropic.com.
Getting Started with the AI AgentΒΆ
- Open Bohemian and navigate to View > AI Agent or press
Ctrl+Shift+A - The AI agent panel appears on the right side of the window
- Type your question or describe the domain you want to create
- The agent will guide you through the modelling process step-by-step
Example: Creating an ATAK Cursor-on-Target DomainΒΆ
The AI agent excels at helping you create new domains for external systems integration. Here's an example of creating a domain for ATAK (Android Team Awareness Kit) Cursor-on-Target (CoT) messaging:

Example Prompts:
Create a new LDM domain for ATAK Cursor-on-Target (CoT) messaging.
Include support for:
- Position reports (PLI - Position Location Information)
- Contact reports (enemy, friendly, neutral)
- Sensor point of interest (SPI)
- Chat messages
- Alerts and warnings
The AI agent will:
- Research the ATAK CoT message format and identify key data structures
- Design LDM-compliant classes following naming conventions (C_CoTEvent, C_CoTPoint, etc.)
- Generate OMG IDL code with proper DDS annotations
- Validate the design against LDM patterns
Understanding Battlespace ObjectsΒΆ
The AI agent can explain complex military domain concepts and help you model them correctly:

Example Prompts:
Explain the difference between a contact and a track in battlespace management.
How should I model sensor detections vs confirmed tracks in LDM?
What data elements are needed for a STANAG 4586 UAV control interface?
Create the LDM structures for vehicle telemetry and waypoint commands.
Suggested Domain Creation WorkflowsΒΆ
| Domain Type | Example Prompt |
|---|---|
| Sensor Integration | "Create an LDM domain for integrating a thermal imaging camera with automatic target detection" |
| Protocol Bridge | "Design a domain to bridge NMEA 0183 GPS messages to LDM navigation types" |
| External System | "Create types for bidirectional Blue Force Tracker integration" |
| C2 Interface | "Model a command and control interface for artillery fire missions following MIL-STD-6016" |
| Vehicle Subsystem | "Design an LDM domain for electric vehicle battery management with cell monitoring" |
AI Agent CapabilitiesΒΆ
The AI agent understands:
- LDM Naming Conventions - Automatically applies P_, C_, T_, A_, L_, KC_ prefixes
- DDS Annotations - Adds @key, @appendable, @optional where appropriate
- GVA Patterns - Follows GVA Translator Guide mapping rules
- Military Standards - Familiar with STANAG, MIL-STD, and NATO standards
- Protocol Formats - Can translate JSON, XML, and binary protocols to LDM types
Tips for Effective AI PromptsΒΆ
- Be specific about the system or protocol you're integrating
- Mention data flows - which direction does data flow, what triggers messages?
- Include constraints - bandwidth limits, update rates, reliability requirements
- Reference standards - if there's a relevant MIL-STD or STANAG, mention it
- Describe use cases - how will the data be used in the vehicle system?
Comparison with AlternativesΒΆ
| Feature | Bohemian | IBM Rhapsody | MagicDraw | Enterprise Architect |
|---|---|---|---|---|
| License Cost | π Free | π° High | π° High | π° Medium |
| Rhapsody .rpyx Support | β Native | β Native | β οΈ Import | β οΈ Import |
| IDL Generation | β GVA-compliant | β οΈ Plugin | β οΈ Plugin | β None |
| Headless Mode | β Full | β οΈ Limited | β οΈ Limited | β None |
| DDS Integration | β Built-in | β None | β None | β None |
| Open Source | β Yes | β No | β No | β No |
Use CasesΒΆ
ποΈ Defence Systems IntegrationΒΆ
Integrate SysML models from prime contractors into your DDS-based vehicle systems without expensive Rhapsody licenses.
π Automated Code GenerationΒΆ
Include Bohemian in your CI/CD pipeline to regenerate IDL files whenever models change, ensuring code always matches design.
β Model ValidationΒΆ
Use Bohemian's visualization tools to verify model structure before committing to code generation, catching errors early.
π Documentation GenerationΒΆ
Generate consistent interface documentation directly from SysML models for system integration teams.
Get InvolvedΒΆ
-
π Documentation
Comprehensive guides and API reference
-
π Report Issues
Found a bug? Let us know
-
π‘ Feature Requests
Have an idea? We'd love to hear it
-
π€ Contribute
Join the community
AboutΒΆ
Bohemian is developed by Astute Systems PTY LTD as part of the LDM SDK project.
Copyright Β© 2026 Astute Systems PTY LTD
Licensed under the terms of the project license. See the repository for details.