# nasa/nos3 architecture

> Architecture diagram of the GitHub repository nasa/nos3, 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/nos3
- Repository: https://github.com/nasa/nos3

## Overview

NOS3 is a spacecraft software development, simulation, and operations suite. In the sampled files, the clearest user workflow is operating the Igniter GUI to inspect mission configuration and launch or stop NOS3 through shell commands. Configuration nodes represent the cFS platform and mission settings plus onboard tables for data storage, limit checking, scheduling, and stored command sequences. The README also documents broader build, ground-station, dynamics, and hardware-simulation capabilities, but their runtime implementations are not present in this tree excerpt. Edges are limited to relationships directly shown in excerpts or README statements.

Main entry points: [`fsw/fprime`](https://github.com/nasa/nos3/tree/main/fsw/fprime) (Development environment), [`cfg/gui/cfg_gui_main.py`](https://github.com/nasa/nos3/blob/main/cfg/gui/cfg_gui_main.py) (Igniter GUI), [`cfg/gui`](https://github.com/nasa/nos3/tree/main/cfg/gui) (Ground station), [`sims`](https://github.com/nasa/nos3/tree/main/sims) (Dynamics simulation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_operator["Operator interface"]
  node_igniter["Igniter GUI<br/>[cfg_gui_main.py]"]
  node_gui_ui["GUI layout<br/>[cfg_gui_ui.py]"]
end

subgraph group_platform["Mission configuration"]
  node_mission_cfg["Mission settings<br/>[cfe_mission_cfg.h]"]
  node_platform_cfg["Platform settings"]
  node_message_ids["Message IDs<br/>[cpu1_msgids.h]"]
  node_device_cfg["Device settings<br/>[cpu1_device_cfg.h]"]
  node_performance_ids["Performance IDs<br/>[cfe_perfids.h]"]
end

subgraph group_tables["Onboard tables"]
  node_ds_filters["Data filters<br/>[ds_filter_tbl.c]"]
  node_ds_indices["Data indices<br/>[ds_indices.h]"]
  node_ds_files["Data file table<br/>[ds_file_tbl.c]"]
  node_lc_watch["Limit watchpoints<br/>[lc_def_wdt.c]"]
  node_lc_actions["Limit actions<br/>[lc_def_adt.c]"]
  node_scheduler["Schedule table<br/>[sch_def_schtbl.c]"]
  node_schedule_messages["Scheduled messages<br/>[sch_def_msgtbl.c]"]
  node_stored_commands["Stored commands"]
  node_housekeeping["Housekeeping table<br/>[hk_cpy_tbl.c]"]
  node_telemetry_output["Telemetry subscription<br/>[to_lab_sub.c]"]
  node_file_management["Free-space table<br/>[fm_freespace.c]"]
  node_communications["CF configuration<br/>[cf_def_config.c]"]
end

subgraph group_suite["NOS3 capabilities"]
  node_software_suite["Development environment"]
  node_ground_station["Ground station"]
  node_simulation["Dynamics simulation"]
  node_hardware_models["Hardware models"]
  node_onair_headers["Telemetry headers<br/>[message_headers.py]"]
end

node_operator(("Operator"))
node_shell["Shell terminal"]

node_operator -->|"operates"| node_igniter
node_igniter -->|"sets up"| node_gui_ui
node_igniter -->|"launches commands"| node_shell
node_ds_filters -->|"uses identifiers"| node_ds_indices
node_software_suite -.->|"provides suite capability"| node_ground_station
node_software_suite -.->|"provides suite capability"| node_simulation
node_software_suite -.->|"provides suite capability"| node_hardware_models
node_ground_station -.->|"serves operators"| node_operator
node_simulation -.->|"models spacecraft hardware"| node_hardware_models
node_onair_headers -.->|"supports telemetry decoding"| node_ground_station

click node_igniter "https://github.com/nasa/nos3/blob/main/cfg/gui/cfg_gui_main.py"
click node_gui_ui "https://github.com/nasa/nos3/blob/main/cfg/gui/cfg_gui_ui.py"
click node_mission_cfg "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cfe_mission_cfg.h"
click node_platform_cfg "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cpu1_platform_cfg.h"
click node_message_ids "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cpu1_msgids.h"
click node_device_cfg "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cpu1_device_cfg.h"
click node_performance_ids "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cfe_perfids.h"
click node_ds_filters "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/ds_filter_tbl.c"
click node_ds_indices "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/ds_indices.h"
click node_ds_files "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/ds_file_tbl.c"
click node_lc_watch "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/lc_def_wdt.c"
click node_lc_actions "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/lc_def_adt.c"
click node_scheduler "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/sch_def_schtbl.c"
click node_schedule_messages "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/sch_def_msgtbl.c"
click node_stored_commands "https://github.com/nasa/nos3/tree/main/cfg/nos3_defs/tables"
click node_housekeeping "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/hk_cpy_tbl.c"
click node_telemetry_output "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/to_lab_sub.c"
click node_file_management "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/fm_freespace.c"
click node_communications "https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/cf_def_config.c"
click node_software_suite "https://github.com/nasa/nos3/tree/main/fsw/fprime"
click node_ground_station "https://github.com/nasa/nos3/tree/main/cfg/gui"
click node_simulation "https://github.com/nasa/nos3/tree/main/sims"
click node_hardware_models "https://github.com/nasa/nos3/tree/main/components"
click node_onair_headers "https://github.com/nasa/nos3/blob/main/components/onair/message_headers.py"

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_igniter,node_gui_ui toneBlue
class node_mission_cfg,node_platform_cfg,node_message_ids,node_device_cfg,node_performance_ids toneAmber
class node_ds_filters,node_ds_indices,node_ds_files,node_lc_watch,node_lc_actions,node_scheduler,node_schedule_messages,node_stored_commands,node_housekeeping,node_telemetry_output,node_file_management,node_communications toneMint
class node_software_suite,node_ground_station,node_simulation,node_hardware_models,node_onair_headers toneRose
class node_operator,node_shell toneIndigo
```

## Components

### Operator interface

- [Igniter GUI](https://github.com/nasa/nos3/blob/main/cfg/gui/cfg_gui_main.py): `cfg/gui/cfg_gui_main.py`
- [GUI layout](https://github.com/nasa/nos3/blob/main/cfg/gui/cfg_gui_ui.py): `cfg/gui/cfg_gui_ui.py`

### Mission configuration

- [Mission settings](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cfe_mission_cfg.h): `cfg/nos3_defs/cfe_mission_cfg.h`
- [Platform settings](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cpu1_platform_cfg.h): `cfg/nos3_defs/cpu1_platform_cfg.h`
- [Message IDs](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cpu1_msgids.h): `cfg/nos3_defs/cpu1_msgids.h`
- [Device settings](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cpu1_device_cfg.h): `cfg/nos3_defs/cpu1_device_cfg.h`
- [Performance IDs](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/cfe_perfids.h): `cfg/nos3_defs/cfe_perfids.h`

### Onboard tables

- [Data filters](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/ds_filter_tbl.c): `cfg/nos3_defs/tables/ds_filter_tbl.c`
- [Data indices](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/ds_indices.h): `cfg/nos3_defs/tables/ds_indices.h`
- [Data file table](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/ds_file_tbl.c): `cfg/nos3_defs/tables/ds_file_tbl.c`
- [Limit watchpoints](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/lc_def_wdt.c): `cfg/nos3_defs/tables/lc_def_wdt.c`
- [Limit actions](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/lc_def_adt.c): `cfg/nos3_defs/tables/lc_def_adt.c`
- [Schedule table](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/sch_def_schtbl.c): `cfg/nos3_defs/tables/sch_def_schtbl.c`
- [Scheduled messages](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/sch_def_msgtbl.c): `cfg/nos3_defs/tables/sch_def_msgtbl.c`
- [Stored commands](https://github.com/nasa/nos3/tree/main/cfg/nos3_defs/tables): `cfg/nos3_defs/tables`
- [Housekeeping table](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/hk_cpy_tbl.c): `cfg/nos3_defs/tables/hk_cpy_tbl.c`
- [Telemetry subscription](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/to_lab_sub.c): `cfg/nos3_defs/tables/to_lab_sub.c`
- [Free-space table](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/fm_freespace.c): `cfg/nos3_defs/tables/fm_freespace.c`
- [CF configuration](https://github.com/nasa/nos3/blob/main/cfg/nos3_defs/tables/cf_def_config.c): `cfg/nos3_defs/tables/cf_def_config.c`

### NOS3 capabilities

- [Development environment](https://github.com/nasa/nos3/tree/main/fsw/fprime): `fsw/fprime`
- [Ground station](https://github.com/nasa/nos3/tree/main/cfg/gui): `cfg/gui`
- [Dynamics simulation](https://github.com/nasa/nos3/tree/main/sims): `sims`
- [Hardware models](https://github.com/nasa/nos3/tree/main/components): `components`
- [Telemetry headers](https://github.com/nasa/nos3/blob/main/components/onair/message_headers.py): `components/onair/message_headers.py`

### Other components

- **Operator**
- **Shell terminal**

## Connections

- Operator → Igniter GUI: operates
- Igniter GUI → GUI layout: sets up (evidence: `cfg/gui/cfg_gui_main.py`)
- Igniter GUI → Shell terminal: launches commands (evidence: `cfg/gui/cfg_gui_main.py`)
- Data filters → Data indices: uses identifiers (evidence: `cfg/nos3_defs/tables/ds_filter_tbl.c`)
- Development environment → Ground station: provides suite capability
- Development environment → Dynamics simulation: provides suite capability
- Development environment → Hardware models: provides suite capability
- Ground station → Operator: serves operators
- Dynamics simulation → Hardware models: models spacecraft hardware
- Telemetry headers → Ground station: supports telemetry decoding
