# Install the toolchain

> The host, compilers and package managers RosieOS needs, which component needs which tool, and how to clone the repository.

URL: https://advancedmetalresearch.com/docs/get-started/installation
Section: RosieOS docs / Get started
Last updated: 2026-10-10

RosieOS is a monorepo of C++, Go, TypeScript and Python components. There is no single installer: you install a small set of standard tools, then each component builds with its own `make`, `go`, `npm` or `pixi` command.

For a simulated cell you need the tools marked **Simulation**. The rest depends on what you are working on.

## Host

Use **Linux x86-64**. Continuous integration (CI) runs on Ubuntu 22.04, which is the reference. **WSL2** on Windows works too.

- The dev stack reads `/proc` and uses `setsid`, so it runs on Linux only.
- The OLP launcher builds its server for `linux/amd64`.
- The Tesseract environment needs glibc 2.35 or later.
- In WSL, keep the working sockets on a Linux filesystem. Unix sockets cannot bind under `/mnt/c`. The dev stack uses `$XDG_RUNTIME_DIR` or `$TMPDIR`, so point `TMPDIR` somewhere like `/dev/shm/rosie` if yours is on the Windows drive.

A real cell host also needs a PREEMPT_RT kernel and the IgH EtherCAT master. That is covered in [Install rt-core on a cell host](https://advancedmetalresearch.com/docs/guides/install-on-a-cell-host), not here.

## Tools

| Tool | Version | Needed for | Used by |
|---|---|---|---|
| C++17 compiler, `make`, `pkg-config`, pthread | GCC from Ubuntu 22.04 `build-essential` | **Simulation** | rt-core, both motion servers, pendants |
| Go | 1.26.2 (`go.mod` declares `go 1.24` with `toolchain go1.26.2`) | **Simulation** | `rt-control`, `rtctl`, the SDK, OLP server, virtual pendant bridge |
| Python 3 and `curl` | Any current | **Simulation** | `dev-stack.sh` and `local-rt-core.sh` helpers |
| Node.js and npm | 22 (CI pins 22.13.1) | **Simulation** (OLP app) | OLP UI, virtual pendant UI, TypeScript checks |
| [pixi](https://pixi.sh) | Current; each project pins its own lock file | **Simulation** (OLP app) | `tesseract/v1` (required by OLP), `weld_planner/v1`, `cadquery/v1` |
| NVIDIA driver and CUDA 12 or later | — | Weld planning only | `weld_planner/v1` `motion` environment |
| `nats-server` | 2.14 or later | Optional | dev-stack `nats` service |
| Qt 5 (Widgets, Gui, Xml, Network, Qml) and Assimp, found through `pkg-config` | — | Pendant v5 only | `steamdeck/real/v5` |
| IgH EtherCAT master | 1.6.9 by default | Real hardware only | `make live` in rt-core |

On Ubuntu 22.04, this covers the native build dependencies CI installs:

```bash
sudo apt-get update
sudo apt-get install -y build-essential pkg-config python3 curl git git-lfs
```

Install Go 1.26.2, Node 22 and pixi from their upstream installers, and put them on your `PATH`. `dev-stack.sh` puts `~/.rosie/bin`, `~/.rosie/go-1.26.2/bin` and `~/.rosie/node-22.13.1/bin` in front of your `PATH`. You don't need those directories. If they don't exist, it uses whatever your `PATH` already finds.

> [!NOTE] Some READMEs in the repository show commands such as `./rosie.sh …`, `.\rosie.ps1 …` or `rosie … v1 …`. Those belong to an internal tool that is not part of RosieOS, so they will not work from a clone. Use the `make`, `go`, `npm`, `pixi` and `dev-stack.sh` commands in these docs instead. The operator CLI in this repository is [`rtctl`](/docs/reference/rtctl).

## Clone

Install Git LFS before you clone. Sample STEP parts and some mesh sources are stored in LFS.

```bash
git lfs install
git clone https://github.com/advanced-metal-research/RosieOS.git
cd RosieOS
```

If you cloned without LFS, run `git lfs pull` in the checkout.

## Check the install

Build the real-time core and its tools. This needs only the compiler and Go:

```bash
make -C rt-core control sim
ls rt-core/build
```

You should see `rt-control`, `rtctl`, `benchdrive`, `rt-natspublisher` and `rosie-rt-core-sim`.

For the OLP app, install the Tesseract environment and the UI packages once:

```bash
(cd tesseract/v1 && pixi install --locked)
(cd offline-programming/v1/ui && npm ci)
```

To plan welds, install the weld planner's environments. The `default` environment (seam detection) runs on the CPU. The `motion` environment needs an NVIDIA GPU with CUDA 12 or later:

```bash
cd weld_planner/v1
pixi install -e default
pixi install -e motion
```

## Which component needs what

| Component | Directory | Build | Needs |
|---|---|---|---|
| Real-time core and control API | `rt-core` | `make control sim` (simulation), `make live` (hardware) | C++17, Go; IgH for `live` |
| Cartesian motion server | `motion-server/v1` | `make all` | C++17, a built `rt-core` |
| Dense trajectory daemon | `motion-server/joint-trajectory/v1` | `make all` | C++17 |
| Offline programming server | `offline-programming/v1` | `start-offline-programming.sh` builds it | Go, Tesseract env |
| Offline programming UI | `offline-programming/v1/ui` | `npm ci`, then `npm run dev` | Node 22 |
| Weld planner | `weld_planner/v1` | `pixi install -e default` / `-e motion` | pixi; CUDA for `motion` |
| Virtual pendant | `steamdeck/virtual` | `go build ./cmd/local`; `v1/ui`: `npm ci` | Go, Node 22 |
| Pendant v5 | `steamdeck/real/v5` | `make all` | Qt 5, Assimp, Node |

## Next

Start the simulated cell in the [Quickstart](https://advancedmetalresearch.com/docs/get-started/quickstart).

## Sources

Written from these files in the RosieOS repository (https://github.com/advanced-metal-research/RosieOS):

- `rt-core/go.mod:1-13`
- `rt-core/Makefile:31-50,295-301`
- `.github/workflows/rt-core.yml:17-40`
- `.github/workflows/rt-core-consumers.yml:17-113`
- `dev-stack.sh:23-27,350-395`
- `motion-server/v1/local-rt-core.sh:6-12`
- `offline-programming/v1/start-offline-programming.sh:285-340`
- `offline-programming/v1/ui/package.json:6-26`
- `tesseract/v1/pixi.toml:1-25`
- `weld_planner/v1/pixi.toml:1-6,60-77,202-206`
- `weld_planner/.gitattributes:1-5`
- `steamdeck/virtual/v1/ui/package.json:6-14`
- `steamdeck/real/v5/Makefile:10-19`
- `dev-stack.sh:384`
