> For the complete documentation index, see [llms.txt](https://docs.diracinc.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.diracinc.com/how-to-be-successful-in-buildos/concepts/phantoms-and-subassemblies.md).

# Phantoms and Subassemblies

This will cover phantoms and subassemblies, and how BuildOS creates a complete set of work instructions from a single upload.

When you upload a CAD model, BuildOS keeps the parent groupings from your file so your project reflects the way your product is actually built. Every one of those parents is either a **phantom** or a **subassembly**.

The difference is where the parent gets built:

* A **phantom** is built inside the instruction that contains it
* A **subassembly** gets a work instruction of its own

{% hint style="info" %}
Subassembly instructions are being rolled out to teams gradually. If you do not see these options in your project, reach out to Dirac and we can enable them for your team.
{% endhint %}

***

## Phantoms

A phantom is a group of parts which is assembled together before being installed into its parent. When you upload your model, BuildOS marks every parent in your hierarchy as a phantom.

Phantoms are built as part of the instruction they sit in. BuildOS shows the steps for building the phantom first, and then shows the completed phantom being installed into the assembly around it.

Use phantoms for any group of parts you would put together before bringing it to the main assembly, but which does not need its own instruction.

***

## Subassemblies

A subassembly is a phantom which has been given its own work instruction. Converting a phantom to a subassembly breaks it out of its parent, so it can be built, reviewed, and approved on its own.

<figure><img src="https://2740836029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuT4VlrqtSgrz4OSV9Xp4%2Fuploads%2Fgit-blob-b2b1c89e08e89755919c2813691a02aa1ebfaaa7%2Fconvert-to-subassembly.png?alt=media" alt="Convert to menu with Subassembly selected"><figcaption><p>Converting a phantom to a subassembly</p></figcaption></figure>

To convert a phantom, right click it in the tree and select **Convert to** -> **Subassembly**.

Because a subassembly is its own instruction, it carries its own owner, status, and revision history. Your top level instruction shows the subassembly being installed as a completed unit, rather than showing every step used to build it.

Choose subassemblies for the parts of your product which are built separately, tracked separately, or handed to someone else to document.

***

## Dividing work across your team

Splitting your project into subassemblies lets more than one person work on it at the same time.

<figure><img src="https://2740836029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuT4VlrqtSgrz4OSV9Xp4%2Fuploads%2Fgit-blob-5cc9a1bfae51180a19acb3414ab55663d8f6a6b6%2Fmodular-subassemblies.png?alt=media" alt="A single uploaded assembly split into subassemblies, each with its own instructions and owner"><figcaption><p>One upload, split into separate instructions</p></figcaption></figure>

Once a phantom is converted, its instruction can be reassigned to another member of your team. Each engineer works within their own subassembly, and you end up with a complete set of instructions from a single upload rather than uploading a separate CAD file for every instruction you need.

***

## Detecting existing subassemblies

If your team has already documented a component, you do not need to document it again.

When you create a new instruction, BuildOS recognizes whether an instruction already exists for that component and links to it instead of creating a duplicate.

You can also check your whole project at once using the **Detect Subassemblies** button at the top of the tree panel. BuildOS lists the components in your assembly which match existing instructions, and you choose which ones to link.

<figure><img src="https://2740836029-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuT4VlrqtSgrz4OSV9Xp4%2Fuploads%2Fgit-blob-cea7307487e2017755a59624292bfcf5657b3a3e%2Fdetect-subassemblies.png?alt=media" alt="Detect Subassemblies button at the top of the tree panel"><figcaption><p>Detect Subassemblies</p></figcaption></figure>

***

## Moving between instructions

Subassemblies are edited in their own instruction rather than from inside their parent, so BuildOS gives you a few ways to move around your hierarchy:

* To open a subassembly's instruction, right click it in the tree and select **Go to Subassembly**
* To bring a subassembly back into its parent instruction, right click it and select **Unlock to Phantom**

Unlocking returns the component to a phantom, so its steps are shown inside the parent instruction again.

{% hint style="info" %}
A subassembly's contents are locked while it has its own instruction. If you need to move parts in or out of it, unlock it to a phantom first, or make the change from within the subassembly's own instruction.
{% endhint %}
