# nasa/openmct architecture

> Architecture diagram of the GitHub repository nasa/openmct, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nasa/openmct
- Repository: https://github.com/nasa/openmct

## Overview

Open MCT is a plugin-extensible mission-control framework for visualizing telemetry and supporting planning and operations. The principal workflow begins with an operator opening the application, navigating mission objects, and viewing them through registered visualizations; the platform also provides object/composition APIs, telemetry and time services, and persistence integrations. Plugin branches cover charts, imagery, notebooks, plans, conditions, and fault management. Relationships are limited to those shown in excerpts, the source index, or README; unsampled subsystem links are not asserted.

Main entry points: [`src/MCT.js`](https://github.com/nasa/openmct/blob/master/src/MCT.js) (Platform APIs), [`src/api/objects/ObjectAPI.js`](https://github.com/nasa/openmct/blob/master/src/api/objects/ObjectAPI.js) (Object API), [`src/plugins/condition/ConditionManager.js`](https://github.com/nasa/openmct/blob/master/src/plugins/condition/ConditionManager.js) (Conditions), [`openmct.js`](https://github.com/nasa/openmct/blob/master/openmct.js) (Open MCT)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Platform Core"]
  node_application["Open MCT<br/>[openmct.js]"]
  node_api["Platform APIs<br/>[MCT.js]"]
  node_router["Application Router"]
  node_actions["Object Actions<br/>[ActionsAPI.js]"]
end

subgraph group_domain["Mission Data"]
  node_objectapi["Object API<br/>[ObjectAPI.js]"]
  node_composition["Composition API<br/>[CompositionAPI.js]"]
  node_telemetry["Telemetry API<br/>[TelemetryAPI.js]"]
  node_time["Time API<br/>[TimeAPI.js]"]
end

subgraph group_views["Visualization"]
  node_preview["Object Preview"]
end

subgraph group_plugins["Mission Plugins"]
  node_charts["Charts"]
  node_imagery["Imagery"]
  node_notebook["Mission Notebook"]
  node_plans["Planning"]
  node_conditions["Conditions"]
  node_faults["Fault Management"]
end

subgraph group_persistence["Persistence"]
  node_localstore[("Local Object Store")]
  node_couch[("CouchDB Persistence")]
end

node_operator(("Operator"))

node_operator -->|"opens"| node_application
node_application -->|"creates"| node_api
node_api -->|"starts"| node_router
node_api -->|"provides"| node_objectapi
node_api -->|"provides"| node_composition
node_api -->|"provides"| node_telemetry
node_api -.->|"provides"| node_time
node_preview -->|"requests actions"| node_actions
node_conditions -->|"requests data"| node_telemetry
node_conditions -->|"loads objects"| node_objectapi
node_operator -.->|"navigates"| node_router
node_operator -.->|"views objects"| node_preview
node_operator -.->|"visualizes telemetry"| node_charts
node_operator -.->|"views imagery"| node_imagery
node_operator -.->|"records mission notes"| node_notebook
node_operator -.->|"plans operations"| node_plans
node_operator -.->|"reviews faults"| node_faults
node_objectapi -.->|"uses provider"| node_localstore
node_objectapi -.->|"uses provider"| node_couch

click node_application "https://github.com/nasa/openmct/blob/master/openmct.js"
click node_api "https://github.com/nasa/openmct/blob/master/src/MCT.js"
click node_router "https://github.com/nasa/openmct/blob/master/src/ui/router/ApplicationRouter.js"
click node_objectapi "https://github.com/nasa/openmct/blob/master/src/api/objects/ObjectAPI.js"
click node_composition "https://github.com/nasa/openmct/blob/master/src/api/composition/CompositionAPI.js"
click node_telemetry "https://github.com/nasa/openmct/blob/master/src/api/telemetry/TelemetryAPI.js"
click node_time "https://github.com/nasa/openmct/blob/master/src/api/time/TimeAPI.js"
click node_preview "https://github.com/nasa/openmct/blob/master/src/ui/preview/PreviewContainer.vue"
click node_actions "https://github.com/nasa/openmct/blob/master/src/api/actions/ActionsAPI.js"
click node_charts "https://github.com/nasa/openmct/tree/master/src/plugins/charts"
click node_imagery "https://github.com/nasa/openmct/tree/master/src/plugins/imagery"
click node_notebook "https://github.com/nasa/openmct/tree/master/src/plugins/notebook"
click node_plans "https://github.com/nasa/openmct/tree/master/src/plugins/plan"
click node_conditions "https://github.com/nasa/openmct/blob/master/src/plugins/condition/ConditionManager.js"
click node_faults "https://github.com/nasa/openmct/tree/master/src/plugins/faultManagement"
click node_localstore "https://github.com/nasa/openmct/blob/master/src/plugins/localStorage/LocalStorageObjectProvider.js"
click node_couch "https://github.com/nasa/openmct/tree/master/src/plugins/persistence/couch"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_application,node_api,node_router,node_actions toneBlue
class node_objectapi,node_composition,node_telemetry,node_time toneAmber
class node_preview toneMint
class node_charts,node_imagery,node_notebook,node_plans,node_conditions,node_faults toneRose
class node_localstore,node_couch,node_operator toneIndigo
```

## Components

### Platform Core

- [Open MCT](https://github.com/nasa/openmct/blob/master/openmct.js): `openmct.js`
- [Platform APIs](https://github.com/nasa/openmct/blob/master/src/MCT.js): `src/MCT.js`
- [Application Router](https://github.com/nasa/openmct/blob/master/src/ui/router/ApplicationRouter.js): `src/ui/router/ApplicationRouter.js`
- [Object Actions](https://github.com/nasa/openmct/blob/master/src/api/actions/ActionsAPI.js): `src/api/actions/ActionsAPI.js`

### Mission Data

- [Object API](https://github.com/nasa/openmct/blob/master/src/api/objects/ObjectAPI.js): `src/api/objects/ObjectAPI.js`
- [Composition API](https://github.com/nasa/openmct/blob/master/src/api/composition/CompositionAPI.js): `src/api/composition/CompositionAPI.js`
- [Telemetry API](https://github.com/nasa/openmct/blob/master/src/api/telemetry/TelemetryAPI.js): `src/api/telemetry/TelemetryAPI.js`
- [Time API](https://github.com/nasa/openmct/blob/master/src/api/time/TimeAPI.js): `src/api/time/TimeAPI.js`

### Visualization

- [Object Preview](https://github.com/nasa/openmct/blob/master/src/ui/preview/PreviewContainer.vue): `src/ui/preview/PreviewContainer.vue`

### Mission Plugins

- [Charts](https://github.com/nasa/openmct/tree/master/src/plugins/charts): `src/plugins/charts`
- [Imagery](https://github.com/nasa/openmct/tree/master/src/plugins/imagery): `src/plugins/imagery`
- [Mission Notebook](https://github.com/nasa/openmct/tree/master/src/plugins/notebook): `src/plugins/notebook`
- [Planning](https://github.com/nasa/openmct/tree/master/src/plugins/plan): `src/plugins/plan`
- [Conditions](https://github.com/nasa/openmct/blob/master/src/plugins/condition/ConditionManager.js): `src/plugins/condition/ConditionManager.js`
- [Fault Management](https://github.com/nasa/openmct/tree/master/src/plugins/faultManagement): `src/plugins/faultManagement`

### Persistence

- [Local Object Store](https://github.com/nasa/openmct/blob/master/src/plugins/localStorage/LocalStorageObjectProvider.js): `src/plugins/localStorage/LocalStorageObjectProvider.js`
- [CouchDB Persistence](https://github.com/nasa/openmct/tree/master/src/plugins/persistence/couch): `src/plugins/persistence/couch`

### Other components

- **Operator**

## Connections

- Operator → Open MCT: opens
- Open MCT → Platform APIs: creates (evidence: `openmct.js`)
- Platform APIs → Application Router: starts (evidence: `src/MCT.js`)
- Platform APIs → Object API: provides (evidence: `src/MCT.js`)
- Platform APIs → Composition API: provides (evidence: `src/MCT.js`)
- Platform APIs → Telemetry API: provides (evidence: `src/MCT.js`)
- Platform APIs → Time API: provides (evidence: `src/MCT.js`)
- Object Preview → Object Actions: requests actions
- Conditions → Telemetry API: requests data (evidence: `src/plugins/condition/ConditionManager.js`)
- Conditions → Object API: loads objects (evidence: `src/plugins/condition/ConditionManager.js`)
- Operator → Application Router: navigates
- Operator → Object Preview: views objects
- Operator → Charts: visualizes telemetry
- Operator → Imagery: views imagery
- Operator → Mission Notebook: records mission notes
- Operator → Planning: plans operations
- Operator → Fault Management: reviews faults
- Object API → Local Object Store: uses provider
- Object API → CouchDB Persistence: uses provider
