> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/aerial/aodt/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/aerial/aodt/_mcp/server.

# Runtime Workflow

The runtime workflow uses prebuilt Docker images and precompiled binaries for the worker and client. Both the worker and client must be running; the viewer is optional.

The [Quickstart](/quickstart) section provides end-to-end examples that follow this workflow.

## Workflow overview

| Step | Action                             | Example script                                                                     |
| ---- | ---------------------------------- | ---------------------------------------------------------------------------------- |
| 1    | Generate a scene map               | `examples/example_prepare_map.py`                                                  |
| 2    | Start the worker                   | `./worker/up.sh`                                                                   |
| 3    | Create or modify a simulation YAML | `examples/example_client_yaml_config.py`, `examples/example_import_yaml_config.py` |
| 4    | Run the simulation                 | `examples/example_full_sim.py`, `examples/example_multi_timesteps.py`              |
| 5    | Read results from the database     | See [Database exploration](#database-exploration) below                            |

Calibration runs independently of this workflow. See [Calibration](/calibration) for details.

## 1. Create a map (GIS pipeline)

Use the GIS pipeline to generate a USD map from OpenStreetMap or CityGML source data:

```bash
python examples/example_prepare_map.py --s3_endpoint <s3_endpoint>
```

See the [GIS Pipeline](/scene-building) guide for full instructions.

## 2. Start the worker

From the package root on the worker host:

```bash
cd aodt_1.5.0
./worker/up.sh
```

This starts the Digital Twin worker along with the Iceberg catalog, S3 bucket (MinIO), and supporting infrastructure.

## 3. Create a configuration file

Use the configuration builder APIs to author or modify simulation YAML files:

| Script                                   | Purpose                               |
| ---------------------------------------- | ------------------------------------- |
| `examples/example_client_yaml_config.py` | Create a new YAML file from scratch   |
| `examples/example_import_yaml_config.py` | Load and modify an existing YAML file |

See the [Config Builder API](/api/config) for parameter details.

## 4. Run the simulation

The simulation management API supports starting, stopping, pausing, resuming, and querying simulation status.

| Script                                | Mode                     |
| ------------------------------------- | ------------------------ |
| `examples/example_full_sim.py`        | Batched mode (EM or RAN) |
| `examples/example_multi_timesteps.py` | Interactive EM mode      |

## Database exploration

After a simulation completes, use these scripts to inspect and extract results:

| Script                              | Purpose                                  |
| ----------------------------------- | ---------------------------------------- |
| `examples/example_query_tables.py`  | Query database tables                    |
| `examples/example_drop_database.py` | Drop a database                          |
| `examples/extract_CFR_sample.py`    | Extract a CFR sample                     |
| `examples/extract_CIR_sample.py`    | Extract a CIR sample                     |
| `examples/plot_PDP_from_CIR.py`     | Plot a power delay profile from CIR data |
| `examples/ran_metric.py`            | Read RAN telemetry metrics               |

## Next steps

* [EM Simulations](/em-simulations) — step-by-step batched EM quickstart
* [RAN Simulations](/ran-simulations) — step-by-step batched RAN quickstart
* [Development Workflow](/dev-workflow) — modify source and rebuild when prebuilt binaries are not sufficient