---
# System prepended metadata

title: Build VM Strategy Design

---

# Build VM Strategy Design

## Overview

```mermaid
sequenceDiagram
    actor User
    participant Host
    participant SharedVolumes
    participant DockerContainer
    User->>+Host: polywrap build --strategy=vm
    Host->>SharedVolumes: Copy polywrap manifests
    Host->>SharedVolumes: Copy linked packages
    Host->>SharedVolumes: Copy and overwrite additional includes
    Host->>SharedVolumes: Copy and overwrite sources
    Host->>Host: Generate build script
    Host->>DockerContainer: Pull base image, instantiate container and mount shared volumes
    DockerContainer->>DockerContainer: Execute build script
    DockerContainer->>SharedVolumes: Write build outputs
    SharedVolumes->>Host: Copy build outputs
```

## Notable implementation details

- Shared volumes directories are not automatically deleted, they're preserved in `.polywrap` cache directory
- Only what's inside the build scripts get executed inside of the Docker Container
- The Docker container is automatically destroyed after build script execution
- Build script gets saved in `.polywrap` for auditing/debugging purposes
- Shared volumes start as cache directories inside `.polywrap` directory, things get copied over and at the moment of container instantiation, they're mounted as volumes

