···1212 handle: ptr.pet
1313---
14141515-Our CI service now supports a new engine: `microvm`. If you're new here, our CI
1616-runners -- [spindles](/ci) -- support a pluggable interface for workflow
1717-execution. Until now, our flagship instance at spindle.tangled.sh only
1818-supported a [Nixery-based
1919-engine](https://docs.tangled.org/spindles#nixery-engine).
1515+Spindles are the self-hostable CI runners. It now supports a
1616+new mode of execution using QEMU MicroVMs. With the new
1717+microVM engine, each workflow gets its own little virtual
1818+machine, a whole real environment you can do anything
1919+inside.
20202121-Now, with the new microVM engine, each workflow gets its own little virtual
2222-machine, a whole real environment you can do anything inside. It's an upgrade
2323-from the Nixery engine while staying fully compatible with it, so if you
2424-already have a working Nixery workflow, just change `nixery` to `microvm` and
2525-it will work!
2626-2727-The interesting part is NixOS images: you configure the machine directly from
2828-the workflow file. A few things you can do:
2121+The interesting part is NixOS images: you configure the
2222+machine directly from the workflow file. A few things you
2323+can do:
29243025You can bring services up:
3126···4944 command: docker build ...
5045```
51465252-And you can use non-NixOS images too:
4747+And you can use non-NixOS images:
53485449```yaml
5550image: alpine
···5752 - name: install golang
5853 command: apk add go
5954```
5555+5656+It's an upgrade from the existing Nixery engine while
5757+staying fully compatible with it, so if you already have a
5858+working Nixery workflow, just change `nixery` to `microvm`
5959+and it will work!
60606161It's quick on the second run, too, because it caches aggressively: your
6262dependencies, your services, and any other Nix derivation built inside the