What it's for
Moving a workload from AWS to OCI usually means rebuilding the image and re-pointing everything at a new address. This tool removes the first half: it takes your existing AWS AMI and produces a bootable OCI custom image, ready to launch.
Pair it with the Cloud Spectra proxy and the OCI instance wears its AWS VPC identity — so during and after the cutover the workload answers at the same AWS address it always did. You move the compute to OCI's cheaper tier underneath a front door that never changed, and roll back by re-pointing to AWS if you need to.
Built to be fast, safe and self-contained
⚡ Fast & sparse
Reads the AMI's root snapshot directly via the EBS direct APIs — allocated blocks only, no slow export-image queue. Tens of minutes, not hours, and parallelizable.
🔄 Idempotent
Each import is fingerprinted from the source AMI + snapshot. A re-run after a hiccup reuses the already-imported image and transfers nothing — safe to run again.
👁 Safe by default
With no flags it only plans (a dry run): source, virtual vs. allocated size, and the image it would create. Migrating requires --force. Refuses marketplace/product-coded AMIs.
🧩 Independent
One self-contained binary — no qemu-img, no AWS or OCI CLI, no dependencies. It writes a sparse QCOW2 in pure Go and drives the AWS + OCI SDKs directly.
Download
A single gzip-compressed binary. It runs on your workstation with your own AWS + OCI credentials.
Cloud Spectra software is served from a licence-gated store, so there is no direct download link. You fetch it with cloudspectra-get, a small public downloader that exchanges your licence key for a short-lived token and then pulls the artifact.
1 — Get the downloader (public, no licence needed):
curl -fsSLO https://downloads.cloudspectra.ai/gateway/downloader/cloudspectra_gateway_downloader-linux-amd64 chmod +x cloudspectra_gateway_downloader-linux-amd64
2 — Use your licence key to fetch the importer:
# your CSTW1... licence key, the same one the gateway uses export CS_ARTIFACT_CREDENTIAL=CSTW1-your-licence-key ./cloudspectra_gateway_downloader-linux-amd64 \ -url https://dl.cloudspectra.ai/gateway/cloud-image-import/latest/cloudspectra_cloud_image_import-linux-amd64.gz \ -out cloudspectra_cloud_image_import.gz gunzip cloudspectra_cloud_image_import.gz chmod +x cloudspectra_cloud_image_import
Swap the filename for your platform — the same six builds are published:
cloudspectra_cloud_image_import-linux-amd64.gzcloudspectra_cloud_image_import-linux-arm64.gzcloudspectra_cloud_image_import-macos-amd64.gzcloudspectra_cloud_image_import-macos-arm64.gzcloudspectra_cloud_image_import-windows-amd64.exe.gzcloudspectra_cloud_image_import-windows-arm64.exe.gzUsage
It uses the standard AWS credential chain (add --profile <name>) for the source and your OCI config (~/.oci/config) for the target. You need ebs:ListSnapshotBlocks + ebs:GetSnapshotBlock on the AWS side and object-storage + compute-image permissions on the OCI side.
1 Preview (safe, this is the default)
Plan the migration — source, allocated vs. virtual size, and the image it would create. Nothing is transferred.
./cloudspectra_cloud_image_import ami-0abc123 --region us-east-1 \ --compartment ocid1.compartment.oc1..aaaa --bucket image-staging
2 Migrate
Read the snapshot, write a sparse QCOW2, upload it to OCI object storage, and import a custom image. Add --yes to skip the prompt.
./cloudspectra_cloud_image_import ami-0abc123 --region us-east-1 \ --compartment ocid1.compartment.oc1..aaaa --bucket image-staging --force