container image orchestrator using superfly/fsm for durable state management. fetches OCI images from s3, unpacks them into devicemapper thin volumes, and creates read-write snapshots.
FetchListAndBlobs → PrepareThinBase → UnpackIntoBase → ActivateSnapshot → WriteResult → done
every step is persisted to boltdb, so if it crashes mid-way it picks up where it left off.
go build -o fsm .
# needs root for devicemapper
sudo ./fsm # default: golang
sudo ./fsm --node
sudo ./fsm --pythonrunning the same family twice reuses existing base volumes and skips downloads.
sudo ./cleanup.shremoves all dm devices, mounts, loop devices, backing files, and databases.
- go 1.25+
- linux with devicemapper support
- root access
dmsetup,losetup,fallocate,mkfs.ext4